threadIdx وblockIdx وblockDim
المتغيرات المدمجة التي تحدد موقع الخيط.
threadIdx وblockIdx وblockDim درس مجاني في CUDA Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في CUDA Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة CUDA Academy 4 دروس في المجموع.
أين أنا؟
ينفذ كل خيط الشفرة نفسها، لذلك يحتاج كل خيط إلى أن يسأل: أي جزء من البيانات يخصني؟ تجيب CUDA عن ذلك باستخدام متغيرات مضمّنة. 📍
تعرّف إلى threadIdx
داخل النواة، يخبر threadIdx الخيط بموضعه داخل كتلته. ويكون threadIdx.x للخيط الأول في الكتلة مساويًا لـ 0.
int t = threadIdx.x;تعرّف إلى blockIdx
يخبر المتغير blockIdx الخيط بالكتلة التي ينتمي إليها ضمن الشبكة. ويبدأ ترقيم الكتل أيضًا من 0.
int b = blockIdx.x;تعرّف إلى blockDim
تحصل أيضًا على blockDim، وهو عدد الخيوط في كل كتلة. فإذا أطلقت 256 خيطًا، فستكون قيمة blockDim.x هي 256 لكل خيط.
int width = blockDim.x;تلقائية
لا تضبط هذه المتغيرات بنفسك مطلقًا. إذ تملؤها CUDA لكل خيط فور إطلاق النواة.
حقول .x و.y و.z
يحتوي كل منها على حقول x وy وz لعمليات الإطلاق أحادية الأبعاد أو ثنائية الأبعاد أو ثلاثية الأبعاد. وبالنسبة إلى المصفوفات البسيطة، ستتعامل عادةً مع الحقل x فقط.
دمجها
بمفرده، يتكرر threadIdx في كل كتلة. وللحصول على موضع فريد، يجب أن تدمج blockIdx وblockDim مع threadIdx.
شرح موجز
مع blockDim يساوي 4، يكون الخيط 2 في الكتلة 0 هو العنصر 2، بينما يكون الخيط 2 في الكتلة 1 هو العنصر 6. إذ تغيّر الكتلة نقطة البداية.
مساعدات للقراءة فقط
هذه العناصر المضمّنة للقراءة فقط داخل النواة. تعامل معها بوصفها إحداثيات موثوقة تصف الموضع الدقيق لخيطك.
وأيضًا gridDim
هناك عنصر مساعد آخر: يحتفظ gridDim بالعدد الإجمالي للكتل في الشبكة. ويفيد ذلك عند تكرار المعالجة على بيانات أكثر من عدد الخيوط.
int blocks = gridDim.x;لماذا يهم ذلك
هذه المتغيرات الثلاثة هي المواد الأساسية لحساب فهرس عام، وهو ما يمكّن كل خيط من حجز عنصره الخاص.
اختبار سريع
اختر المتغير الذي يؤدي المهمة المذكورة.
مراجعة: تحديد موضع خيط
تعرّفت إلى العناصر المضمّنة: threadIdx لتحديد الموضع داخل الكتلة، وblockIdx لتحديد الكتلة، وblockDim لتحديد حجم الكتلة. وتحدد هذه العناصر معًا موضع الخيط بدقة. ✅
الأسئلة الشائعة
هل درس «threadIdx وblockIdx وblockDim» مجاني؟
نعم — نص درس «threadIdx وblockIdx وblockDim» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة CUDA Academy، انتقل إلى CoddyKit PRO. تتضمن دورة CUDA Academy 4 دروس في المجموع.
ماذا ستتعلم في «threadIdx وblockIdx وblockDim»؟
المتغيرات المدمجة التي تحدد موقع الخيط. تتمرن على CUDA Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ CUDA Academy؟
لا تُشترط خبرة سابقة. CUDA Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «threadIdx وblockIdx وblockDim»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس CUDA Academy هذا؟
نعم. كل درس في CUDA Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- هرمية الخيوط
- threadIdx وblockIdx وblockDim
- لماذا توجد الكتل
- اختيار عدد الخيوط لكل كتلة