อะไรคือความแตกต่างระหว่าง CUDA Cores และ Tensor Cores? (อธิบาย) - ความแตกต่างทั้งหมด
สารบัญ
CUDA และ Tensor cores เป็นผลิตภัณฑ์ที่พัฒนาโดยบริษัทที่ชื่อว่า Nvidia CUDA cores และ Tensor cores คืออะไร? CUDA ย่อมาจาก Compute Unified Device Architecture แกน CUDA มีอยู่ใน GPU สมาร์ทโฟน และแม้แต่รถยนต์ของคุณ ตามที่นักพัฒนาของ Nvidia กล่าวเช่นนั้น
แกน CUDA เป็นแพลตฟอร์มการประมวลผลแบบขนานและอินเทอร์เฟซการเขียนโปรแกรมแอปพลิเคชัน (API) ที่ช่วยให้ซอฟต์แวร์สามารถใช้หน่วยประมวลผลกราฟิก (GPU) ประเภทเฉพาะสำหรับการประมวลผลตามวัตถุประสงค์ทั่วไป
ในขณะที่แกนเทนเซอร์ซึ่งพัฒนาโดย Nvidia เองก็ใช้ใน GPU เช่นกัน Tensor Cores เปิดใช้งานการประมวลผลที่มีความแม่นยำแบบผสม ปรับการคำนวณแบบไดนามิกเพื่อเพิ่มปริมาณงานในขณะที่รักษาความแม่นยำ
พูดง่ายๆ ก็คือ คอร์เหล่านี้เป็นส่วนสำคัญของ GPU ในพีซีของคุณในการคำนวณบางอย่าง แกน CUDA ใช้เพื่อคูณตัวเลขสองตัวและเพิ่มเข้ากับตัวเลขอื่น
ในขณะที่ Tensor core เหมือนกัน แต่มีเมทริกซ์ 4×4 การคำนวณเหล่านี้จะแสดงผลกราฟิกได้เร็วขึ้นสำหรับคุณ
CUDA คืออะไร?
Compute Unified Device Architecture หรือเรียกสั้นๆ ว่า CUDA ที่พัฒนาโดย Nvidia ซึ่งเปิดตัวเมื่อวันที่ 23 มิถุนายน 2550 เป็นแพลตฟอร์มการประมวลผลแบบขนานและอินเทอร์เฟซการเขียนโปรแกรมแอปพลิเคชัน (API)
นั่น ช่วยให้ซอฟต์แวร์สามารถใช้หน่วยประมวลผลกราฟิก (GPU) เฉพาะประเภทสำหรับการประมวลผลวัตถุประสงค์ทั่วไป ซึ่งเป็นวิธีการที่เรียกว่าการคำนวณวัตถุประสงค์ทั่วไปบนGPUs (จีพียู).
CUDA เป็นเลเยอร์ซอฟต์แวร์ที่ให้การเข้าถึงโดยตรงไปยังชุดคำสั่งเสมือนของ GPU และองค์ประกอบการคำนวณแบบขนานสำหรับการดำเนินการของเคอร์เนลการคำนวณ CUDA ได้รับการพัฒนาให้ทำงานกับภาษาโปรแกรมต่างๆ รวมถึง C, C++ และ Fortran
ดูสิ่งนี้ด้วย: Diplodocus vs. Brachiosaurus (ความแตกต่างโดยละเอียด) - ความแตกต่างทั้งหมดความสามารถในการทำงานกับภาษาการเขียนโปรแกรมที่แตกต่างกันช่วยให้ผู้เชี่ยวชาญในการเขียนโปรแกรมแบบขนานใช้ประโยชน์จากทรัพยากร GPU ได้ง่ายขึ้น หากเราแยกแยะความแตกต่างจาก API ก่อนหน้า เช่น Direct3D หรือ OpenGL ซึ่งคุณจะต้องมีขั้นสูงกว่านี้ ทักษะพื้นฐานในการเขียนโปรแกรมกราฟิก
GPU ที่มี CUDA ยังรองรับเฟรมเวิร์กการเขียนโปรแกรม เช่น OpenMP, OpenACC, OpenCL และ HIP ซึ่งสามารถคอมไพล์โค้ดดังกล่าวเป็น CUDA ชื่อแรกที่ใช้สำหรับ CUDA เป็นตัวย่อสำหรับ Compute Unified Device Architecture อย่างไรก็ตาม Nvidia ได้ยกเลิกคำย่อที่ใช้กันทั่วไปในภายหลัง
กราฟิกการ์ด Nvidia GTX 1080 Ti อันทรงพลัง
ข้อมูลเพิ่มเติมเกี่ยวกับ CUDA
ในฐานะโปรเซสเซอร์คอมพิวเตอร์เฉพาะ หน่วยประมวลผลกราฟิก (GPU) ตอบสนองความต้องการที่แท้จริง - ปริมาณงานกราฟิก 3D ที่ต้องใช้การคำนวณสูง
ประมาณปี 2012 GPU ได้รับการพัฒนาและกลายเป็นระบบมัลติคอร์แบบคู่ขนานสูง ทำให้สามารถประมวลผลข้อมูลได้อย่างมีประสิทธิภาพสำหรับบล็อกขนาดใหญ่
เมื่อประมวลผลบล็อกข้อมูลขนาดใหญ่แบบขนาน การออกแบบนี้เหนือกว่าหน่วยประมวลผลกลาง (CPU) สำหรับวัตถุประสงค์ทั่วไปสำหรับอัลกอริทึม เช่น:
- แฮชเข้ารหัสฟังก์ชัน
- การเรียนรู้ของเครื่อง
- การจำลองไดนามิกของโมเลกุล
- เครื่องยนต์ฟิสิกส์
- อัลกอริทึมการเรียงลำดับ
การใช้สถาปัตยกรรม CUDA ในปัจจุบันและ ในอนาคต
- เร่งการแสดงผลกราฟิก 3 มิติ
- เร่งการแปลงรูปแบบไฟล์วิดีโอระหว่างกัน
- เร่งการเข้ารหัส ถอดรหัส และบีบอัด
- ชีวสารสนเทศ เช่น การหาลำดับดีเอ็นเอ NGS BarraCUDA
- การคำนวณแบบกระจาย เช่น การทำนายโครงสร้างดั้งเดิมของโปรตีน
- การจำลองการวิเคราะห์ทางการแพทย์ เช่น ความจริงเสมือนตามภาพสแกน CT และ MRI
- การจำลองทางกายภาพ โดยเฉพาะอย่างยิ่งในไดนามิกของของไหล
- การฝึกอบรมโครงข่ายประสาทเทียมในปัญหาการเรียนรู้ของเครื่อง
- การจดจำใบหน้า
- โครงการคอมพิวเตอร์แบบกระจาย เช่น [ป้องกันอีเมล] และโครงการอื่นๆ ที่ใช้ BOINC
- พลศาสตร์ระดับโมเลกุล
- การขุด cryptocurrencies
- ซอฟต์แวร์โครงสร้างจากการเคลื่อนไหว (SfM)
Tensor Core คืออะไร
แกนพิเศษที่เรียกว่า Tensor Cores ช่วยให้สามารถฝึกความแม่นยำแบบผสมได้ การสร้างเริ่มต้นของคอร์เฉพาะเหล่านี้ทำสิ่งนี้ด้วยอัลกอริธึมการเพิ่มทวีคูณแบบหลอมรวม ทำให้สามารถคูณและเพิ่มเมทริกซ์ 4 x 4 FP16 สองรายการลงในเมทริกซ์ 4 x 4 FP16 หรือ FP32
ผลลัพธ์สุดท้ายคือ FP32 ที่มีการสูญเสียความแม่นยำเพียงเล็กน้อย การคำนวณความแม่นยำแบบผสมถูกกำหนดให้เป็นเช่นนั้นแม้ว่าเมทริกซ์อินพุตอาจเป็น FP16 ที่มีความแม่นยำต่ำ
ในทางปฏิบัติ สิ่งนี้จะเพิ่มความเร็วในการคำนวณอย่างมีนัยสำคัญโดยแทบไม่มีผลกับประสิทธิภาพขั้นสุดท้ายของแบบจำลอง ความจุนี้ได้รับการขยายโดยสถาปัตยกรรมขนาดเล็กในภายหลัง ไปจนถึงการแสดงหมายเลขคอมพิวเตอร์ที่มีความแม่นยำน้อยลง
รุ่นแรกเปิดตัวด้วย Volta microarchitecture เริ่มต้นที่ V100 มีรูปแบบความแม่นยำของจำนวนคอมพิวเตอร์มากขึ้นสำหรับการคำนวณด้วย GPU microarchitecture ใหม่ในแต่ละรุ่นที่ผ่านไป
เราจะพูดถึงการเปลี่ยนแปลงและปรับปรุงความสามารถและการทำงานของ Tensor Cores ในสถาปัตยกรรมไมโครแต่ละรุ่นในส่วนต่อไปนี้
ภาพที่เรนเดอร์กราฟิกโดย Titan V
Tensor Cores ทำงานอย่างไร
รุ่นแรก:
สถาปัตยกรรมขนาดเล็กของ GPU Volta รวมอยู่ใน Tensor Cores รุ่นแรก แกนเหล่านี้ทำให้สามารถฝึกด้วยความแม่นยำแบบผสมและรูปแบบตัวเลข FP16
ซึ่งอาจเพิ่มได้ถึง 12 เท่าของทรูพุต teraFLOP สำหรับ GPU บางรุ่น แกนประมวลผล 640 คอร์ของ V100 ระดับบนสุดมอบความเร็วประสิทธิภาพที่เพิ่มขึ้นถึง 5 เท่าเมื่อเทียบกับ Pascal GPUs ของรุ่นก่อนหน้า
ดูสิ่งนี้ด้วย: Nctzen และ Czennie เกี่ยวข้องกันอย่างไร? (อธิบาย) - ความแตกต่างทั้งหมดรุ่นที่สอง:
ด้วยการเปิดตัว Turing GPUs จึงมีการเปิดตัว Tensor Core รุ่นที่สอง เพิ่ม Int8, Int4 และ Int1 ในรายการความแม่นยำของ Tensor Core ที่รองรับ ซึ่งได้แก่ก่อนหน้านี้จำกัดไว้ที่ FP16
เนื่องจากขั้นตอนการฝึกอบรมที่มีความแม่นยำแบบผสม ทรูพุตประสิทธิภาพของ GPU จึงเพิ่มขึ้นสูงสุด 32 เท่าเมื่อเทียบกับ Pascal GPU
รุ่นที่สาม:
สถาปัตยกรรมใน Ampere GPU ต่อยอดจากความก้าวหน้าก่อนหน้านี้ของสถาปัตยกรรมไมโคร Volta และ Turing โดยเพิ่มการรองรับความแม่นยำ FP64, TF32 และ bfloat16
การฝึกอบรมการเรียนรู้เชิงลึกและกิจกรรมการอนุมานได้รับการเร่งความเร็วมากขึ้นด้วยรูปแบบที่มีความแม่นยำเป็นพิเศษเหล่านี้ ตัวอย่างเช่น รูปแบบ TF32 ทำงานคล้ายกับ FP32 ในขณะเดียวกันก็รับประกันความเร็วสูงสุด 20x โดยไม่ต้องแก้ไขรหัสใดๆ
จากนั้น ด้วยโค้ดเพียงไม่กี่บรรทัด การใช้ความแม่นยำแบบผสมอัตโนมัติจะเพิ่มความเร็วในการฝึกอบรมเพิ่มอีก 2 เท่า
NVLink รุ่นที่สามที่เปิดใช้งานการโต้ตอบแบบ multi-GPU ที่รวดเร็วอย่างเหลือเชื่อ คอร์ Ray Tracing รุ่นที่สาม และความเชี่ยวชาญพิเศษด้วยคณิตศาสตร์แบบเมตริกซ์แบบกระจายเป็นส่วนเพิ่มเติมของสถาปัตยกรรมไมโครแอมแปร์ .
รุ่นที่สี่:
มีการวางแผนการเปิดตัว Tensor Core รุ่นที่สี่ที่ใช้สถาปัตยกรรมไมโครฮอปเปอร์ในอนาคต Tensor Cores รุ่นที่สี่ใน H100 ถัดไป
ซึ่งคาดว่าจะเปิดตัวในเดือนมีนาคม 2022 จะสามารถจัดการกับรูปแบบความแม่นยำ FP8 และตามข้อมูลของ NVIDIA จะเร่งโมเดลภาษาขนาดใหญ่ “โดย 30X ที่น่าอัศจรรย์ มากกว่ารุ่นก่อนหน้า”
กราฟิกการ์ด RTX คือใช้สำหรับเรนเดอร์กราฟิกอย่างรวดเร็วเนื่องจากมีแกนเทนเซอร์
ความแตกต่างระหว่าง CUDA Cores และ Tensor Cores
ปัจจุบันแกนเทนเซอร์ถูกจำกัดไว้ที่ Titan V และ Tesla V100 คอร์ 5120 CUDA บน GPU ทั้งสองมีความจุสูงสุดของการดำเนินการสะสมความแม่นยำแบบทวีคูณเพียงครั้งเดียว (เช่น ใน fp32: x += y * z) ต่อสัญญาณนาฬิกา GPU (เช่น ความถี่ Tesla V100 PCIe คือ 1.38Gz)
แกนเทนเซอร์แต่ละแกนทำงานบนเมทริกซ์ขนาดเล็ก 4×4 สำหรับเมทริกซ์ขนาดเล็ก ต่อนาฬิกา GPU หนึ่งตัว แกนเทนเซอร์แต่ละแกนสามารถทำการดำเนินการสะสมแบบทวีคูณของเมทริกซ์ได้หนึ่งรายการ
มันคูณสองเมทริกซ์ 4×4 FP16 และเพิ่มเมทริกซ์ 4×4 FP32 ซึ่งส่งผลให้เกิดการสะสม (นั่นคือเมทริกซ์ fp32 4×4 ด้วย)
เนื่องจากเมทริกซ์อินพุตคือ fp16 ในขณะที่ผลการคูณและตัวสะสมเป็น fp32 อัลกอริทึมจึงเรียกว่าความแม่นยำแบบผสม
คำที่ถูกต้องน่าจะเป็นแค่ "4×4 matrix cores" แต่ทีมการตลาดของ NVIDIA เลือกใช้ "tensor cores"
คำอธิบายแบบเต็มของแกน Tensor โดยย่อ
การ์ด GPU | แกน CUDA | VRAM |
---|---|---|
GeForce GTX 1660 Ti | 1536 | 6GB |
GeForce GTX 1660 ซูเปอร์ | 1408 | 6GB |
GeForce GTX 1660 | 1408 | 6GB |
GeForce GTX 1650 Super | 1408 | 4GB |
GeForce GTX 1650 | 1024 และ896 | 4GB |
GeForce GTX 1060 3GB | 1280 | 4GB |
GeForce GTX 1650 | 1280 | 3GB |
GeForce GTX 1060 6GB | 768 | 6GB |
GeForce GTX 1050 Ti (3GB) | 768 | 4GB |
GeForce GTX 1050 (2GB) | 640 | 3GB |
GeForce GTX 960 | 1024 | 2GB |
GeForce GTX 950 | 786 | 2GB |
GeForce GTX 780 Ti | 2880 | 2GB |
GeForce GTX 780 | 2304 | 3GB |
GeForce GTX 750 Ti | 640 | 2 GB |
GeForce GTX 750 | 512 | 1GB หรือ 2 GB |
GPU ที่มี CUDA cores
สรุป
- CUDA และ Tensor cores เป็นผลิตภัณฑ์ที่พัฒนาโดยบริษัทที่ชื่อว่า Nvidia CUDA ย่อมาจาก Compute Unified Device Architecture แกน CUDA เหล่านี้มีอยู่ใน GPU สมาร์ทโฟน และแม้แต่รถยนต์ของคุณ
- ในขณะที่แกนเทนเซอร์ซึ่งพัฒนาโดย Nvidia เองก็ใช้ใน GPU เช่นกัน แกนเฉพาะที่เรียกว่า "Tensor cores" ช่วยให้สามารถฝึกความแม่นยำแบบผสมได้ Tensor Core รุ่นแรกทำให้สามารถฝึกด้วยความแม่นยำแบบผสมและรูปแบบตัวเลข FP16
- สิ่งนี้สามารถเพิ่มความเร็วได้ถึง 12 เท่าของทรูพุต teraFLOP สำหรับ GPU บางรุ่น เพิ่ม Int8, Int4 และ Int1 ในรายการความแม่นยำของ Tensor Core ที่รองรับ
- เนื่องจากการผสมขั้นตอนการฝึกความแม่นยำ ประสิทธิภาพของ GPU เพิ่มขึ้นถึง 32 เท่า มีการวางแผนการเปิดตัว Tensor Cores เจนเนอเรชั่นที่สี่ของ Hopper microarchitecture ในอนาคต