การประมวลผล GPU คืออะไร?
คุณเคยได้ยินเกี่ยวกับการประมวลผลหรือการเร่งความเร็วของ GPU อยู่บ่อยครั้ง แต่ไม่แน่ใจว่ามันหมายถึงอะไร นี่คือทุกสิ่งที่คุณจำเป็นต้องรู้

GPU หรือหน่วยประมวลผลกราฟิกมีอยู่ในวงจรอิเล็กทรอนิกส์ทั้งหมดที่ผลิตการแสดงผลในรูปแบบใดรูปแบบหนึ่ง โดยเฉพาะคอมพิวเตอร์
หน่วยประมวลผลกราฟิกในยุคแรกนั้นค่อนข้างเรียบง่าย แต่ด้วยการเล่นเกม แอนิเมชั่น 3 มิติ และการเรนเดอร์วิดีโอที่ผลักดันให้ CPU ก้าวข้ามขีดจำกัด GPU ที่ทรงพลังกว่าจึงต้องเข้ามาช่วยเหลือ
การ์ด GPU ใหม่เหล่านี้มีพลังและความซับซ้อนเพิ่มขึ้นตามกาลเวลา โดยบริษัทและนักวิจัยต่าง ๆ ต่างแสวงหาวิธีที่จะใช้ประโยชน์จากข้อได้เปรียบในการประมวลผลแบบขนาน โพสต์นี้จะแสดงให้คุณเห็นว่ามันเป็นอย่างไรมาจนถึงตอนนี้
GPU คืออะไร?
GPU หรือหน่วยประมวลผลกราฟิกเป็นวงจรเฉพาะที่ออกแบบมาเพื่อจัดการข้อมูลเพื่อช่วยในการสร้างภาพสำหรับการแสดงผล กล่าวอีกนัยหนึ่ง GPU คือระบบที่สร้างภาพที่คุณเห็นบนพื้นผิวการแสดงผล เช่น จอคอมพิวเตอร์ หน้าจอสมาร์ทโฟน คอนโซลเกม เป็นต้น
ในตอนแรก GPU เป็นอุปกรณ์ที่ใช้งานง่ายซึ่งรวบรวมองค์ประกอบกราฟิกเข้าด้วยกันเพื่อสร้างเอาต์พุตที่เหมาะสมที่สุดสำหรับอุปกรณ์เฉพาะ อย่างไรก็ตาม เมื่อเวลาผ่านไปและด้วยการถือกำเนิดของเกมคอมพิวเตอร์ GPU ก็เริ่มมีความซับซ้อนและมีพลังมากขึ้น จนกลายมาเป็น GPGPU หรือการประมวลผลวัตถุประสงค์ทั่วไปบน GPU.
การประมวลผล GPU คืออะไร?
การประมวลผลด้วย GPU หรือ GPGPU คือการใช้ GPU สำหรับการประมวลผลที่มากกว่าแค่กราฟิก ซึ่งหมายถึงการใช้ GPU ที่ฝังอยู่ในการ์ดแสดงผลของคอมพิวเตอร์และเดิมทีตั้งใจให้ประมวลผลกราฟิกคอมพิวเตอร์เพื่อการคำนวณข้อมูลประเภทอื่นๆ เช่น การจำลองทางวิทยาศาสตร์ การขุดสกุลเงินดิจิทัล การคำนวณพีชคณิต การพยากรณ์อากาศ เครือข่ายประสาท และอื่นๆ
เหตุผลในการวิวัฒนาการของการประมวลผล GPU นี้มาจากการพัฒนาที่น่าประทับใจของหน่วยประมวลผลกราฟิก ซึ่งมาจากสถาปัตยกรรมแบบกระจายขนานของระบบ GPU สมัยใหม่
เมื่อซีพียูของคอมพิวเตอร์มีประสิทธิภาพมากขึ้นและสามารถรองรับโปรแกรมและเกมที่ซับซ้อนมากขึ้น ผู้ผลิตการ์ดแสดงผลก็พยายามตามให้ทันการพัฒนาการประมวลผลและกราฟิก 3 มิติสมัยใหม่เช่นกัน Nvidia เปิดตัว GeForce 256 ในปี พ.ศ. 1999 โดยเป็นการ์ดแสดงผล GPU ตัวแรกของโลก และทุกอย่างก็ได้พัฒนามาจากตรงนั้น
ข้อได้เปรียบหลักของการ์ด GPU เมื่อเทียบกับ CPU คือสถาปัตยกรรมการประมวลผลแบบขนาน ซึ่งทำให้สามารถประมวลผลงานข้อมูลขนาดใหญ่ได้ในลักษณะกระจายและขนานกัน ซึ่งช่วยป้องกันปัญหาคอขวดและการหยุดทำงานของ CPU
การใช้งาน GPU ในการประมวลผลมีอะไรบ้าง?
การใช้งานการประมวลผล GPU มีมากมาย ต่อไปนี้คือการใช้งานหลักๆ บางส่วน:
- การเรียนรู้ของเครื่องจักรและเครือข่ายประสาท
- ตรรกะคลุมเครือ
- ชีวสารสนเทศ
- การสร้างแบบจำลองโมเลกุล
- การเรนเดอร์วิดีโอ
- การคำนวณเชิงเรขาคณิต
- การวิจัยสภาพภูมิอากาศและการพยากรณ์อากาศ
- ดาราศาสตร์
- การอ่านรหัส
- วิสัยทัศน์คอมพิวเตอร์
- การถอดรหัสรหัสผ่าน
- การวิจัยเชิงควอนตัม
การประมวลผล GPU เทียบกับ CPU
ทั้ง GPU และ CPU ต่างก็ประมวลผลข้อมูลดิจิทัล แต่ทำงานในรูปแบบที่แตกต่างกัน CPU หรือหน่วยประมวลผลกลางได้รับการออกแบบให้ประมวลผลแบบอนุกรมด้วยความเร็วสูง ในขณะที่ GPU ได้รับการออกแบบให้ประมวลผลแบบขนานด้วยความเร็วที่ต่ำกว่ามาก แน่นอนว่า CPU สามารถใช้ไฮเปอร์เธรดดิ้งเพื่อให้ได้ 2 เธรดต่อคอร์ หรือแม้แต่มีคอร์หลายสิบคอร์ แต่โดยพื้นฐานแล้วทั้งสองอย่างนี้เป็นโปรเซสเซอร์แบบอนุกรม
ในขณะที่ CPU อาจมีคอร์เพียงไม่กี่คอร์ แต่ GPU สมัยใหม่มาพร้อมกับคอร์หลายพันคอร์ เช่น Nvidia GeForceRTX 3090 ซึ่งมีแกนประมวลผลมากกว่า 10 แกน แต่เพื่อให้ได้เปรียบเหนือซีพียู ข้อมูลจะต้องสามารถประมวลผลแบบขนานได้ เช่น การประมวลผลสตรีมที่มีภาพหลายพันภาพในคราวเดียว
GPU เทียบกับ ASIC
ASIC ย่อมาจาก Application Specific Integrated Circuit ซึ่งหมายความว่าวงจรดังกล่าวสามารถทำงานได้เพียงงานเดียวเท่านั้น นั่นคือ งานที่วงจรได้รับการออกแบบมาให้ทำ ASIC เป็นเครื่องจักรเฉพาะที่พัฒนาขึ้นจากศูนย์และต้องอาศัยความรู้ด้านฮาร์ดแวร์จากผู้เชี่ยวชาญจึงจะสร้างขึ้นมาได้ ASIC มักใช้ในการขุดสกุลเงินดิจิทัล เนื่องจาก ASIC ให้ประโยชน์ในการประมวลผลแบบขนานที่ดีและมีประสิทธิภาพดีกว่า GPU
อย่างไรก็ตาม ความแตกต่างที่สำคัญระหว่างทั้งสองอย่างคือ GPU มีความยืดหยุ่นมากกว่า ตัวอย่างเช่น คุณสามารถสร้างแท่นขุดสกุลเงินดิจิทัลได้อย่างง่ายดายโดยใช้ GPU ชิ้นส่วนต่างๆ หาได้ง่าย และหากคุณทำการขุดเสร็จแล้ว คุณสามารถขายการ์ด GPU ให้กับนักเล่นเกมหรือคนขุดคนอื่นๆ ได้เสมอ แต่ด้วย ASIC คุณสามารถขายเครื่องที่ใช้แล้วให้กับคนขุดคนอื่นๆ ได้เท่านั้น เนื่องจากคุณแทบจะทำอะไรกับมันไม่ได้อีกแล้ว
นอกเหนือจากการขุดสกุลเงินดิจิทัลแล้ว การหาเครื่อง ASIC มาใช้ยังยากขึ้นไปอีก เนื่องจากเครื่องเหล่านี้ไม่ใช่ผลิตภัณฑ์สำหรับตลาดมวลชน ซึ่งแตกต่างอย่างมากกับระบบ GPU ที่คุณหาซื้อได้ทุกที่และกำหนดค่าได้ง่าย
GPU เทียบกับการประมวลผลแบบคลัสเตอร์
แม้ว่าการ์ด GPU เพียงการ์ดเดียวจะมีแกนประมวลผลหลายพันแกน ซึ่งจะเพิ่มพลังมหาศาลให้กับคอมพิวเตอร์เครื่องใดก็ตามที่คุณเชื่อมต่อเข้าไป แต่ในทางทฤษฎีแล้ว คุณสามารถเพิ่มการ์ด GPU ลงในเมนบอร์ดคอมพิวเตอร์ได้มากเท่าที่คอมพิวเตอร์จะรองรับได้ และยังช่วยเพิ่มความสามารถในการประมวลผลได้อีกด้วย
ในทางกลับกัน คลัสเตอร์คอมพิวเตอร์หมายถึงคอมพิวเตอร์หลายเครื่องที่เชื่อมต่อกันเป็นเครือข่ายเพื่อทำงานเป็นคอมพิวเตอร์ขนาดใหญ่เครื่องเดียว ซึ่งก็คือซูเปอร์คอมพิวเตอร์ คอมพิวเตอร์แต่ละเครื่องในเครือข่ายเรียกว่าโหนด และอาจมีซีพียูแบบมัลติคอร์ รวมถึงการ์ด GPU หนึ่งตัวหรือมากกว่านั้นบนบอร์ดก็ได้
แต่ละคลัสเตอร์ต้องมีมาสเตอร์โหนด ซึ่งเป็นคอมพิวเตอร์ส่วนหน้าที่รับผิดชอบในการจัดการและกำหนดตารางเวลาโหนดเวิร์กเกอร์ นอกจากนี้ ยังจะมีซอฟต์แวร์ที่จัดสรรข้อมูลและโปรแกรมให้กับโหนดเวิร์กเกอร์เพื่อคำนวณและส่งคืนผลลัพธ์ด้วย
การเร่งความเร็วของ GPU เทียบกับไฮเปอร์เธรดดิ้ง
CPU ถูกออกแบบมาเพื่อจัดการงานหลายๆ อย่างพร้อมกัน และนั่นคือเหตุผลว่าทำไมมันจึงทำงานด้วยความเร็วสูงมาก โดยกำหนดเวลาการประมวลผลระหว่างกระบวนการต่างๆ เหล่านั้น อย่างไรก็ตาม เมื่อ CPU พบกับฟังก์ชันที่ต้องใช้การคำนวณอย่างหนัก CPU อาจใช้เวลาสักระยะหนึ่งในวงจรก่อนที่จะกลับไปที่กระบวนการอื่นๆ ซึ่งโดยปกติแล้วจะทำให้คอมพิวเตอร์ทำงานช้าลงโดยทั่วไป และในกรณีเลวร้ายกว่านั้น ระบบอาจหยุดทำงานไปเลย
นักออกแบบคอมพิวเตอร์สามารถหลีกเลี่ยงสถานการณ์ที่เลวร้ายนี้ได้โดยใช้ไฮเปอร์เธรดดิ้งหรือการเร่งความเร็วด้วย GPU ไฮเปอร์เธรดดิ้งช่วยให้คอร์ CPU หนึ่งคอร์ทำงานเป็นเธรดประมวลผลสองเธรด ดังนั้น เมื่อเธรดหนึ่งติดอยู่ในลูปที่ต้องใช้การประมวลผลสูง เธรดอื่นจะยังคงยึดระบบไว้ด้วยกันได้
คอมพิวเตอร์สมัยใหม่มีคอร์หลายคอร์ตั้งแต่ 2 ถึง 4, 8, 16, 32 เป็นต้น นอกจากนี้ยังมีไฮเปอร์เธรดดิ้งอีกด้วย ดังนั้น CPU 2 คอร์จึงมี 4 เธรด, 4 คอร์มี 8 เธรด เป็นต้น
ไฮเปอร์เธรดดิ้งกับซีพียูแบบมัลติคอร์จะช่วยแก้ปัญหาการประมวลผลส่วนใหญ่ ป้องกันคอขวด และมอบประสิทธิภาพสูงสุดให้กับเกมง่ายๆ การผลิตเพลง และโปรเจกต์กราฟิก วิดีโอ และการเรียนรู้ของเครื่องขนาดเล็ก แต่เมื่อคุณต้องการพลังงานมากกว่านั้น GPU มักจะเป็นโซลูชันที่เหมาะสมที่สุด
การเร่งความเร็วด้วย GPU หรือฮาร์ดแวร์คือความสามารถของแอปพลิเคชันซอฟต์แวร์ในการใช้พลังประมวลผลแบบขนานของ GPU เพื่อประมวลผลข้อมูลจำนวนมากโดยไม่ทำให้ CPU ทำงานหนักเกินไป แอปพลิเคชันระดับมืออาชีพจำนวนมากต้องอาศัยการเร่งความเร็วด้วย GPU เพื่อให้ทำงานได้ดี ซึ่งรวมถึงโปรแกรมออกแบบ/เรนเดอร์วิดีโอและแอนิเมชัน โปรแกรมเข้ารหัส การเข้ารหัส เครือข่ายประสาทเทียมขนาดใหญ่ และอื่นๆ
พื้นฐานการเขียนโปรแกรม GPGPU
การเขียนโปรแกรมวัตถุประสงค์ทั่วไปของ GPU ได้ทำในตอนแรกโดยใช้ DirectX และ OpenGL ไลบรารี เหล่านี้ได้รับการออกแบบมาเพื่อการพัฒนาภาพกราฟิกโดยเฉพาะ ดังนั้นคุณจึงต้องนำข้อมูลของคุณไปปรับใช้ใหม่ในรูปแบบกราฟิกเพื่อให้ทำงานได้
โชคดีที่ GPGPU มีการพัฒนาที่สำคัญในช่วงหลายปีที่ผ่านมา ส่งผลให้เกิดไลบรารี ภาษาโปรแกรม และเฟรมเวิร์ก เฟรมเวิร์กที่ได้รับความนิยมมากที่สุดคือ CUDA จาก Nvidia
CUDA ช่วยให้นักพัฒนาซอฟต์แวร์สามารถเรียนรู้การเขียนโปรแกรม GPU ได้อย่างง่ายดายโดยไม่จำเป็นต้องรู้รายละเอียดปลีกย่อยของการเขียนโปรแกรม GPU แบบคลาสสิก CUDA มีคุณสมบัติที่ช่วยเพิ่มประสิทธิภาพการพัฒนานอกเหนือจากกราฟิก โดยหลาย ๆ หน่วยมีฟังก์ชันเฉพาะสำหรับการเรียนรู้ของเครื่องด้วย
นอกจากนี้ ไลบรารีที่พร้อมใช้งานยังช่วยให้สร้างโปรแกรมเร่งความเร็วด้วย GPU ใหม่ตั้งแต่ต้นหรือปรับโปรแกรมที่เขียนไว้ล่วงหน้าให้สามารถประมวลผลแบบขนานได้อย่างง่ายดาย คุณเลือกไลบรารีที่เหมาะสม ปรับแต่งโค้ดของคุณให้รองรับลูปแบบขนาน คอมไพล์ใหม่ เพียงเท่านี้ก็เสร็จเรียบร้อย
CUDA Cores เทียบกับโปรเซสเซอร์สตรีม
บ่อยครั้งที่คุณจะเจอเงื่อนไข แกนคูด้า และ สตรีมโปรเซสเซอร์ทั้งสองคำนี้หมายถึงแกน GPU หรือ หน่วยตรรกะเลขคณิต ของจีพียู. CUDA Core เป็นเทคโนโลยีที่เป็นกรรมสิทธิ์ของ Nvidia ในขณะที่โปรเซสเซอร์ Stream มาจาก AMD
คำศัพท์อีกคำที่คุณอาจเจอคือ Streaming Multi-Processor หรือ SM ซึ่งเป็นเทคโนโลยีของ Nvidia อีกชนิดหนึ่งที่เดิมทีจัดกลุ่ม CUDA cores ไว้ 8 คอร์ต่อ SM โดยสามารถประมวลผล 32 เธรดพร้อมกันโดยใช้ 4 รอบสัญญาณนาฬิกาต่อคำสั่ง ปัจจุบันดีไซน์ใหม่มีแกนประมวลผลมากกว่า 100 คอร์ต่อโปรเซสเซอร์สตรีมมิ่งหลายตัว
ภาษาและไลบรารี GPU ชั้นนำ
มีไลบรารีและภาษาต่างๆ มากมายที่ใช้งานได้บนแพลตฟอร์ม Nvidia CUDA และ AMD ต่อไปนี้คือตัวอย่างบางส่วน:
- Nvidia cuBLAS – โปรแกรมย่อยพีชคณิตเชิงเส้นพื้นฐานสำหรับ CUDA
- ดีเอ็นเอ็น – ห้องสมุดเครือข่ายประสาทเทียมเชิงลึก
- OpenCL – มาตรฐานเปิดสำหรับการเขียนโปรแกรมแบบขนาน
- Openmp – สำหรับ GPU AMD
- สะโพก – ไลบรารี่ C++
- Nvidia คอยน์ – การสร้างตัวเลขสุ่ม
- cuFFT – สำหรับการแปลงฟูเรียร์แบบเร็ว
- เอ็นวิเดีย เอ็นพีพี – การประมวลผลภาพและสัญญาณ 2 มิติ
- จีพียู VSIPL – การประมวลผลภาพเวกเตอร์และสัญญาณ
- OpenCV – ไลบรารี GPU สำหรับการมองเห็นคอมพิวเตอร์
- OpenACC – ภาษาเพื่อการพัฒนาคู่ขนาน
- ใน PyCU – Python สำหรับแพลตฟอร์ม CUDA
- เทนเซอร์RT – การเรียนรู้เชิงลึกสำหรับ CUDA
- คูด้า C++ – ภาษา C++ สำหรับ CUDA
- คูด้า ซี – ภาษา C สำหรับ CUDA
- CUDA ฟอร์แทรน – CUDA สำหรับนักพัฒนา FORTRAN
โครงการคลัสเตอร์ GPU ชั้นนำ
ณ เดือนมิถุนายน 2022 ซูเปอร์คอมพิวเตอร์ที่เร็วที่สุด 8 ใน 10 อันดับแรกของโลกได้รับการเร่งความเร็วด้วย GPU โดยทั้งหมดใช้ระบบปฏิบัติการ Linux ร่วมกัน และมีดังต่อไปนี้:
| อันดับ | ชื่อ | เพทาฟลอปส์ | แกน CPU | GPU Cores | กำลังไฟ (kW) | ปี |
| 1. | ชายแดน | 1,102 | 591,872 | 8,138,240 | 21,100 | 2022 |
| 2. | ลูมิ | 151.90 | 75,264 | 1,034,880 | 2,900 | 2022 |
| 3. | ประชุมสุดยอด | 148.6 | 202,752 | 2,211,840 | 10,096 | 2018 |
| 4. | ทิวเขา | 94.64 | 190,080 | 1,382,400 | 7,438 | 2018 |
| 5. | เพิร์ลมุตเตอร์ | 64.59 | N / A | N / A | 2,589 | 2021 |
| 6. | Selene | 63.46 | 71,680 | 483,840 | 2,646 | 2020 |
| 7. | เทียนเหอ -2 | 61.445 | 427,008 | 4,554,752 | 18,482 | 2013 |
| 8. | Adastra | 46.1 | 21,632 | 297,440 | 921 | 2022 |
สรุป
เมื่อถึงจุดสิ้นสุดของการเรียนรู้เกี่ยวกับการประมวลผล GPU และทุกสิ่งทุกอย่างที่เกี่ยวข้อง คุณน่าจะพอเข้าใจถึงพลังและขอบเขตของมันได้แล้ว
หากต้องการข้อมูลเพิ่มเติม คุณสามารถตรวจสอบแพลตฟอร์มนักพัฒนาของ Nvidia ที่นี่ หรือว่าของ เอเอ็มดีอยู่ที่นี่.




