معالجة البلاطات الطرفية
تعامَل مع الحدود والحشو عند أطراف المصفوفة.
معالجة البلاطات الطرفية درس مجاني في CUDA Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في CUDA Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة CUDA Academy 4 دروس في المجموع.
مشكلة الحدود
نادرًا ما تنقسم المصفوفات الفعلية بالتساوي إلى بلاطات. فقد تتجاوز البلاطة الأخيرة عند كل حد نهاية البيانات.
قراءات خارج النطاق
سيقرأ الخيط الذي يتجاوز فهرسه العام حجم المصفوفة بيانات عشوائية أو يتسبب في تعطل البرنامج. لذلك يجب حماية كل وصول في البلاطات الطرفية.
فحص الحدود
أبسط حل هو استخدام شرط if (gid < n) حتى تتخطى الخيوط الواقعة بعد النهاية عملية التحميل ولا تنفذ عملًا ضارًا.
if (gid < n) tile[local] = in[gid];هالات تتجاوز الحافة
عند بداية المصفوفة، تشير الهالة اليسرى إلى ما قبل الفهرس صفر. لا يوجد جار حقيقي هناك، لذا يجب أن تقرروا ما الذي سيُحمَّل.
الاستراتيجية: الحشو بالأصفار
أحد الخيارات الشائعة هو الحشو بالأصفار: اعتبار الجيران المفقودين مساويين للصفر. وهو خيار بسيط ويعمل جيدًا مع المجاميع والعديد من المرشحات.
tile[local] = (gid < n) ? in[gid] : 0.0f;الاستراتيجية: التقييد بالحافة
خيار آخر هو تقييد الفهرس إلى أقرب خلية صالحة، مع تكرار قيمة الحد. ويمنع ذلك ظهور الحواف الداكنة في الصور.
اختيار القاعدة وفقًا للخوارزمية
تعتمد قاعدة الحدود الصحيحة على الحسابات. اختاروا الصفر أو التقييد أو الالتفاف حتى تطابق نتيجة الحافة ما تتوقعه مسألتكم.
احموا الناتج أيضًا
حتى بعد إتمام الحساب، يجب على الخيط التحقق قبل الكتابة حتى لا يخزّن نتيجة بعد نهاية مصفوفة الناتج.
if (gid < n) out[gid] = result;حافظوا على توحيد الحاجز
يجب أن تصل الخيوط الواقعة بعد البيانات أيضًا إلى __syncthreads. ضعوا فحص الحدود حول التحميل، لا حول الحاجز نفسه.
اختبروا الحواف أولًا
تختبئ معظم أخطاء التبليط عند الحدود. اختبروا دائمًا أحجامًا لا تمثل مضاعفات لحجم البلاطة، مثل n يساوي 1000 مع بلاطة حجمها 256.
الصحة أولًا ثم السرعة
تضيف معالجة الحواف بعض الشيفرة، لكنها تحافظ على نتائج صحيحة لكل حجم إدخال. احصلوا على الصحة أولًا، ثم حسّنوا الأداء.
تحقق سريع
كيف ينبغي للخيط أن يتعامل مع فهرس عام يتجاوز نهاية المصفوفة؟
مراجعة
تحتاج البلاطات الطرفية إلى فحوص حدود وقاعدة للحدود (الصفر أو التقييد أو الالتفاف) حتى يبقى كل حجم للمصفوفة صحيحًا. اختبروا الحدود. ✅
تعلم C++ مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 30
- الدروس
- 120
الأسئلة الشائعة
هل درس «معالجة البلاطات الطرفية» مجاني؟
نعم — نص درس «معالجة البلاطات الطرفية» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة CUDA Academy، انتقل إلى CoddyKit PRO. تتضمن دورة CUDA Academy 4 دروس في المجموع.
ماذا ستتعلم في «معالجة البلاطات الطرفية»؟
تعامَل مع الحدود والحشو عند أطراف المصفوفة. تتمرن على CUDA Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ CUDA Academy؟
لا تُشترط خبرة سابقة. CUDA Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «معالجة البلاطات الطرفية»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس CUDA Academy هذا؟
نعم. كل درس في CUDA Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- مشكلة إعادة استخدام البيانات
- نمط التحميل والمزامنة والحساب
- القوالب ونافذات الانزلاق
- معالجة البلاطات الطرفية