0Pricing
CUDA Academy · บทเรียน

เลือกจำนวนเธรดต่อบล็อก

ค่าเริ่มต้นที่เหมาะสม เช่น 128 และ 256

เลือกจำนวนเธรดต่อบล็อก เป็นบทเรียน CUDA Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน CUDA Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส CUDA Academy มีบทเรียนทั้งหมด 4 บทเรียน

การตัดสินใจที่มีผลจริง

เมื่อคุณเริ่มทำงานด้วยเคอร์เนล คุณต้องเลือกว่าจะใช้ เธรดต่อบล็อกจำนวนเท่าใด ตัวเลือกเล็ก ๆ นี้ส่งผลต่อประสิทธิภาพจริง

พหุคูณของ 32

GPU ทำงานด้วยเธรดเป็นกลุ่มละ 32 เธรด เรียกว่าการจัดกลุ่มแบบเวิร์ป ดังนั้นให้เลือกจำนวนที่เป็น พหุคูณของ 32 เสมอ ขนาดที่ไม่ลงตัวจะทำให้ช่องประมวลผลในเวิร์ปที่ไม่เต็มสูญเปล่า

ค่าเริ่มต้นที่ปลอดภัย

ค่าที่เหมาะสำหรับเริ่มต้นคือ 128 หรือ 256 เธรดต่อบล็อก ทั้งสองค่าเป็นพหุคูณของ 32 และทำงานได้ดีบน GPU เกือบทุกรุ่น

int threadsPerBlock = 256;

ขีดจำกัดบนที่แน่นอน

บน GPU รุ่นปัจจุบัน บล็อกหนึ่งมีได้ไม่เกิน 1024 เธรด หากขอมากกว่านี้ การเริ่มทำงานจะล้มเหลวพร้อมข้อผิดพลาด

เธรดน้อยเกินไป

บล็อกที่เล็กมาก เช่น 32 เธรด อาจทำให้ GPU ถูกใช้งานไม่เต็มที่ ตัวจัดตารางจะมี เวิร์ปน้อยลงสำหรับใช้ซ่อนเวลาหน่วงของหน่วยความจำ

เธรดมากเกินไป

บล็อกขนาดใหญ่อาจใช้รีจิสเตอร์หรือหน่วยความจำร่วมจนหมด ทำให้มีบล็อกต่อหนึ่งตัวประมวลผลหลายตัวได้น้อยลง ขนาดใหญ่กว่าไม่ได้ดีกว่าเสมอไป

การคำนวณจำนวนบล็อก

เมื่อกำหนดจำนวนเธรดต่อบล็อกแล้ว ให้ปัดจำนวน บล็อกขึ้นเพื่อให้ครอบคลุมทุกองค์ประกอบ แม้จำนวนดังกล่าวจะหารกันไม่ลงตัว

int blocks = (n + threadsPerBlock - 1) / threadsPerBlock;

เพิ่มการตรวจสอบขอบเขตเสมอ

การปัดขึ้นหมายความว่าจะมี เธรดเกินมาเล็กน้อย ให้ป้องกันเคอร์เนลด้วยคำสั่ง if เพื่อไม่ให้เธรดเหล่านั้นเข้าถึงหน่วยความจำเลยจุดสิ้นสุดของอาร์เรย์

if (i < n) out[i] = a[i] + b[i];

ให้ CUDA แนะนำขนาด

คุณสามารถขอให้ CUDA เลือก ขนาดบล็อกที่เหมาะสมโดยอัตโนมัติด้วยตัวช่วยประเมินการใช้ทรัพยากร แล้วจึงปรับแต่งจากคำแนะนำนั้น

cudaOccupancyMaxPotentialBlockSize(&grid, &block, kernel);

วัดผล อย่าเดา

ขนาดที่ดีที่สุดจริง ๆ ขึ้นอยู่กับเคอร์เนลและ GPU ของคุณ เริ่มที่ 256 จากนั้น ทดสอบประสิทธิภาพค่าบางค่าแล้วเลือกค่าที่เร็วที่สุด

กฎที่ใช้ได้จริง

สำหรับเคอร์เนลระดับเริ่มต้นส่วนใหญ่ การใช้ เธรดต่อบล็อก 256 เธรดร่วมกับจำนวนบล็อกที่ปัดขึ้น เป็นจุดเริ่มต้นที่เชื่อถือได้และรวดเร็ว

ตรวจสอบอย่างรวดเร็ว

เลือกตัวเลือกที่เหมาะสมที่สุดสำหรับจำนวนเธรดต่อบล็อก

สรุป: การกำหนดขนาดบล็อก

คุณได้เรียนรู้การกำหนดขนาดบล็อกแล้ว: ใช้ พหุคูณของ 32 ตั้งต้นที่ 256 อย่าเกิน 1024 ปัดจำนวนบล็อกขึ้น และทดสอบประสิทธิภาพ 🏁

คำถามที่พบบ่อย

บทเรียน “เลือกจำนวนเธรดต่อบล็อก” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “เลือกจำนวนเธรดต่อบล็อก” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส CUDA Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส CUDA Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “เลือกจำนวนเธรดต่อบล็อก”

ค่าเริ่มต้นที่เหมาะสม เช่น 128 และ 256 คุณปฏิบัติ CUDA Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน CUDA Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน CUDA Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “เลือกจำนวนเธรดต่อบล็อก” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน CUDA Academy นี้ได้ไหม

ได้ บทเรียน CUDA Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

  1. ลำดับชั้นของเธรด
  2. threadIdx, blockIdx, blockDim
  3. ทำไมจึงมีบล็อก
  4. เลือกจำนวนเธรดต่อบล็อก
← กลับไปที่ CUDA Academy