ในยุคที่เทคโนโลยีมีความก้าวหน้าอย่างรวดเร็ว การประมวลผลแบบขนาน หรือ Parallel Processing ได้กลายมาเป็นหัวใจสำคัญที่ขับเคลื่อนประสิทธิภาพการทำงานในคอมพิวเตอร์ และอุปกรณ์อิเล็กทรอนิกส์ การประมวลผลแบบขนานถูกนำมาใช้งานแพร่หลาย ไม่ว่าจะเป็นบนซูเปอร์คอมพิวเตอร์ที่ใช้ในการวิจัยทางวิทยาศาสตร์ ไปจนถึงการคำนวณ และการจำลองที่ซับซ้อน ซึ่งช่วยผลักดันเทคโนโลยีของโลกเราไปอย่างมาก
และในบทความนี้จะพาทุกคนไปทำความรู้จักกับการประมวลผลแบบขนานทั้งในส่วนของ ความหมาย, หลักการทำงาน, ประวัติความเป็นมา, ประเภท รวมไปถึงตัวอย่างการนำเอาไปใช้งานอีกด้วย
Parallel Processing หรือ การประมวลผลแบบขนาน เป็นวิธีการประมวลผลในคอมพิวเตอร์ที่นำเอา หน่วยประมวลผลกลาง (CPU) หรือโปรเซสเซอร์ ตั้งแต่ 2 ตัวขึ้นไปมาใช้งาน เพื่อจัดการส่วนต่าง ๆ ของงานทั้งหมด โดยแบ่งงานออกเป็นส่วนย่อย ๆ ซึ่งโปรเซสเซอร์หลายตัวจะช่วยลดเวลาในการรันโปรแกรมระบบใด ๆ ที่มีโปรเซสเซอร์มากกว่าหนึ่งตัว ก็จะสามารถทำการประมวลผลแบบขนานได้ เช่นเดียวกับ โปรเซสเซอร์แบบมัลติคอร์ (Multi-Core) ที่พบได้ทั่วไปในคอมพิวเตอร์ยุคปัจจุบัน
ภาพจาก : https://researchgate.net/figure/Illustration-of-parallel-processing-managed-by-the-workflow-system-The-first-group-of_fig9_319187030
โปรเซสเซอร์แบบมัลติคอร์ เป็นชิปวงจรอิเล็กทรอนิกส์ที่ประกอบด้วย แกนประมวลผล (Core) 2 ตัวขึ้นไป เพื่อให้ประมวลผลได้มีประสิทธิภาพที่ดีขึ้น, ใช้พลังงานน้อยลง และประมวลผลงานหลาย ๆ งานได้พร้อม กัน ซึ่งโปรเซสเซอร์แบบมัลติคอร์ก็เหมือนกับว่ามีหน่วยประมวลผลแยกกันหลายตัว ติดตั้งอยู่ในคอมพิวเตอร์เครื่องเดียวกัน ซึ่งส่วนใหญ่จะมีตั้งแต่ 2 Core ขึ้นไปจนถึง 12 หรือมากกว่าขึ้นไปอีก
ภาพจาก : https://www.techspot.com/article/2363-multi-core-cpu/
การประมวลผลแบบขนาน มักจะใช้ในการทำงาน และการคำนวณที่ซับซ้อน นักวิทยาศาสตร์ข้อมูลมักใช้การประมวลผลแบบขนานสำหรับงานที่ต้องประมวลผลข้อมูลจำนวนมาก ๆ
โดยหลักการทำงานของการประมวลผลแบบขนานนั้น จะแบ่งงานกันระหว่างไมโครโปรเซสเซอร์ 2 ตัวขึ้นไป ทั่วไปแล้วงานที่ซับซ้อนจะถูกแบ่งออกเป็นส่วน ๆ โดยใช้ซอฟต์แวร์เฉพาะทางที่กำหนดสัดส่วนต่าง ๆ ให้กับโปรเซสเซอร์แต่ละตัว ตามองค์ประกอบของงานเช่น จำนวน, ประเภท และขนาดของหน่วยประมวลผลที่มี หลังจากนั้นโปรเซสเซอร์แต่ละตัวจะทำในส่วนของตัวเองให้เสร็จสิ้น
ภาพจาก : https://studying-engineer.com/2023/11/08/parallel-processing-a-primer-for-the-curious-mind/
โปรเซสเซอร์แต่ละตัวจะดำเนินการทำงานแบบขนานตามคำสั่ง โดยดึงข้อมูลจากหน่วยความจำของคอมพิวเตอร์ และพึ่งพาซอฟต์แวร์สำหรับสื่อสารกันระหว่างโปรเซสเซอร์ เพื่อให้สามารถซิงค์กันได้ หากโปรเซสเซอร์ทั้งหมดซิงค์กัน ก็จะทำให้ในตอนท้ายของงานนั้น ๆ ซอฟต์แวร์จะสามารถประกอบชิ้นส่วนข้อมูลทั้งหมดเข้าด้วยกันได้อย่างพร้อมเพรียง
การประมวลผลแบบขนาน สามารถเป็นที่จะเป็นแบบละเอียด (Fine-Grained) หรือหยาบ (Coarse-Grained) ก็ได้ ในการประมวลผลแบบละเอียด จะสื่อสารงานกันหลาย ๆ ครั้ง ซึ่งเหมาะสำหรับกระบวนการที่ต้องการข้อมูลแบบเรียลไทม์ กลับกันการประมวลผลแบบหยาบ จะจัดการกับชิ้นส่วนขนาดใหญ่ของงาน และสื่อสารระหว่างโปรเซสเซอร์น้อยลง ซึ่งการประมวลผลแบบนี้มีประโยชน์มากกว่าในการใช้งานที่มีการจำกัดเรื่องการสื่อสาร
ทั้งนี้ คอมพิวเตอร์ที่ไม่ได้มีโปรเซสเซอร์หลายตัว ก็สามารถใช้การประมวลผลแบบขนานได้เหมือนกันหากมีการเชื่อมเครือข่ายเข้าด้วยกันให้เป็น การประมวลผลแบบคลัสเตอร์ (Cluster Computing) นั่นเอง
ในคอมพิวเตอร์ยุคแรก ๆ นั้น จะมีเพียงโปรแกรมเดียวที่รันได้ในเวลาเดียวกัน ยกตัวอย่างการรันโปรแกรมคำนวณที่อาจใช้เวลา 1 ชั่วโมง และโปรแกรมคัดลอกเทปที่ใช้เวลาอีก 1 ชั่วโมง รวมทั้งหมดก็จะใช้เวลาถึง 2 ชั่วโมง ซึ่งการประมวลผลแบบขนานเบื้องต้นจะทำให้สามารถประมวลผลทั้ง 2 โปรแกรมไปพร้อม ๆ กัน คอมพิวเตอร์จะเริ่มการดำเนินการอินพุต/เอาต์พุต (I/O) และในขณะที่รอให้การดำเนินการเสร็จสิ้น ก็จะไปเริ่มดำเนินการโปรแกรมที่ใช้โปรเซสเซอร์มากกว่าก่อน ซึ่งทำให้เวลาในการประมวลผลโดยรวมสำหรับงานทั้ง 2 ก็จะเหลือเพียงชั่วโมงเศษ ๆ
ภาพจาก : https://www.computerhistory.org/revolution/birth-of-the-computer/4/92
การปรับปรุงครั้งถัดมา คือการประมวลผลแบบมัลติโปรแกรม (Multi-Programming) ในช่วงปลายปี ค.ศ. 1950 (พ.ศ. 2493) และช่วงต้นปี ค.ศ. 1960 (พ.ศ. 2503) ในระบบมัลติโปรแกรม โปรแกรมหลายโปรแกรมที่ส่งโดยผู้ใช้จะได้รับอนุญาตให้ใช้โปรเซสเซอร์เป็นระยะเวลาสั้น ๆ ต่อผู้ใช้แต่ละคน ปัญหาการแย่งชิงทรัพยากรจึงเกิดขึ้นครั้งแรกในระบบนี้ ซึ่งคำขอเข้าถึงทรัพยากรประมวลผลที่มาพร้อมกันจะทำให้โปรแกรมเข้าถึงทรัพยากรอย่างไม่มีประสิทธิภาพ ซึ่งเป็นปัญหาในระดับวิกฤตเลยทีเดียว
ต่อมามีการพัฒนาระบบประมวลผลแบบเวกเตอร์ (Vector Processing) ขึ้นมา เป็นอีกความพยายามหนึ่งที่เริ่มต้นในช่วงปี ค.ศ. 1964 (พ.ศ. 2507) ความสามารถที่ถูกเพิ่มเข้าไปคือให้คำสั่งเดียวสามารถบวก, ลบ, คูณ หรือจัดการ Array ตัวเลขขนาด 2 ตัวได้ ซึ่งมีประโยชน์อย่างมากในการใช้งานด้านวิศวกรรม ที่ข้อมูลเกิดขึ้นตามธรรมชาติในรูปแบบของเวกเตอร์ (Vector) หรือเมทริกซ์ (Matrices) แต่ในการใช้งานที่มีข้อมูลที่ไม่เป็นรูปเป็นร่างมากนัก การประมวลผลแบบเวกเตอร์จะไม่ค่อยตอบโจทย์เท่าไหร่
ภาพจาก : https://www.ausairpower.net/OSR-0600.html
ลำดับต่อมา ในการประมวลผลแบบขนานคือการนำเอาการประมวลผลแบบมัลติโปรเซสซิ่ง (Multiprocessing) มาใช้งาน เริ่มต้นในช่วงปี ค.ศ. 1970 (พ.ศ. 2513) ในเวอร์ชันแรกมีการกำหนดโปรเซสเซอร์หลัก และรอง โปรเซสเซอร์หลักได้รับการตั้งโปรแกรมให้รับผิดชอบงานทั้งหมดในระบบ โปรเซสเซอร์รองทำเฉพาะงานที่โปรเซสเซอร์หลักมอบหมายให้ การประมวลผลแบบขนานยังคงพัฒนาต่อไป
ในช่วงต้นปี ค.ศ. 2000 (พ.ศ.2543) ก็ได้เห็นการเพิ่มขึ้นของการใช้ หน่วยประมวลผลกราฟิก (GPU) ซึ่งประกอบด้วยหน่วยประมวลผลขนาดเล็กจำนวนมากที่เรียกว่า คอร์ (Core) คอร์แต่ละตัวสามารถดำเนินการคำสั่งของตนเองโดยไม่ขึ้นกับคอร์อื่น ๆ และเปิดใช้งานการประมวลผลแบบขนาน ต่อมา GPU ก็ถูกนำมาใช้มากขึ้นเรื่อย ๆ สำหรับงานประมวลผลทั่วไปนอกเหนือจากกราฟิก
นับตั้งแต่นั้นมา มีการพัฒนาอุปกรณ์เร่งความเร็วเฉพาะทาง เช่น Field-Programmable Gate Arraysและวงจรเฉพาะ (Application-specific integrated circuits) ที่ทำมาเพื่อเร่งการประมวลผลสำหรับงานประมวลผลแบบขนาน และล่าสุดองค์กรต่าง ๆ ได้เริ่มนำคอมพิวเตอร์ควอนตัม มาใช้ซึ่งมุ่งเน้นไปที่การสร้างโปรเซสเซอร์ควอนตัมแบบขนาน ที่ทำการคำนวณโดยใช้ควิบิต (Qubits)
ภาพจาก : https://www.techspot.com/article/2363-multi-core-cpu/
ประเภทของการประมวลผลแบบขนานมีหลากหลาย สามารถแบ่งได้ดังนี้
คอมพิวเตอร์มีโปรเซสเซอร์ตั้งแต่ 2 ตัวขึ้นไปที่ทำตามชุดคำสั่งเดียวกัน ขณะที่โปรเซสเซอร์แต่ละตัวจัดการข้อมูลที่แตกต่างกัน SIMD มักจะถูกใช้ในการวิเคราะห์ชุดข้อมูลขนาดใหญ่ แต่ทำงานในคำสั่งเพียงคำสั่งเดียว
ภาพจาก : https://www.sciencedirect.com/topics/computer-science/single-instruction-multiple-data
เป็นประเภทของการประมวลผลแบบขนานที่ใช้กันทั่วไป คอมพิวเตอร์แต่ละเครื่องมีโปรเซสเซอร์เป็นของตนเองตั้งแต่ 2 ตัวขึ้นไป รับข้อมูล และคำสั่งจากสตรีมข้อมูลที่แยกออกจากกัน
ภาพจาก : https://www.sciencedirect.com/topics/computer-science/memory-multiple
โปรเซสเซอร์แต่ละตัวจะใช้คำสั่งที่แตกต่างกัน แต่ใช้ข้อมูลอินพุตเดียวกัน ประเภทของการประมวลผลนี้ไม่ค่อยได้รับความนิยมในการใช้งานมากเท่าไรในปัจจุบัน
ภาพจาก : https://www.sciencedirect.com/topics/computer-science/single-instruction-multiple-data
โปรเซสเซอร์หลาย ๆ ตัวดำเนินการงานเดียวกัน แต่รับชุดข้อมูลที่แตกต่างกัน ประเภทของการประมวลผลนี้มักใช้สำหรับการจำลอง (Simulation), การประมวลผลข้อมูล หรือการทำอัลกอริทึมแบบขนาน
ภาพจาก : https://oneapi-src.github.io/oneDAL/onedal/spmd/index.html
MPP ใช้โปรเซสเซอร์จำนวนมากเพื่อดำเนินการประสานงานแบบขนาน ระบบนี้ใช้โปรเซสเซอร์สูงสุดถึงหลายร้อย หรือหลายพันตัว ทำงานส่วนหนึ่งของงานโดยรวมอย่างอิสระจากกัน ประเภทของการประมวลผลนี้ใช้เพื่อแก้ปัญหาขนาดใหญ่ และซับซ้อนที่ไม่สามารถทำได้ด้วยโปรเซสเซอร์จำนวนน้อยนั่นเอง
ภาพจาก : https://www.linkedin.com/pulse/what-massively-parallel-processing-mpp-sankha-mitra
การประมวลผลแบบขนาน (Parallel Processing) สามารถทำงานหลายอย่างพร้อมกันโดยใช้โปรเซสเซอร์ตั้งแต่ 2 ตัวขึ้นไป ในขณะที่ การประมวลผลแบบอนุกรม (Serial Processing) หรือเรียกว่าการประมวลผลแบบลำดับ (Sequential processing) จะทำงานได้เพียงอย่างเดียวในเวลาเดียวกัน และใช้โปรเซสเซอร์เพียง 1 ตัว หากคอมพิวเตอร์ต้องการทำงานที่ได้รับมอบหมายหลายอย่าง จะทำทีละงานส่งผลให้คอมพิวเตอร์ที่ใช้การประมวลผลแบบอนุกรมจะใช้เวลานานกว่า เมื่อเทียบกับโปรเซสเซอร์แบบขนาน
ภาพจาก : https://www.xait.com/resources/blog/serial-vs-parallel-process
การประมวลผลแบบขนานถูกนำมาใช้ในหลากหลายสาขางานที่ต้องการพลังการคำนวณสูง เพื่อให้การทำงานมีประสิทธิภาพ และความแม่นยำมากขึ้น ตัวอย่างสำคัญก็ได้แก่
นักฟิสิกส์ดาราศาสตร์ใช้ซูเปอร์คอมพิวเตอร์ที่ทำงานแบบขนาน ในการจำลองปรากฏการณ์ที่ในจักรวาลที่อาจต้องใช้เวลากว่าล้านปีในการเกิดขึ้น เช่น การชนกันของดาวเคราะห์, การรวมตัวของกาแล็กซี และการดูดกลืนของหลุมดำ การจำลองเหล่านี้ช่วยให้นักวิทยาศาสตร์เข้าใจพฤติกรรมของหลุมดำ และปรากฏการณ์อื่น ๆ ที่เคยเป็นปริศนา ให้สามารถศึกษาการขยายตัวของจักรวาลได้อย่างแม่นยำ
ภาพจาก : https://today.ucsd.edu/story/supercomputer-simulations-reveal-details-of-galaxy-clusters
ซุเปอร์คอมพิวเตอร์ Blue Waters ที่มหาวิทยาลัยอิลลินอยส์ ถูกใช้เพื่อพัฒนาการทำนายผลผลิตทางการเกษตรที่แม่นยำยิ่งขึ้น ใช้ การเรียนรู้ของเครื่อง (Machine Learning) ที่ประมวลผลข้อมูลหลายประเภทพร้อมกัน เช่น การเจริญเติบโตของพืช, ข้อมูลสภาพอากาศตามฤดูกาล และข้อมูลจากดาวเทียม การประมวลผลแบบขนานนี้ช่วยให้ได้ผลลัพธ์ที่ดี
ภาพจาก : https://www.ncsa.illinois.edu/research/project-highlights/blue-waters/
ธนาคารขนาดใหญ่ต่าง ๆ เริ่มใช้การประมวลผลแบบขนานที่ผสานการทำงานของ CPU และ GPU เพื่อคำนวณความเสี่ยงทางการเงิน, ตรวจจับการทุจริต และจัดการข้อมูลจำนวนมหาศาลในศูนย์ข้อมูล การใช้ GPU ช่วยเพิ่มความแม่นยำในการคำนวณได้ถึง 40% และลดต้นทุนการประมวลผลลงไปถึง 80% นอกจากนี้ การขุด คริปโตเคอร์เรนซี เช่น Bitcoin ยังต้องพึ่งพาการประมวลผลแบบขนานอย่างมากในการทำธุรกรรม และรักษาความปลอดภัยของบล็อกเชน
ภาพยนตร์ที่ใช้เอฟเฟกต์พิเศษขั้นสูง พึ่งพาการประมวลผลแบบขนานผ่าน GPU ในการเรนเดอร์ภาพ 3D การใช้เรย์เทรซิง (Ray Tracing), การสร้างแอนิเมชัน และการแก้ไขสี DaVinci Resolve Studio ที่เป็นซอฟต์แวร์มาตรฐานฮอลลีวูด ก็อาศัยการประมวลผลแบบขนานเพื่อเรนเดอร์ และประมวลผลเอฟเฟกต์ต่าง ๆ ให้มีความสมจริงสูงที่สุด
ภาพจาก : https://www.blackmagicdesign.com/products/davinciresolve/studio
การประมวลผลแบบขนานโดยเฉพาะผ่านหน่วยประมวลผลกราฟิก (GPU) มีบทบาทสำคัญในการพัฒนาการถ่ายภาพทางการแพทย์ เช่น MRI, CT, X-ray และการถ่ายภาพด้วยแสง ทำให้สามารถเพิ่มความเร็ว และความละเอียดของภาพได้อย่างมาก การพัฒนาเครื่องมือการประมวลผลแบบขนานจาก Nvidia ยังช่วยให้นักรังสีวิทยาสามารถใช้ ปัญญาประดิษฐ์ (AI) ในการวิเคราะห์ข้อมูลภาพทางการแพทย์ได้ดีมากยิ่งขึ้น
โปรเซสเซอร์ที่ใช้ในคอมพิวเตอร์สมัยใหม่ ได้รับการออกแบบให้รองรับการประมวลผลแบบขนาน โดยมีแกนประมวลผล (Core) ตั้งแต่ 4 ไปจนถึง 56 แกน หรือมากกว่านั้นในบางรุ่น ช่วยให้สามารถจัดการงานที่ซับซ้อน เช่น การจำลองสามมิติ, การจัดการเซิร์ฟเวอร์ และการตัดต่อ วิดีโอ 8K แบบเรียลไทม์ได้อย่างมีประสิทธิภาพ
ภาพจาก : https://vintageits.com/desktop-vs-laptop-vs-tablet/
การประมวลผลแบบขนานเป็นเทคโนโลยีที่มีความสำคัญกับทั้งในปัจจุบัน และอนาคต ด้วยความสามารถในการประมวลผลข้อมูลที่ซับซ้อน และมีปริมาณมาก ในเวลาอันสั้น เป็นส่วนสำคัญที่ทำให้การประมวลผลชนิดนี้ถูกนำมาพัฒนาอย่างก้าวกระโดดตั้งแต่อดีตจนถึงปัจจุบัน
การประยุกต์ใช้งานในด้านต่าง ๆ ไม่ว่าจะเป็นดาราศาสตร์, เกษตรกรรม, ธนาคาร, การแพทย์ หรือแม้แต่ในชีวิตประจำวันผ่านทางคอมพิวเตอร์ที่พวกเราใช้กันทั่วไป ล้วนแต่สะท้อนให้เห็นถึงพลังของการประมวลผลแบบขนานที่มีประสิทธิภาพ และขับเคลื่อนการพัฒนาของมนุษยชาติให้ก้าวหน้าไปอีกขั้นอย่างไม่หยุดนิ่ง
|