คู่มือการเขียนโปรแกรม CUDA
แหล่งข้อมูลทางการและครอบคลุมสำหรับนักพัฒนาที่ต้องการเรียนรู้โมเดลการเขียนโปรแกรม CUDA และวิธีเขียนโค้ดประสิทธิภาพสูงที่ทำงานบนหน่วยประมวลผลกราฟิกของ NVIDIA คู่มือนี้ครอบคลุมสถาปัตยกรรมแพลตฟอร์ม ชุดคำสั่งการเขียนโปรแกรม คุณสมบัติฮาร์ดแวร์ขั้นสูง และข้อมูลเทคนิคต่างๆ
ภาพรวมคอร์สเรียน
สรุปเนื้อหา
แหล่งข้อมูลทางการและครบถ้วนสำหรับนักพัฒนาที่ต้องการเรียนรู้โมเดลโปรแกรม CUDA และวิธีเขียนโค้ดประสิทธิภาพสูงที่ทำงานบนหน่วยประมวลผลกราฟิกของ NVIDIA คู่มือนี้ครอบคลุมสถาปัตยกรรมแพลตฟอร์ม หน้าที่การใช้งานของโปรแกรม การใช้คุณสมบัติฮาร์ดแวร์ขั้นสูง และรายละเอียดทางเทคนิค
เชี่ยวชาญศิลปะของการคำนวณแบบขนานด้วยคู่มือมาตรฐานในอุตสาหกรรมสำหรับ NVIDIA CUDA
ผู้เขียน: บริษัท NVIDIA Corporation
คำขอบคุณ: สิทธิ์การใช้งาน © 2007-2024 บริษัท NVIDIA Corporation และบริษัทในเครือ สงวนลิขสิทธิ์ทั้งหมด
เป้าหมายการเรียนรู้
- กำหนดบทบาทของโฮสต์ (โปรเซสเซอร์) และอุปกรณ์ (กราฟิกไพเพอร์) ภายในระบบไฮบริด
- อธิบายโมเดลโปรแกรมแบบ SIMT และโครงสร้างระดับชั้นของเธรด บล็อก และกริด
- แยกความแตกต่างระหว่างรหัส PTX (Parallel Thread Execution) และรหัสไบนารี (cubins) และอธิบายว่าการคอมไพล์แบบจุดเวลา (JIT) ช่วยให้เกิดความเข้ากันได้ได้อย่างไร
- พัฒนาและคอมไพล์เคอร์เนล CUDA: เขียนฟังก์ชัน global กำหนดการดำเนินการด้วยสัญลักษณ์สามชั้น และจัดการกระบวนการคอมไพล์โดยใช้ NVCC
- ปรับปรุงการจัดการหน่วยความจำและการเคลื่อนย้ายข้อมูล: แยกแยะโมเดลหน่วยความจำแบบรวม (Unified), แบบระบุชัด (Explicit), และแบบแมป (Mapped) และนำหน่วยความจำโฮสต์ที่ตรึงหน้า (page-locked) มาใช้เพื่อการส่งข้อมูลอย่างมีประสิทธิภาพ
- จัดการการดำเนินการแบบขนาน: ใช้สตรีม, อีเวนต์ และกลุ่มการทำงานร่วมกัน (Cooperative Groups) เพื่อจัดการงานแบบไม่ซิงโครนัส และทำให้การดำเนินการระหว่าง CPU กับ GPU ซิงโครนัสกันได้
- ดำเนินการคำนวณตัวชี้ที่ซับซ้อนและระบุจุดที่เป็นปัญหาในสถาปัตยกรรม (แบบ von Neumann ตรงกับแบบ Harvard)
- ใช้รูปแบบการดำเนินงานขั้นสูงของ CUDA เช่น การเรียกเคอร์เนลตามเงื่อนไขที่ควบคุมด้วยโปรแกรม และการถ่ายโอนข้อมูลแบบบัทช์ที่หลากหลาย
- ใช้คุณสมบัติเฉพาะฮาร์ดแวร์ เช่น ขอบเขตของเธรด (Thread Scopes), ตัวแทนแบบไม่ซิงโครนัส (Asynchronous Proxies), และพายเปล (Pipelines) เพื่อเพิ่มความสามารถในการทำงานพร้อมกันสูงสุด
- ตั้งค่าและปรับแต่งประสิทธิภาพของหน่วยความจำแบบรวม (Unified Memory) โดยใช้การดึงข้อมูลล่วงหน้า (prefetching), คำแนะนำการใช้งาน (usage hints), และการจัดการขนาดหน้า (page size management)