วัดการเพิ่มความเร็ว
เปรียบเทียบประสิทธิภาพแบบพื้นฐานกับแบบแบ่งไทล์
วัดการเพิ่มความเร็ว เป็นบทเรียน CUDA Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน CUDA Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส CUDA Academy มีบทเรียนทั้งหมด 4 บทเรียน
พิสูจน์ข้อได้เปรียบ
คุณสร้างเคอร์เนลแบบแบ่งเป็นไทล์แล้ว แต่จริง ๆ แล้วเร็วขึ้นมากเพียงใด การวัดจะเปลี่ยนการคาดเดาให้เป็นตัวเลขที่คุณ เชื่อถือได้ 📊
จับเวลาบนนาฬิกาของ GPU
ใช้ เหตุการณ์ CUDA เพื่อจับเวลาเคอร์เนล เหตุการณ์เหล่านี้อยู่ในสตรีมของ GPU และวัดได้อย่างแม่นยำว่างานเริ่มต้นและเสร็จสิ้นเมื่อใด
cudaEvent_t start, stop;
cudaEventCreate(&start);
cudaEventCreate(&stop);กำหนดขอบเขตเคอร์เนล
บันทึกเหตุการณ์ก่อนเปิดใช้งานเคอร์เนลและอีกเหตุการณ์หลังจากนั้น แล้ว ซิงโครไนซ์ เพื่อให้การจับเวลารอจนกว่า GPU จะทำงานเสร็จจริง
cudaEventRecord(start);
matmul<<<g,b>>>(...);
cudaEventRecord(stop);
cudaEventSynchronize(stop);อ่านเวลาที่ผ่านไป
ขอค่าช่วงห่างระหว่างเหตุการณ์เป็น มิลลิวินาที ตัวเลขเดียวนี้คือเวลาทำงานที่วัดได้ของเคอร์เนล
float ms;
cudaEventElapsedTime(&ms, start, stop);อุ่นเครื่องก่อน
การเปิดใช้งานครั้งแรกมีต้นทุนการตั้งค่าที่เกิดขึ้นเพียงครั้งเดียว ให้เรียกใช้เคอร์เนล อุ่นเครื่อง ก่อนจับเวลา เพื่อวัดความเร็วในสภาวะคงที่ ไม่ใช่ช่วงเริ่มต้น
หาค่าเฉลี่ยจากหลายรอบ
ตัวอย่างเดียวมีสัญญาณรบกวน ให้จับเวลาเคอร์เนลหลายครั้งแล้วหาค่า เฉลี่ย เพื่อให้ได้ผลลัพธ์ที่เสถียรและตรงตามความเป็นจริง
คำนวณอัตราเร่ง
อัตราเร่งคำนวณได้ง่าย ๆ จากเวลาของเคอร์เนลแบบพื้นฐานหารด้วยเวลาของเคอร์เนลแบบแบ่งไทล์ ค่า 4x หมายความว่าเคอร์เนลแบบแบ่งไทล์ทำงานเร็วขึ้นสี่เท่า
float speedup = naive_ms / tiled_ms;คิดเป็น GFLOPS
การคูณเมทริกซ์มีการดำเนินการเลขทศนิยมประมาณ 2 * N^3 ครั้ง ให้นำค่านี้หารด้วยเวลาที่ใช้เพื่อรายงานประสิทธิภาพเป็น GFLOPS ซึ่งเป็นมาตรฐานสำหรับวัดผล
double gflops = (2.0*N*N*N) / (ms * 1e6);เหตุผลที่การแบ่งเป็นไทล์ได้เปรียบ
อัตราเร่งเกิดจากการลด การรับส่งข้อมูลในหน่วยความจำโกลบอล ลงอย่างมาก การใช้ข้อมูลซ้ำจากหน่วยความจำร่วมช่วยป้อนงานให้แกนประมวลผลต่อเนื่อง แทนที่จะปล่อยให้รอการโหลดที่ช้า
ตรวจสอบความถูกต้องเสมอ
คำตอบที่ผิดแม้จะเร็วก็ไม่มีประโยชน์ ให้เปรียบเทียบผลลัพธ์จาก GPU กับผลอ้างอิงจาก CPU ก่อนฉลอง อัตราเร่ง ✅
รู้ขีดจำกัดของตนเอง
แม้แต่การคูณเมทริกซ์แบบแบ่งเป็นไทล์ก็ยังช้ากว่า cuBLAS ที่ปรับแต่งมาอย่างละเอียด การรู้ช่องว่างนี้ช่วยบอกคุณได้ว่าเมื่อใดควรปรับปรุงต่อ และเมื่อใดควรเรียกใช้ไลบรารี
ตรวจสอบอย่างรวดเร็ว
ทบทวนเครื่องมือที่เหมาะสมสำหรับจับเวลาเคอร์เนล GPU
สรุป
คุณจับเวลาด้วย เหตุการณ์ CUDA อุ่นเครื่อง หาค่าเฉลี่ย คำนวณอัตราเร่งและ GFLOPS และตรวจสอบความถูกต้องแล้ว ตอนนี้คุณสามารถพิสูจน์ได้ว่าการปรับปรุงของคุณได้ผล 🏁
เรียนรู้ C++ ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 30
- บทเรียน
- 120
คำถามที่พบบ่อย
บทเรียน “วัดการเพิ่มความเร็ว” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “วัดการเพิ่มความเร็ว” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส CUDA Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส CUDA Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “วัดการเพิ่มความเร็ว”
เปรียบเทียบประสิทธิภาพแบบพื้นฐานกับแบบแบ่งไทล์ คุณปฏิบัติ CUDA Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน CUDA Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน CUDA Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “วัดการเพิ่มความเร็ว” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน CUDA Academy นี้ได้ไหม
ได้ บทเรียน CUDA Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- เคอร์เนลคูณเมทริกซ์แบบพื้นฐาน
- แบ่งผลคูณภายในเป็นไทล์
- วนซ้ำตามช่วงของไทล์
- วัดการเพิ่มความเร็ว