CUDA Academy · บทเรียน

ย้ายหน้าหน่วยความจำตามต้องการ

ข้อผิดพลาดทำให้ข้อมูลย้ายไปยังตำแหน่งที่ถูกใช้งาน

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

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

ข้อมูลอยู่ที่ใด

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

หน่วยความจำแบ่งเป็นหน้า

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

ข้อผิดพลาดของหน้าจะเป็นตัวกระตุ้น

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

ข้อมูลย้ายตามการเข้าถึง

กฎนั้นเรียบง่าย ข้อมูลจะ ย้ายไปยังผู้ที่ใช้งาน หากเขียนบน CPU หน้าจะอยู่ที่ CPU หากอ่านในเคอร์เนล หน้าจะย้ายไปยัง GPU

การเข้าถึงครั้งแรกช้าที่สุด

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

การย้ายไปมาทำให้ช้าลง

หาก CPU และ GPU เข้าถึงหน้าเดิมสลับกันไปมา หน้าเหล่านั้นจะเด้งกลับไปกลับมา การย้ายแบบ ไปกลับนี้อาจทำให้อัตราการประมวลผลโดยรวมลดลงอย่างมากโดยไม่รู้ตัว

ข้อผิดพลาดสะสมกัน

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

ความใกล้เคียงของข้อมูลยังสำคัญ

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

อนุญาตให้จัดสรรเกินขนาดได้

การย้ายข้อมูลทำให้คุณจัดสรรหน่วยความจำได้มากกว่าที่ GPU มี หน้าใหม่จะถูกนำเข้ามาตามต้องการ และหน้าเก่าจะถูก นำออก ดังนั้นชุดข้อมูลขนาดใหญ่ยังทำงานได้ เพียงแต่ช้าลง

คุณมองเห็นข้อผิดพลาดได้

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

สะดวกแต่มีข้อแลกเปลี่ยน

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

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

มาทำให้แน่ใจกันว่าคุณทราบว่าอะไรเป็นตัวเริ่มการย้ายข้อมูล

ทบทวน: การย้ายตามความต้องการ

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

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

เรียนรู้ 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 ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

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

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

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

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

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

  1. พอยน์เตอร์เดียว ใช้ได้ทั้งสองฝั่ง
  2. ย้ายหน้าหน่วยความจำตามต้องการ
  3. ดึงข้อมูลล่วงหน้าด้วย cudaMemPrefetchAsync
  4. ให้คำแนะนำผ่าน cudaMemAdvise
← กลับไปที่ CUDA Academy