วัดแบนด์วิดท์ที่ใช้งานได้จริง
เปรียบเทียบอัตราการส่งข้อมูลที่ทำได้กับค่าสูงสุด
วัดแบนด์วิดท์ที่ใช้งานได้จริง เป็นบทเรียน CUDA Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน CUDA Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส CUDA Academy มีบทเรียนทั้งหมด 4 บทเรียน
จากทฤษฎีสู่ตัวเลข
การรวมการเข้าถึงช่วยได้ แต่คุณควรพิสูจน์ด้วยตัวเลข ตัวชี้วัดที่บอกผลลัพธ์ตามจริงคือแบนด์วิดท์ที่มีประสิทธิผลของเคอร์เนล ซึ่งวัดเป็นกิกะไบต์ต่อวินาที
ความหมายของคำว่าได้ผลจริง
แบนด์วิดท์ที่มีประสิทธิผลนับจำนวนไบต์ที่เคอร์เนลจำเป็นต้องใช้จริง แล้วหารด้วยเวลาที่ใช้ ตัวเลขนี้สะท้อนงานที่เกิดประโยชน์ ไม่ใช่บรรทัดที่สูญเปล่า
สูตรอย่างง่าย
นำจำนวนไบต์ที่อ่านมาบวกกับจำนวนไบต์ที่เขียน แล้วหารด้วยจำนวนวินาทีที่ผ่านไป อัตราส่วนนี้คืออัตรารับส่งข้อมูลที่ทำได้
double gbps = (bytesRead + bytesWritten) / seconds / 1e9;จับเวลาด้วยเหตุการณ์
ใช้เหตุการณ์ของ CUDA ครอบการทำงานของเคอร์เนล เหตุการณ์เหล่านี้จับเวลางานบน GPU ได้อย่างแม่นยำ โดยไม่ถูกรบกวนจากนาฬิกาฝั่ง CPU
cudaEventRecord(start);
myKernel<<<g, b>>>(...);
cudaEventRecord(stop);อ่านเวลาที่ผ่านไป
หลังจากซิงก์กับเหตุการณ์หยุดแล้ว ให้ CUDA คำนวณช่วงเวลา CUDA จะคืนค่าเป็นมิลลิวินาที ดังนั้นให้หารด้วยหนึ่งพันก่อนนำไปใส่ในสูตร
float ms;
cudaEventElapsedTime(&ms, start, stop);รู้จำนวนไบต์ของคุณ
สำหรับ C = A + B ที่มีจำนวนโฟลต n ค่า คุณจะอ่าน 2n ค่าและเขียน n ค่า รวมเป็นโฟลตที่เคลื่อนย้าย 3n ค่า คูณด้วยสี่เพื่อหาไบต์ที่เคลื่อนย้าย
size_t bytes = 3 * n * sizeof(float);ค้นหาค่าสูงสุดของคุณ
GPU ทุกตัวจะแสดงแบนด์วิดท์สูงสุดตามทฤษฎี ตัวเลขที่มีประสิทธิผลของคุณจะมีความหมายก็ต่อเมื่อพิจารณาเป็นสัดส่วนของขีดจำกัดสูงสุดนั้น
อัตราส่วนประสิทธิภาพ
หารค่าที่มีประสิทธิผลด้วยค่าสูงสุดเพื่อให้ได้เปอร์เซ็นต์ เคอร์เนลที่จำกัดด้วยหน่วยความจำและรวมการเข้าถึงได้ดีมักทำได้ 70 ถึง 90 เปอร์เซ็นต์ของค่าสูงสุด ส่วนเคอร์เนลที่มีระยะก้าวจะตกลงต่ำกว่านั้นมาก
วอร์มอัปก่อน
การเรียกใช้ครั้งแรกจะมีต้นทุนการตั้งค่าที่เกิดขึ้นเพียงครั้งเดียว ให้เรียกใช้เคอร์เนลหนึ่งครั้งเพื่อวอร์มอัป แล้วหาค่าเฉลี่ยจากการจับเวลาหลายครั้งเพื่อให้ได้ตัวเลขที่เสถียร
ให้เครื่องมือวิเคราะห์ช่วยยืนยัน
Nsight Compute รายงานอัตรารับส่งข้อมูลของหน่วยความจำโดยตรง คุณจึงตรวจสอบการคำนวณของคุณได้ นอกจากนี้ยังระบุไบต์ที่สูญเปล่าจากการรวมการเข้าถึงที่ไม่ดีด้วย 🔧
ใช้ผลลัพธ์เพื่อตัดสินใจ
อัตราส่วนต่ำหมายความว่าหน่วยความจำเป็นคอขวดของคุณ ดังนั้นให้ปรับปรุงการรวมการเข้าถึงและรูปแบบการจัดวาง หากอัตราส่วนสูง ให้มองหาสาเหตุของความเร็วที่อื่น
ตรวจสอบอย่างรวดเร็ว
คำนวณแบนด์วิดท์ที่มีประสิทธิผล
สรุปทบทวน
ตอนนี้คุณสามารถวัดแบนด์วิดท์ที่มีประสิทธิผลด้วยเหตุการณ์ เปรียบเทียบกับค่าสูงสุด และใช้อัตราส่วนเพื่อตัดสินใจว่าหน่วยความจำเป็นคอขวดของคุณหรือไม่ 🎉
เรียนรู้ 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ธุรกรรมหน่วยความจำคืออะไร
- การอ่านแบบรวมกลุ่มเทียบกับแบบมีระยะก้าว
- โครงสร้างอาร์เรย์เทียบกับอาร์เรย์ของโครงสร้าง
- วัดแบนด์วิดท์ที่ใช้งานได้จริง