CUDA Academy · บทเรียน

วัดการเพิ่มความเร็ว

เปรียบเทียบประสิทธิภาพแบบพื้นฐานกับแบบแบ่งไทล์

บทเรียน 4 จาก 413 ขั้นตอน

วัดการเพิ่มความเร็ว เป็นบทเรียน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. เคอร์เนลคูณเมทริกซ์แบบพื้นฐาน
  2. แบ่งผลคูณภายในเป็นไทล์
  3. วนซ้ำตามช่วงของไทล์
  4. วัดการเพิ่มความเร็ว
← กลับไปที่ CUDA Academy