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

GPU หรือหน่วยประมวลผลกราฟิกมีอยู่ในวงจรอิเล็กทรอนิกส์ทั้งหมดที่ผลิตการแสดงผลในรูปแบบใดรูปแบบหนึ่ง โดยเฉพาะคอมพิวเตอร์
หน่วยประมวลผลกราฟิกในยุคแรกนั้นค่อนข้างเรียบง่าย แต่ด้วยการเล่นเกม แอนิเมชั่น 3 มิติ และการเรนเดอร์วิดีโอที่ผลักดันให้ CPU ก้าวข้ามขีดจำกัด GPU ที่ทรงพลังกว่าจึงต้องเข้ามาช่วยเหลือ
การ์ด GPU ใหม่เหล่านี้มีพลังและความซับซ้อนเพิ่มขึ้นตามกาลเวลา โดยบริษัทและนักวิจัยต่าง ๆ ต่างแสวงหาวิธีที่จะใช้ประโยชน์จากข้อได้เปรียบในการประมวลผลแบบขนาน โพสต์นี้จะแสดงให้คุณเห็นว่ามันเป็นอย่างไรมาจนถึงตอนนี้
GPU คืออะไร?
GPU หรือหน่วยประมวลผลกราฟิกเป็นวงจรเฉพาะที่ออกแบบมาเพื่อจัดการข้อมูลเพื่อช่วยในการสร้างภาพสำหรับการแสดงผล กล่าวอีกนัยหนึ่ง GPU คือระบบที่สร้างภาพที่คุณเห็นบนพื้นผิวการแสดงผล เช่น จอคอมพิวเตอร์ หน้าจอสมาร์ทโฟน คอนโซลเกม เป็นต้น
เดิมที GPU เป็นอุปกรณ์ที่เรียบง่ายซึ่งทำหน้าที่รวมองค์ประกอบกราฟิกเข้าด้วยกันเพื่อสร้างผลลัพธ์ที่เหมาะสมที่สุดสำหรับอุปกรณ์เฉพาะ อย่างไรก็ตาม เมื่อเวลาผ่านไปและด้วยการถือกำเนิดของเกมคอมพิวเตอร์ GPU ก็เริ่มมีความซับซ้อนและทรงพลังมากขึ้น ทำให้เกิดGPGPU หรือการประมวลผลอเนกประสงค์บน GPUขึ้น มา
การประมวลผล GPU คืออะไร?
การประมวลผลด้วย GPU หรือ GPGPU คือการใช้ GPU สำหรับการประมวลผลที่มากกว่าแค่กราฟิก ซึ่งหมายถึงการใช้ GPU ที่ฝังอยู่ในการ์ดแสดงผลของคอมพิวเตอร์และเดิมทีตั้งใจให้ประมวลผลกราฟิกคอมพิวเตอร์เพื่อการคำนวณข้อมูลประเภทอื่นๆ เช่น การจำลองทางวิทยาศาสตร์ การขุดสกุลเงินดิจิทัล การคำนวณพีชคณิต การพยากรณ์อากาศ เครือข่ายประสาท และอื่นๆ
เหตุผลในการวิวัฒนาการของการประมวลผล GPU นี้มาจากการพัฒนาที่น่าประทับใจของหน่วยประมวลผลกราฟิก ซึ่งมาจากสถาปัตยกรรมแบบกระจายขนานของระบบ GPU สมัยใหม่
เมื่อหน่วยประมวลผลกลาง (CPU) ของคอมพิวเตอร์มีประสิทธิภาพมากขึ้นและสามารถจัดการกับโปรแกรมและเกมที่ซับซ้อนยิ่งขึ้นได้ ผู้ผลิตการ์ดจอจึงพยายามพัฒนาให้ทันกับความก้าวหน้าในด้านการประมวลผลและกราฟิก 3 มิติสมัยใหม่ Nvidia เปิดตัวGeForce 256ในปี 1999 ซึ่งเป็นการ์ดจอ GPU ตัวแรกของโลก และจากนั้นเป็นต้นมาก็มีการพัฒนาต่อยอดไปเรื่อยๆ
ข้อได้เปรียบหลักของการ์ด GPU เมื่อเทียบกับ CPU คือสถาปัตยกรรมการประมวลผลแบบขนาน ซึ่งทำให้สามารถประมวลผลงานข้อมูลขนาดใหญ่ได้ในลักษณะกระจายและขนานกัน ซึ่งช่วยป้องกันปัญหาคอขวดและการหยุดทำงานของ CPU
การใช้งาน GPU ในการประมวลผลมีอะไรบ้าง?
การใช้งานการประมวลผล GPU มีมากมาย ต่อไปนี้คือการใช้งานหลักๆ บางส่วน:
- การเรียนรู้ของเครื่องจักรและเครือข่ายประสาท
- ตรรกะคลุมเครือ
- ชีวสารสนเทศ
- การสร้างแบบจำลองโมเลกุล
- การเรนเดอร์วิดีโอ
- การคำนวณเชิงเรขาคณิต
- การวิจัยสภาพภูมิอากาศและการพยากรณ์อากาศ
- ดาราศาสตร์
- การอ่านรหัส
- วิสัยทัศน์คอมพิวเตอร์
- การถอดรหัสรหัสผ่าน
- การวิจัยเชิงควอนตัม
การประมวลผล GPU เทียบกับ CPU
ทั้ง GPU และ CPU ต่างก็ประมวลผลข้อมูลดิจิทัล แต่ทำงานในรูปแบบที่แตกต่างกัน CPU หรือหน่วยประมวลผลกลางได้รับการออกแบบให้ประมวลผลแบบอนุกรมด้วยความเร็วสูง ในขณะที่ GPU ได้รับการออกแบบให้ประมวลผลแบบขนานด้วยความเร็วที่ต่ำกว่ามาก แน่นอนว่า CPU สามารถใช้ไฮเปอร์เธรดดิ้งเพื่อให้ได้ 2 เธรดต่อคอร์ หรือแม้แต่มีคอร์หลายสิบคอร์ แต่โดยพื้นฐานแล้วทั้งสองอย่างนี้เป็นโปรเซสเซอร์แบบอนุกรม
ในขณะที่ CPU อาจมีคอร์เพียงไม่กี่ตัว แต่ GPU รุ่นใหม่ๆ มีคอร์นับพันตัว ตัวอย่างเช่นNvidia GeForce RTX 3090ซึ่งมีคอร์มากกว่า 10 ตัว อย่างไรก็ตาม เพื่อให้ได้เปรียบ CPU ข้อมูลจะต้องสามารถประมวลผลแบบขนานได้ เช่น การประมวลผลสตรีมที่มีภาพหลายพันภาพพร้อมกัน
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 เทียบกับโปรเซสเซอร์สตรีม
บ่อยครั้งที่คุณจะพบคำว่าCUDA coreและStream processorทั้งสองคำนี้หมายถึงแกนประมวลผล GPU หรือหน่วยประมวลผลทางคณิตศาสตร์และตรรกะ (Arithmetic Logic Units) ของ GPU CUDA Core เป็นเทคโนโลยีเฉพาะของ Nvidia ในขณะที่ Stream processor เป็นเทคโนโลยีของ 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 ได้ที่นี่หรือของAMD ได้ที่นี่




