กลับสู่คอร์สเรียน
AI022 Professional

คู่มือการเขียนโปรแกรม AMD HIP

คู่มือทางเทคนิคที่ครอบคลุมสำหรับการใช้งาน Heterogeneous-compute Interface for Portability (HIP) โดยให้ API รันไทม์แบบ C++ และภาษาเคอร์เนลที่ช่วยให้นักพัฒนาสามารถสร้างแอปพลิเคชันที่ใช้งานได้กับ GPU ของ AMD และ NVIDIA จากโค้ดเดียว คู่มือนี้ครอบคลุมหัวข้อตั้งแต่การติดตั้ง การตั้งค่าสภาพแวดล้อม โมเดลการเขียนโปรแกรม การจัดสรรหน่วยความจำ และเครื่องมือในการย้ายโค้ด CUDA ไปยัง HIP

4.9
12.0h
841 ผู้เรียน
0 การถูกใจ
ปัญญาประดิษฐ์
เริ่มเรียน

บทเรียน

ภาพรวมคอร์สเรียน

📚 สรุปเนื้อหา

คู่มือเทคนิคที่ครอบคลุมสำหรับ Heterogeneous-compute Interface for Portability (HIP) ซึ่งให้ API รันไทม์แบบ C++ และภาษาเคอร์เนลที่ช่วยให้นักพัฒนาสามารถสร้างแอปพลิเคชันที่สามารถใช้งานได้กับ GPU ของ AMD และ NVIDIA จากโค้ดเดียวเท่านั้น คู่มือนี้ครอบคลุมหัวข้อต่างๆ เช่น การติดตั้ง การตั้งค่าสภาพแวดล้อม โมเดลการเขียนโปรแกรม การจัดสรรหน่วยความจำ และเครื่องมือในการย้ายโค้ด CUDA ไปยัง HIP

เชี่ยวชาญการเขียนโปรแกรม GPU ที่สามารถนำพาได้: โค้ดเดียวกันใช้ได้ทั้งแพลตฟอร์ม AMD และ NVIDIA

ผู้เขียน: Advanced Micro Devices, Inc. (AMD)

คำขอบคุณ: AMD, โลโก้ลูกศรของ AMD, AMD Instinct, Radeon, ROCm และรูปแบบการรวมกันของพวกมัน เป็นเครื่องหมายการค้าของ Advanced Micro Devices, Inc. Linux เป็นเครื่องหมายการค้าจดทะเบียนของ Linus Torvalds. PCIe เป็นเครื่องหมายการค้าจดทะเบียนของ PCI-SIG Corporation

🎯 เป้าหมายการเรียนรู้

  1. นิยามคุณสมบัติหลักและประโยชน์ที่สำคัญของเฟรมเวิร์ก HIP
  2. แสดงวิธีการเข้าถึงและสอบถามสภาพแวดล้อม HIP โดยใช้เครื่องมือระบบ
  3. อธิบายความสัมพันธ์ทางสถาปัตยกรรมระหว่างความสามารถในการนำพาของ HIP กับเทคโนโลยีคอมไพเลอร์
  4. ดำเนินการติดตั้งเฉพาะแพลตฟอร์มสำหรับสภาพแวดล้อม NVIDIA และ AMD
  5. ประสานกระบวนการสร้างหลายรีพอซิทอรีเพื่อคอมไพล์ HIP จากแหล่งรหัส
  6. ตรวจสอบการติดตั้งที่สำเร็จโดยใช้เครื่องมือตรวจสอบและการกำหนดค่าระบบ
  7. ตั้งค่าและจัดการหน่วยความจำ GPU โดยใช้การจัดสรรแบบ HIP ควบคุมความสอดคล้อง และการมองเห็นหน่วยความจำโฮสต์แบบ zero-copy
  8. พัฒนาเคอร์เนลประสิทธิภาพสูงโดยใช้คุณสมบัติเฉพาะของ HIP เช่น คุณสมบัติฟังก์ชัน/ตัวแปร ประเภทเวกเตอร์ และเครื่องมือสังเกตสถานะ
  9. นำไปใช้ในอัลกอริธึมขนานขั้นสูงโดยใช้ฟังก์ชันระดับ warp shuffle, vote, ballot และกลุ่มการทำงานร่วมกัน
  10. ใช้เครื่องมือ HIPIFY เพื่อแปลงโค้ด CUDA ไปเป็น HIP โดยอัตโนมัติ และจัดการการเปลี่ยนแปลงโปรเจกต์แบบในสถานที่

🔹 บทเรียนที่ 1: บทนำเกี่ยวกับความยืดหยุ่นของ HIP และสถาปัตยกรรม

ภาพรวม: บทเรียนนี้ครอบคลุมประเด็นพื้นฐานของ Heterogeneous-compute Interface for Portability (HIP) ซึ่งเน้นคุณสมบัติหลักที่กำหนดตัวตนของ HIP วิธีการเข้าถึงสภาพแวดล้อม HIP หลัก และเทคโนโลยีคอมไพเลอร์ที่อยู่เบื้องหลังซึ่งทำให้การนำพาไปยังสถาปัตยกรรม GPU ต่าง ๆ (ทั้ง AMD และ NVIDIA) ทำได้อย่างราบรื่น

