การประมวลผล 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 มีมากมาย ต่อไปนี้คือการใช้งานหลักๆ บางส่วน:

  1. การเรียนรู้ของเครื่องจักรและเครือข่ายประสาท
  2. ตรรกะคลุมเครือ
  3. ชีวสารสนเทศ
  4. การสร้างแบบจำลองโมเลกุล
  5. การเรนเดอร์วิดีโอ
  6. การคำนวณเชิงเรขาคณิต
  7. การวิจัยสภาพภูมิอากาศและการพยากรณ์อากาศ
  8. ดาราศาสตร์
  9. การอ่านรห​​ัส
  10. วิสัยทัศน์คอมพิวเตอร์
  11. การถอดรหัสรหัสผ่าน
  12. การวิจัยเชิงควอนตัม

การประมวลผล 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 ต่อไปนี้คือตัวอย่างบางส่วน:

  1. Nvidia cuBLAS – โปรแกรมย่อยพีชคณิตเชิงเส้นพื้นฐานสำหรับ CUDA
  2. ดีเอ็นเอ็น – ห้องสมุดเครือข่ายประสาทเทียมเชิงลึก
  3. OpenCL – มาตรฐานเปิดสำหรับการเขียนโปรแกรมแบบขนาน
  4. Openmp – สำหรับ GPU AMD
  5. สะโพก – ไลบรารี่ C++
  6. Nvidia คอยน์ – การสร้างตัวเลขสุ่ม
  7. cuFFT – สำหรับการแปลงฟูเรียร์แบบเร็ว
  8. เอ็นวิเดีย เอ็นพีพี – การประมวลผลภาพและสัญญาณ 2 มิติ
  9. จีพียู VSIPL – การประมวลผลภาพเวกเตอร์และสัญญาณ
  10. OpenCV – ไลบรารี GPU สำหรับการมองเห็นคอมพิวเตอร์
  11. OpenACC – ภาษาเพื่อการพัฒนาคู่ขนาน
  12. ใน PyCU – Python สำหรับแพลตฟอร์ม CUDA
  13. เทนเซอร์RT – การเรียนรู้เชิงลึกสำหรับ CUDA
  14. คูด้า C++ – ภาษา C++ สำหรับ CUDA
  15. คูด้า ซี – ภาษา C สำหรับ CUDA
  16. CUDA ฟอร์แทรน – CUDA สำหรับนักพัฒนา FORTRAN

โครงการคลัสเตอร์ GPU ชั้นนำ

ณ เดือนมิถุนายน 2022 ซูเปอร์คอมพิวเตอร์ที่เร็วที่สุด 8 ใน 10 อันดับแรกของโลกได้รับการเร่งความเร็วด้วย GPU โดยทั้งหมดใช้ระบบปฏิบัติการ Linux ร่วมกัน และมีดังต่อไปนี้:

อันดับชื่อเพทาฟลอปส์แกน CPUGPU Coresกำลังไฟ (kW)ปี
1.ชายแดน1,102591,8728,138,24021,1002022
2.ลูมิ151.9075,2641,034,8802,9002022
3.ประชุมสุดยอด148.6202,7522,211,84010,0962018
4.ทิวเขา94.64190,0801,382,4007,4382018
5.เพิร์ลมุตเตอร์64.59N / AN / A2,5892021
6.Selene63.4671,680483,8402,6462020
7.เทียนเหอ -261.445427,0084,554,75218,4822013
8.Adastra46.121,632297,4409212022

สรุป

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

สำหรับข้อมูลเพิ่มเติม คุณสามารถตรวจสอบแพลตฟอร์มสำหรับนักพัฒนาของNvidia ได้ที่นี่หรือของAMD ได้ที่นี่

นัมดีโอเคเกะ

นัมดีโอเคเกะ

Nnamdi Okeke เป็นผู้ชื่นชอบคอมพิวเตอร์และชอบอ่านหนังสือหลากหลายประเภท เขาชอบใช้ Linux มากกว่า Windows/Mac และได้ใช้
Ubuntu ตั้งแต่ช่วงแรกๆ คุณสามารถติดตามเขาได้ทาง Twitter บองโกแทร็กซ์

บทความ: 299

รับข่าวสารเกี่ยวกับเทคโนโลยี

แนวโน้มเทคโนโลยี แนวโน้มการเริ่มต้นธุรกิจ บทวิจารณ์ รายได้ออนไลน์ เครื่องมือเว็บและการตลาดเดือนละครั้งหรือสองครั้ง