อีเวนต์สำหรับจับเวลาและซิงค์
ใช้ cudaEvent วัดและจัดลำดับงาน
อีเวนต์สำหรับจับเวลาและซิงค์ เป็นบทเรียน CUDA Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน CUDA Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส CUDA Academy มีบทเรียนทั้งหมด 4 บทเรียน
อีเวนต์คืออะไร
อีเวนต์ ของ CUDA คือเครื่องหมายที่คุณแทรกไว้ในสตรีม GPU จะบันทึกเวลาที่ทำงานมาถึงจุดนั้น ทำให้คุณจับเวลาและจัดลำดับงานได้ ⏱️
แฮนเดิลของอีเวนต์
อีเวนต์ใช้แฮนเดิล cudaEvent_t เช่นเดียวกับสตรีม คุณสร้าง บันทึก ตรวจสอบ และทำลายอีเวนต์เมื่อใช้งานเสร็จ
cudaEvent_t start, stop;การสร้างอีเวนต์
เรียกใช้ cudaEventCreate สำหรับอีเวนต์แต่ละรายการที่ต้องการ โดยทั่วไปการจับเวลาจะใช้สองรายการ รายการหนึ่งก่อนเริ่มงานและอีกรายการหลังงานเสร็จ
cudaEventCreate(&start);
cudaEventCreate(&stop);การบันทึกอีเวนต์
cudaEventRecord จะวางอีเวนต์ลงในสตรีม GPU จะประทับเวลาให้อีเวนต์ทันทีที่ทำงานทุกอย่างที่อยู่ในคิวก่อนหน้านั้นเสร็จ
cudaEventRecord(start, stream);การจับเวลาเคอร์เนล
บันทึกจุดเริ่มต้น เปิดใช้เคอร์เนล แล้วบันทึกจุดสิ้นสุด โดยทำทั้งหมดในสตรีมเดียวกัน ช่วงเวลาระหว่างสองจุดนี้คือเวลา ประมวลผลจริงบน GPU
cudaEventRecord(start, s);
kernel<<<g, b, 0, s>>>(d);
cudaEventRecord(stop, s);การรออีเวนต์
อีเวนต์ทำงานแบบอะซิงโครนัส ดังนั้นโฮสต์จึงต้องรอ cudaEventSynchronize จะบล็อกจนกว่าอีเวนต์ที่ระบุจะถูกบันทึกบน GPU จริง
cudaEventSynchronize(stop);การวัดเวลาที่ผ่านไป
cudaEventElapsedTime จะคืนค่าจำนวนมิลลิวินาทีระหว่างอีเวนต์ที่บันทึกไว้สองรายการ วิธีนี้แม่นยำนาฬิกา CPU ฝั่งโฮสต์มาก
float ms;
cudaEventElapsedTime(&ms, start, stop);เหตุใดจึงไม่ใช้นาฬิกา CPU
ตัวจับเวลาฝั่งโฮสต์รวมเวลาส่วนเกินจากการเปิดใช้และพลาดเวลาจริงของ GPU อีเวนต์อยู่ ภายในสตรีม จึงจับสิ่งที่อุปกรณ์ทำได้อย่างแม่นยำ
การจัดลำดับข้ามสตรีม
อีเวนต์ยังใช้ซิงโครไนซ์สตรีมได้ด้วย cudaStreamWaitEvent จะทำให้สตรีมหนึ่งหยุดรอจนกว่าอีเวนต์ที่บันทึกไว้ในอีกสตรีมจะเกิดขึ้น
cudaStreamWaitEvent(streamB, eventA, 0);การสร้างการขึ้นต่อกัน
ด้วยการรออีเวนต์จากสตรีม คุณสามารถระบุ การขึ้นต่อกัน ได้ว่า streamB จะเริ่มงานก็ต่อเมื่อ streamA ไปถึงอีเวนต์ของตน โดยไม่บล็อกโฮสต์
การล้างอีเวนต์
คืนทรัพยากรอีเวนต์ที่ไม่ต้องใช้แล้วด้วย cudaEventDestroy เช่นเดียวกับสตรีม อีเวนต์ใช้ทรัพยากรไม่มาก แต่ไม่ควรปล่อยให้รั่วไหลในแอปที่ทำงานเป็นเวลานาน
cudaEventDestroy(start);
cudaEventDestroy(stop);ตรวจสอบความเข้าใจอย่างรวดเร็ว
ฟังก์ชันใดใช้ดูเวลาระหว่างอีเวนต์สองรายการ
ทบทวน
อีเวนต์ ช่วยให้คุณจับเวลางานบน GPU ได้อย่างแม่นยำ และจัดให้งานในสตรีมหนึ่งทำงานหลังอีกสตรีมหนึ่งได้ อีเวนต์คือเครื่องมือสำหรับวัดและประสานการทำงานซ้อนกัน 🎯
เรียนรู้ C++ ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 30
- บทเรียน
- 120
คำถามที่พบบ่อย
บทเรียน “อีเวนต์สำหรับจับเวลาและซิงค์” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “อีเวนต์สำหรับจับเวลาและซิงค์” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส CUDA Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส CUDA Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “อีเวนต์สำหรับจับเวลาและซิงค์”
ใช้ cudaEvent วัดและจัดลำดับงาน คุณปฏิบัติ CUDA Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน CUDA Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน CUDA Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “อีเวนต์สำหรับจับเวลาและซิงค์” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน CUDA Academy นี้ได้ไหม
ได้ บทเรียน CUDA Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- กับดักของสตรีมเริ่มต้น
- สร้างและใช้สตรีม
- อีเวนต์สำหรับจับเวลาและซิงค์
- ทำการคัดลอกและคำนวณซ้อนกัน