الأحداث لقياس الوقت والمزامنة
استخدم cudaEvent لقياس ترتيب العمل وتنظيمه.
الأحداث لقياس الوقت والمزامنة درس مجاني في CUDA Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 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 بدقة وترتيب تدفق بعد آخر. وهي أداتك لقياس التداخل وتنسيقه. 🎯
الأسئلة الشائعة
هل درس «الأحداث لقياس الوقت والمزامنة» مجاني؟
نعم — نص درس «الأحداث لقياس الوقت والمزامنة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة CUDA Academy، انتقل إلى CoddyKit PRO. تتضمن دورة CUDA Academy 4 دروس في المجموع.
ماذا ستتعلم في «الأحداث لقياس الوقت والمزامنة»؟
استخدم cudaEvent لقياس ترتيب العمل وتنظيمه. تتمرن على CUDA Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ CUDA Academy؟
لا تُشترط خبرة سابقة. CUDA Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «الأحداث لقياس الوقت والمزامنة»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس CUDA Academy هذا؟
نعم. كل درس في CUDA Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- مأزق Default Stream
- إنشاء Streams واستخدامها
- الأحداث لقياس الوقت والمزامنة
- تداخل النسخ والحساب