CUDA Academy · درس

التحقق من النتيجة على CPU

قارن النتيجة بإجابة مرجعية.

الدرس 3 من 413 خطوة

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

ثِق، لكن تحقّق

إن عملت النواة دون تعطل، فهذا لا يثبت أنها correct. يجب أن تتحقق من الأرقام، لأن أخطاء المنطق الصامتة يسهل تفويتها. 🔍

احسب نتيجة مرجعية

أبسط فحص هو حلقة CPU عادية تنفّذ الحساب نفسه. وتكون هذه النتيجة reference مصدر الحقيقة الموثوق لديك.

for (int i = 0; i < n; i++)
    ref[i] = h_A[i] + h_B[i];

قارن عنصرًا بعنصر

مرّ على المصفوفتين وقارن كل نتيجة من GPU بالمرجع. وتكشف حلقة واحدة تمر على جميع العناصر n أي قيمة خاطئة.

for (int i = 0; i < n; i++)
    if (h_C[i] != ref[i]) { /* mismatch */ }

الأعداد العشرية ليست دقيقة تمامًا

عند التعامل مع الأعداد ذات الفاصلة العائمة، لا تختبر باستخدام المساواة التامة. ففروق التقريب الصغيرة تعني أنه ينبغي أن تقارن باستخدام tolerance صغيرة بدلًا من ذلك.

if (fabs(h_C[i] - ref[i]) > 1e-5f) { /* fail */ }

لماذا نستخدم التحمّل بدلًا من المساواة

قد تقوم وحدة معالجة الرسومات ووحدة المعالجة المركزية بالتقريب بترتيبين مختلفين، لذلك قد تختلف النتائج بفارق ضئيل جدًا. وتمتص قيمة صغيرة مثل epsilon‏ 1e-5 هذا التفاوت غير المؤذي.

عُدّ الأخطاء

بدلًا من التوقف عند أول اختلاف، تتبّع عدد الأخطاء. فمعرفة عدد العناصر التي تفشل تعطي مؤشرًا على نوع الخطأ الموجود.

int errors = 0;
if (fabs(h_C[i] - ref[i]) > 1e-5f) errors++;

اطبع نتيجة واضحة

اختم برسالة واحدة صريحة. فسطر واضح يتضمن PASS أو FAIL يغنيك عن التحديق في المصفوفات الخام.

printf(errors == 0 ? "PASS\n" : "FAIL: %d\n", errors);

تحقّق سريعًا من الحدود

تحب أخطاء الحدود العنصرين الأول والأخير. فطباعة C[0] و C[n-1] تمنحك نظرة سريعة للتحقق من السلامة قبل الحلقة الكاملة.

علامة خطأ الزيادة أو النقصان بمقدار واحد

إذا كان العنصر الأخير وحده خاطئًا تمامًا، فاشكك في حساب الحدود. فكثيرًا ما يؤدي حساب عدد الكتل أو شرط الحماية غير الصحيح إلى إسقاط آخر خيط.

تحقّق قبل التحسين

احرص دائمًا على تأكيد الصحة قبل ضبط الأداء للسرعة. فـ kernel سريع يعيد إجابات خاطئة أسوأ من آخر بطيء لكنه صحيح.

أبقِ التحقق موجودًا

اترك خطوة التحقق مفعّلة أثناء التطوير. فهي بمثابة اختبار تراجعي يلتقط الأخطاء لحظة تغييرك للـ kernel.

تحقّق سريعًا

كيف ينبغي مقارنة نتائج GPU ذات الفاصلة العائمة بمرجع CPU؟

مراجعة

تحقّقت من النتيجة باستخدام مرجع من CPU، ومقارنة بالتسامح، وعدّ للأخطاء، وسطر واضح يتضمن PASS أو FAIL. الصحة أولًا، دائمًا. ✅

البدء مجانًا

تعلم C++ مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
30
الدروس
120

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

هل درس «التحقق من النتيجة على CPU» مجاني؟

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

ماذا ستتعلم في «التحقق من النتيجة على CPU»؟

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

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

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

كم من الوقت يستغرق درس «التحقق من النتيجة على CPU»؟

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

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

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

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

  1. نواة جمع المتجهات
  2. توصيل جانب المضيف
  3. التحقق من النتيجة على CPU
  4. قياس أول تسارع لك
← العودة إلى CUDA Academy