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

ทำไมจึงมีบล็อก

ความเป็นอิสระ การจัดตาราง และการขยายระบบ

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

ทำไมไม่ใช้แค่เธรด

คุณอาจสงสัยว่าเหตุใด CUDA จึงต้องจัดกลุ่มเธรดเป็น บล็อก คำตอบเกี่ยวข้องกับการจัดตารางและการขยายขนาด 🤔

บล็อกคือหน่วยของการจัดตาราง

GPU จะมอบ บล็อกทั้งบล็อกให้กับตัวประมวลผลหลายตัวแบบสตรีมของตน บล็อกคือกลุ่มงานที่ฮาร์ดแวร์จัดตารางให้ทำงานเป็นหน่วยเดียว

ความเป็นอิสระโดยการออกแบบ

บล็อกต้องทำงานอย่าง อิสระต่อกัน ทำงานตามลำดับใดก็ได้ และไม่มีการรับประกันว่าจะสื่อสารกันได้ กฎนี้ทำให้เคอร์เนลทำงานได้กับ GPU รุ่นต่าง ๆ

ขยายขนาดได้โดยไม่ต้องทำอะไรเพิ่ม

GPU ขนาดเล็กทำงานครั้งละไม่กี่บล็อก ส่วน GPU ขนาดใหญ่ทำงานได้หลายบล็อก ความเป็นอิสระทำให้โค้ดเดียวกัน ขยายขนาดได้โดยที่คุณไม่ต้องเปลี่ยนแม้แต่บรรทัดเดียว

การทำงานร่วมกันภายในบล็อก

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

ขอบเขตการประสานงาน

จุดกั้นอย่าง __syncthreads ทำงานได้เฉพาะภายใน บล็อกเท่านั้น ไม่มีวิธีที่มีมาในตัวสำหรับประสานงานข้ามกริดทั้งหมดระหว่างที่เคอร์เนลกำลังทำงาน

__syncthreads();

เหตุใดจึงไม่มีการประสานงานระดับสากล

หากบล็อกทั้งหมดรอกันเองได้ GPU อาจเกิดการหยุดชะงักถาวรเมื่อไม่สามารถจัดบล็อกทั้งหมดลงในเครื่องได้พร้อมกัน การรักษาให้บล็อก เป็นอิสระจึงช่วยหลีกเลี่ยงปัญหานี้

บล็อกช่วยซ่อนเวลาหน่วง

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

ทรัพยากรจัดสรรต่อบล็อก

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

มีบล็อกจำนวนมากย่อมดี

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

สิ่งที่ต้องแลกเปลี่ยนครั้งใหญ่

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

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

ลองคิดดูว่าความเป็นอิสระของบล็อกให้อะไรแก่คุณ

สรุป: จุดประสงค์ของบล็อก

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

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

บทเรียน “ทำไมจึงมีบล็อก” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “ทำไมจึงมีบล็อก”

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

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

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

บทเรียน “ทำไมจึงมีบล็อก” ใช้เวลานานแค่ไหน

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

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

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

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

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