0Pricing
CUDA Academy · درس

شرح cudaDeviceSynchronize

لماذا يجب على CPU انتظار GPU.

شرح cudaDeviceSynchronize درس مجاني في CUDA Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في CUDA Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة CUDA Academy 4 دروس في المجموع.

لا ينتظر CPU

بعد الإطلاق، يتابع CPU التنفيذ بينما لا يزال GPU يعمل. وللتوقف والانتظار، تستدعي cudaDeviceSynchronize. ⏳

myKernel<<<g, b>>>(p);
cudaDeviceSynchronize();

ماذا تعني المزامنة؟

تحجب cudaDeviceSynchronize المضيف حتى تنتهي كل مهام GPU الموجودة في قائمة الانتظار. عندها فقط يُنفَّذ سطر CPU التالي.

لماذا تحتاج إليها؟

من دون المزامنة، قد تقرأ نتائج لم يكتبها GPU بعد. وتضمن المزامنة أن النواة قد انتهت فعلًا.

تفريغ ناتج printf

كما أنها تفرّغ printf الخاصة بالجهاز. إذا طبعت النواة ولم يظهر شيء، فغالبًا يكون السبب غياب المزامنة.

hi<<<1, 4>>>();
cudaDeviceSynchronize(); // now you see it

تعيد رمز خطأ

يعيد الاستدعاء قيمة من النوع cudaError_t. وغالبًا ما يكشف الفشل هنا عن تعطل حدث داخل النواة.

cudaError_t e = cudaDeviceSynchronize();

اكتشاف أعطال النواة الخفية

تفشل النوى بصمت، لذا فإن التحقق من رمز الخطأ الناتج عن المزامنة هو طريقة اكتشاف الوصول خارج الحدود أو الإطلاق غير الصحيح.

if (e != cudaSuccess) printf("kernel failed\n");

تجري cudaMemcpy المزامنة أيضًا

ينتظر استدعاء cudaMemcpy عادي إلى المضيف GPU أيضًا. وفي هذه الحالة الشائعة قد لا تحتاج إلى مزامنة منفصلة.

cudaMemcpy(host, dev, n, cudaMemcpyDeviceToHost);

لا تفرط في المزامنة

يؤدي استدعاء المزامنة بعد كل خطوة إلى إيقاف التداخل وإبطائك. نفّذ المزامنة فقط عندما تحتاج فعلًا إلى قراءة النتائج أو قياس الوقت.

المزامنة لأجل القياس الزمني

لقياس زمن النواة بدقة، نفّذ المزامنة قبل القياس وبعده. وإلا فسيقيس المؤقت سرعة وضع CPU للعمل في قائمة الانتظار فقط.

cudaDeviceSynchronize();
// start timer ... kernel ... sync ... stop

مزامنة الدفق أضيق نطاقًا

لتحكم أدق، تنتظر cudaStreamSynchronize دفقًا واحدًا بدلًا من الجهاز بأكمله. وهذا مفيد جدًا عند تداخل الأعمال.

cudaStreamSynchronize(stream);

عادة أولى آمنة

أثناء التعلم، نفّذ المزامنة بعد كل إطلاق وتحقق من النتيجة. وبعد استقرار الشفرة، أزل عمليات المزامنة الإضافية لتحسين السرعة.

تحقق سريع

تحقق من مدى فهمك للمزامنة.

مراجعة: المزامنة

تجعل cudaDeviceSynchronize CPU ينتظر GPU، وتفرّغ printf، وتكشف الأعطال الخفية. استخدمها بحكمة، لا في كل مكان. 🎉

الأسئلة الشائعة

هل درس «شرح cudaDeviceSynchronize» مجاني؟

نعم — نص درس «شرح cudaDeviceSynchronize» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة CUDA Academy، انتقل إلى CoddyKit PRO. تتضمن دورة CUDA Academy 4 دروس في المجموع.

ماذا ستتعلم في «شرح cudaDeviceSynchronize»؟

لماذا يجب على CPU انتظار GPU. تتمرن على CUDA Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ CUDA Academy؟

لا تُشترط خبرة سابقة. CUDA Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «شرح cudaDeviceSynchronize»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس CUDA Academy هذا؟

نعم. كل درس في CUDA Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. تشريح النواة
  2. التشغيل بأقواس الزوايا الثلاثية
  3. استخدام printf داخل النواة
  4. شرح cudaDeviceSynchronize
← العودة إلى CUDA Academy