اختيار عدد الخيوط لكل كتلة
إعدادات افتراضية معقولة مثل 128 و256.
اختيار عدد الخيوط لكل كتلة درس مجاني في CUDA Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في CUDA Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة CUDA Academy 4 دروس في المجموع.
قرار فعلي
عند إطلاق نواة، يجب أن تختار عدد الخيوط في كل كتلة الذي ستستخدمه. ويؤثر هذا الاختيار الصغير في الأداء الفعلي. 🎚️
مضاعفات العدد 32
تشغّل وحدة معالجة الرسوميات الخيوط في مجموعات من 32 خيطًا تُسمى warps، لذا اختر دائمًا مضاعفًا للعدد 32. وتهدر الأحجام الفردية مسارات في warp غير مكتمل.
قيم افتراضية آمنة
من التخمينات الأولى الجيدة استخدام 128 أو 256 خيطًا لكل كتلة. فكلاهما من مضاعفات العدد 32، ويعملان جيدًا على معظم وحدات معالجة الرسوميات.
int threadsPerBlock = 256;الحد الأعلى الصارم
يمكن للكتلة أن تحتوي على 1024 خيطًا كحد أقصى في وحدات معالجة الرسوميات الحالية. وإذا طلبت عددًا أكبر، فسيفشل الإطلاق ببساطة مع ظهور خطأ.
عدد قليل جدًا من الخيوط
قد تؤدي الكتل الصغيرة جدًا، مثل التي تحتوي على 32 خيطًا، إلى عدم الاستفادة الكاملة من وحدة معالجة الرسوميات. إذ يكون لدى وحدة الجدولة عدد أقل من warps لإخفاء زمن انتظار الذاكرة.
عدد كبير جدًا من الخيوط
قد تنفد السجلات أو الذاكرة المشتركة عند استخدام كتل ضخمة، ولذلك يتسع كل معالج متعدد الوحدات لعدد أقل من الكتل. فالأكبر ليس دائمًا أفضل.
حساب عدد الكتل
بعد تحديد عدد الخيوط في كل كتلة، قرّب عدد الكتل إلى الأعلى كي تتم تغطية كل العناصر، حتى إن لم ينقسم العدد بالتساوي.
int blocks = (n + threadsPerBlock - 1) / threadsPerBlock;أضف دائمًا فحص الحدود
يعني التقريب إلى الأعلى وجود بعض الخيوط الإضافية. احمِ نواتك باستخدام if كي لا تصل هذه الخيوط إلى ذاكرة تتجاوز حدود المصفوفة.
if (i < n) out[i] = a[i] + b[i];دع CUDA تقترح حجمًا
يمكنك أن تطلب من CUDA تحديد حجم الكتلة المناسب تلقائيًا باستخدام مساعد الإشغال، ثم تحسينه انطلاقًا من اقتراحه.
cudaOccupancyMaxPotentialBlockSize(&grid, &block, kernel);قِس، ولا تخمّن
يعتمد الحجم الأفضل فعليًا على النواة ووحدة معالجة الرسوميات لديك. ابدأ بـ 256، ثم أجرِ اختبار أداء لعدة قيم واحتفظ بالأسرع.
قاعدة عملية
بالنسبة إلى معظم النوى المخصصة للمبتدئين، يُعد استخدام 256 خيطًا لكل كتلة مع تقريب عدد الكتل إلى الأعلى نقطة بداية موثوقة وسريعة.
اختبار سريع
اختر الخيار الأكثر ملاءمة لعدد الخيوط في كل كتلة.
مراجعة: تحديد حجم الكتل
تعلمت كيفية تحديد حجم الكتل: استخدم مضاعفات العدد 32، واجعل القيمة الافتراضية 256، ولا تتجاوز 1024، وقرّب عدد الكتل إلى الأعلى، وأجرِ اختبار أداء. 🏁
تعلم C++ مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 30
- الدروس
- 120
الأسئلة الشائعة
هل درس «اختيار عدد الخيوط لكل كتلة» مجاني؟
نعم — نص درس «اختيار عدد الخيوط لكل كتلة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة CUDA Academy، انتقل إلى CoddyKit PRO. تتضمن دورة CUDA Academy 4 دروس في المجموع.
ماذا ستتعلم في «اختيار عدد الخيوط لكل كتلة»؟
إعدادات افتراضية معقولة مثل 128 و256. تتمرن على CUDA Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ CUDA Academy؟
لا تُشترط خبرة سابقة. CUDA Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «اختيار عدد الخيوط لكل كتلة»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس CUDA Academy هذا؟
نعم. كل درس في CUDA Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- هرمية الخيوط
- threadIdx وblockIdx وblockDim
- لماذا توجد الكتل
- اختيار عدد الخيوط لكل كتلة