CUDA Academy · บทเรียน

ธุรกรรมหน่วยความจำคืออะไร

บรรทัดแคชและเซกเมนต์ขนาด 32/128 ไบต์

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

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

หน่วยความจำมาเป็นชุด

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

วาร์ปส่งคำขอพร้อมกัน

วาร์ปที่มี 32 เธรดจะส่งคำขอโหลดพร้อมกัน ฮาร์ดแวร์จะรวบรวมคำขอทั้ง 32 รายการและพยายามให้บริการด้วยจำนวนธุรกรรมน้อยที่สุด

บรรทัดแคชและเซกเมนต์

หน่วยความจำส่วนกลางถูกแบ่งเป็นเซกเมนต์ที่จัดแนวไว้ โดยทั่วไปมีขนาด 32 หรือ 128 ไบต์ แต่ละธุรกรรมจะดึงเซกเมนต์ทั้งหมดหนึ่งเซกเมนต์ ไม่เคยดึงเพียงบางส่วน

เหตุใด 128 ไบต์จึงสำคัญ

บรรทัดขนาด 128 ไบต์เก็บค่า float ขนาดสี่ไบต์ได้พอดี 32 ค่า ซึ่งเท่ากับหนึ่งค่าต่อเธรดในวาร์ป ดังนั้นวาร์ปที่จัดเรียงอย่างเป็นระเบียบจึงให้บริการได้ด้วยธุรกรรมเดียว

// 32 threads x 4-byte float = 128 bytes = one line

การจัดแนวคือกุญแจสำคัญ

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

จ่ายให้กับไบต์ที่คุณไม่ได้ใช้

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

นับจำนวนธุรกรรม

ประสิทธิภาพมักขึ้นอยู่กับตัวเลขเพียงตัวเดียว: วาร์ปต้องใช้ธุรกรรมกี่รายการ ยิ่งมีธุรกรรมน้อย ก็ยิ่งอ่านข้อมูลน้อยและทำงานเสร็จเร็วขึ้น

กรณีที่ดีที่สุด

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

float v = data[blockIdx.x * blockDim.x + threadIdx.x];

กรณีที่แย่ที่สุด

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

แบนด์วิดท์คือข้อจำกัด

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

เตรียมพื้นฐาน

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

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

ทดสอบความเข้าใจของคุณเกี่ยวกับขนาดธุรกรรม

ทบทวน

คุณได้เรียนรู้ว่า GPU ย้ายหน่วยความจำเป็นเซกเมนต์ขนาดคงที่ และวาร์ปจะได้รับบริการด้วยจำนวนธุรกรรมน้อยที่สุดเท่าที่ทำได้ ธุรกรรมน้อยลง เคอร์เนลก็เร็วขึ้น 🎉

เริ่มต้นได้ฟรี

เรียนรู้ C++ ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
30
บทเรียน
120

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

บทเรียน “ธุรกรรมหน่วยความจำคืออะไร” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “ธุรกรรมหน่วยความจำคืออะไร”

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

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

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

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

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

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

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

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

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