ผลลัพธ์การเรียนรู้:

  • นิยามคุณสมบัติหลักและประโยชน์ที่สำคัญของเฟรมเวิร์ก HIP
  • แสดงวิธีการเข้าถึงและสอบถามสภาพแวดล้อม HIP โดยใช้เครื่องมือระบบ
  • อธิบายความสัมพันธ์ทางสถาปัตยกรรมระหว่างความสามารถในการนำพาของ HIP กับเทคโนโลยีคอมไพเลอร์

🔹 บทเรียนที่ 2: การติดตั้งและตรวจสอบสภาพแวดล้อม HIP

ภาพรวม: บทเรียนนี้ให้แนวทางทางเทคนิคในการตั้งค่าสภาพแวดล้อม HIP (Heterogeneous-compute Interface for Portability) บนแพลตฟอร์มฮาร์ดแวร์ต่าง ๆ โดยครอบคลุมขั้นตอนการติดตั้งเฉพาะสำหรับแบ็กเอนด์ของ AMD และ NVIDIA กระบวนการซับซ้อนในการสร้างเวลาทำงานของ HIP จากแหล่งรหัส และขั้นตอนตรวจสอบสุดท้ายเพื่อยืนยันความพร้อมของระบบสำหรับการพัฒนา GPU

ผลลัพธ์การเรียนรู้:

  • ดำเนินการติดตั้งเฉพาะแพลตฟอร์มสำหรับสภาพแวดล้อม NVIDIA และ AMD
  • ประสานกระบวนการสร้างหลายรีพอซิทอรีเพื่อคอมไพล์ HIP จากแหล่งรหัส
  • ตรวจสอบการติดตั้งที่สำเร็จโดยใช้เครื่องมือตรวจสอบและการกำหนดค่าระบบ

🔹 บทเรียนที่ 3: โมเดลการเขียนโปรแกรมและลึกซึ้งเกี่ยวกับ API ของ HIP

ภาพรวม: บทเรียนนี้นำเสนอการสำรวจอย่างละเอียดเกี่ยวกับโมเดลการเขียนโปรแกรมของ Heterogeneous-Compute Interface for Portability (HIP) ครอบคลุม API พื้นฐานสำหรับการจัดการหน่วยความจำและการเรียกใช้เคอร์เนล ความละเอียดอ่อนของภาษาเคอร์เนล HIP (รวมถึงคุณสมบัติและตัวแปรภายใน), และคุณสมบัติขั้นสูง เช่น เครื่องมือระดับ warp, กลุ่มการทำงานร่วมกัน และฟังก์ชันคณิตศาสตร์เฉพาะ

ผลลัพธ์การเรียนรู้:

  • ตั้งค่าและจัดการหน่วยความจำ GPU โดยใช้การจัดสรรแบบ HIP ควบคุมความสอดคล้อง และการมองเห็นหน่วยความจำโฮสต์แบบ zero-copy
  • พัฒนาเคอร์เนลประสิทธิภาพสูงโดยใช้คุณสมบัติเฉพาะของ HIP เช่น คุณสมบัติฟังก์ชัน/ตัวแปร ประเภทเวกเตอร์ และเครื่องมือสังเกตสถานะ
  • นำไปใช้ในอัลกอริธึมขนานขั้นสูงโดยใช้ฟังก์ชันระดับ warp shuffle, vote, ballot และกลุ่มการทำงานร่วมกัน

🔹 บทเรียนที่ 4: การเปลี่ยนผ่านและย้ายแอปพลิเคชัน CUDA ไปยัง HIP

ภาพรวม: บทเรียนนี้ครอบคลุมกระบวนการอย่างเป็นระบบในการย้ายโค้ดต้นฉบับจาก CUDA ไปยังเฟรมเวิร์ก HIP (Heterogeneous-Compute Interface for Portability) รายละเอียดการใช้เครื่องมืออัตโนมัติเช่น HIPIFY กลยุทธ์การเปลี่ยนแปลงโปรเจกต์ การระบุพฤติกรรมของคอมไพเลอร์เฉพาะแพลตฟอร์ม (HIP-Clang เทียบกับ NVIDIA) และการจัดการความแตกต่างด้านสถาปัตยกรรม

ผลลัพธ์การเรียนรู้:

  • ใช้เครื่องมือ HIPIFY เพื่อแปลงโค้ด CUDA เป็น HIP โดยอัตโนมัติ และจัดการการเปลี่ยนแปลงโปรเจกต์แบบในสถานที่
  • แยกแยะระหว่างแพลตฟอร์มเป้าหมายของ AMD และ NVIDIA รวมถึงคอมไพเลอร์โดยใช้มาโครก่อนประมวลผลและคำถามสภาพแวดล้อม
  • ตรวจสอบคุณสมบัติสถาปัตยกรรม (HIP_ARCH) และนำไปใช้แก้ไขปัญหาสำหรับฟังก์ชัน CUDA ที่เฉพาะเจาะจง เช่น memcpyToSymbol