บทนำสู่การเขียนโปรแกรมด้วยทริตอน: คู่มือปฏิบัติจริง
คู่มือการเรียนรู้ทางวิทยาศาสตร์ที่ครอบคลุม ออกแบบมาเพื่อให้เส้นทางการเรียนรู้แบบเต็มรูปแบบสำหรับ Triton ซึ่งเป็นภาษาและเครื่องคอมพิวเตอร์ที่ใช้ภาษา Python ในการเขียนเคอร์เนล GPU ที่กำหนดเอง หลักสูตรนี้ครอบคลุมโมเดลการเขียนโปรแกรม ไวยากรณ์ของภาษา ลักษณะทางตัวเลข และการปรับประสิทธิภาพ ตั้งแต่การบวกเวกเตอร์พื้นฐาน ไปจนถึงการดำเนินการรวมและแบ่งส่วนที่ใช้ในระบบเรียนรู้เชิงลึกสมัยใหม่
ภาพรวมคอร์สเรียน
สรุปเนื้อหา
บทเรียนทางวิทยาศาสตร์ที่ครอบคลุม ออกแบบมาเพื่อให้เส้นทางการเรียนรู้อย่างครบถ้วนสำหรับ Triton ซึ่งเป็นภาษาและเครื่องมือแปลภาษาที่ใช้พื้นฐานจาก Python สำหรับเขียนเคอร์เนล GPU แบบเฉพาะเจาะจง หลักสูตรนี้ครอบคลุมโมเดลการเขียนโปรแกรม เอกลักษณ์ของภาษา ลักษณะเชิงตัวเลข และการปรับแต่งประสิทธิภาพ โดยย้ายจากแนวคิดพื้นฐานของการบวกเวกเตอร์ไปจนถึงการดำเนินการที่รวมกัน (fused) และแบ่งเป็นช่อง (tiled) ที่ใช้ในระบบเรียนรู้เชิงลึกสมัยใหม่
เชี่ยวชาญศิลปะในการออกแบบเคอร์เนล GPU ประสิทธิภาพสูง จากหลักการพื้นฐาน
ผู้เขียน: EvoClass
คำขอบคุณ: สารบัญของ Triton และ โครงการทริตอนบน GitHub
วัตถุประสงค์การเรียนรู้
- นิยามความหมายของ Triton และบทบาทของมันในระบบร่วมซอฟต์แวร์การเรียนรู้เชิงลึก
- แยกแยะความแตกต่างระหว่าง Triton กับ CUDA, โค้ดแบบเร่งด่วนของ PyTorch และการเขียนโปรแกรมระดับต่ำสำหรับ GPU
- ระบุงานที่เหมาะสมสำหรับการใช้งานกับ Triton และเข้าใจความสำคัญของการรวมเคอร์เนลและการเกิดจุดขัดข้อง (bottlenecks)
- ติดตั้งสภาพแวดล้อมของ Triton อย่างสะอาดและตรวจสอบชุดซอฟต์แวร์ให้เรียบร้อย
- ประยุกต์ใช้เคอร์เนลสำหรับการคัดลอกเวกเตอร์พื้นฐาน เพื่อยืนยันความถูกต้องของตรรกะสภาพแวดล้อมเทียบกับตรรกะเคอร์เนล
- ระบุและจำแนกประเภทจุดขัดข้องของ GPU เพื่อสนับสนุนการรวมเมธอดใน PyTorch
- นิยามอินสแตนซ์ของโปรแกรม และคำนวณมิติของกริดการเริ่มต้น 1 มิติโดยใช้
cdiv - ดำเนินการคำนวณตำแหน่งหน่วยความจำด้วยการคำนวณชี้ตำแหน่ง (pointer arithmetic) เพื่อจับคู่รหัสเฉพาะของโปรแกรม (
pid) กับตำแหน่งหน่วยความจำ - แยกแยะระหว่างเทนเซอร์ของ PyTorch (ข้อมูลเมตาข้อมูลฝั่งโฮสต์) กับเทนเซอร์ของ Triton (บล็อกระดับคอมไพเลอร์)
- คำนวณการจับคู่ระหว่างรหัสโปรแกรม (
pid) กับตำแหน่งหน่วยความจำเฉพาะโดยใช้tl.arange