CUDA Academy · บทเรียน

วัดแบนด์วิดท์ที่ใช้งานได้จริง

เปรียบเทียบอัตราการส่งข้อมูลที่ทำได้กับค่าสูงสุด

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

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

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

  1. ธุรกรรมหน่วยความจำคืออะไร
  2. การอ่านแบบรวมกลุ่มเทียบกับแบบมีระยะก้าว
  3. โครงสร้างอาร์เรย์เทียบกับอาร์เรย์ของโครงสร้าง
  4. วัดแบนด์วิดท์ที่ใช้งานได้จริง
← กลับไปที่ CUDA Academy