خط أنابيب التخزين المزدوج
قسّم البيانات إلى أجزاء لإبقاء GPU مزوّدًا بالعمل.
خط أنابيب التخزين المزدوج درس مجاني في CUDA Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في CUDA Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة CUDA Academy 4 دروس في المجموع.
مشكلة وحدة GPU الخاملة
انسخ مصفوفة ضخمة، ثم شغّل نواة، ثم انسخ البيانات مجددًا. أثناء كل عملية نسخ تظل وحدة GPU خاملة، وأثناء الحساب تظل محركات النقل خاملة.
قسّم العمل
يبدأ الحل بتقسيم مصفوفة عملاقة واحدة إلى أجزاء أصغر. يمكن نسخ كل جزء ومعالجته على حدة، مما يفتح المجال للتداخل.
مخزنان مؤقتان، ومساران
يستخدم التخزين المؤقت المزدوج مخزنين مؤقتين على الجهاز واثنين من التدفقات. وبينما يحسب التدفق A على جزء، ينسخ التدفق B الجزء التالي إلى الداخل.
تداخل النسخ والحساب
يكمن السحر في التزامن: تعمل عملية نقل ونواة في الوقت نفسه على جزأين مختلفين. ويختفي زمن النقل خلف الحساب المفيد.
الذاكرة المثبتة مطلوبة
لا يعمل هذا إلا إذا كانت بيانات المضيف موجودة في ذاكرة مثبتة. فالمخازن المؤقتة القابلة للصفحات تفرض نسخًا متزامنًا، وينهار خط المعالجة بأكمله ويعود إلى التنفيذ التسلسلي.
حلقة خط المعالجة
تكرر العملية على الأجزاء، وفي كل خطوة تصدر نسخة غير متزامنة إلى الداخل، ثم نواة، ثم نسخة غير متزامنة إلى الخارج، وكل ذلك في التدفق نفسه.
cudaMemcpyAsync(d_in, h_in + off, csz, H2D, s);
proc<<<g, b, 0, s>>>(d_in, d_out);
cudaMemcpyAsync(h_out + off, d_out, csz, D2H, s);بدّل بين التدفقات
عيّن كل جزء إلى تدفق عبر التناوب بين التدفقات. تذهب الأجزاء الزوجية إلى التدفق 0، والفردية إلى التدفق 1، بحيث تتداخل الأجزاء المتجاورة بسلاسة.
cudaStream_t s = streams[i % 2];لماذا يكفي اثنان
يحقق تدفقان بالفعل تداخل النسخ مع الحساب. وتضيف المخازن المؤقتة الإضافية عمقًا، لكنها تحقق فوائد متناقصة وتستهلك ذاكرة إضافية، لذا ابدأ باثنين.
أفرغ قائمة الانتظار في النهاية
بعد وضع كل جزء في قائمة الانتظار، انتظر حتى يكتمل كل العمل قبل قراءة النتائج. يفرغ cudaDeviceSynchronize البسيط جميع التدفقات دفعة واحدة.
cudaDeviceSynchronize();تسارع الأداء
عندما يختفي النسخ خلف الحساب، يقترب الزمن الإجمالي من تكلفة الجزء الأطول من الاثنين، لا من مجموعهما. تلك هي الفائدة الحقيقية. 🚀
متى يكون أكثر فاعلية
يبرز التخزين المؤقت المزدوج عندما يكون زمن النقل وزمن الحساب متوازنين تقريبًا. وإذا هيمن أحدهما تمامًا، فركّز جهودك أولًا على تقليص ذلك الجانب.
تحقق سريع
ما الفائدة الأساسية لخط معالجة يستخدم التخزين المؤقت المزدوج؟
مراجعة
قسّم البيانات إلى أجزاء، واستخدم مخزنين مؤقتين مثبتين وتدفقين، وحقّق تداخل النسخ مع الحساب. أجرِ المزامنة في النهاية، وشاهد زمن النقل يختفي. 🎉
تعلم C++ مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 30
- الدروس
- 120
الأسئلة الشائعة
هل درس «خط أنابيب التخزين المزدوج» مجاني؟
نعم — نص درس «خط أنابيب التخزين المزدوج» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة CUDA Academy، انتقل إلى CoddyKit PRO. تتضمن دورة CUDA Academy 4 دروس في المجموع.
ماذا ستتعلم في «خط أنابيب التخزين المزدوج»؟
قسّم البيانات إلى أجزاء لإبقاء GPU مزوّدًا بالعمل. تتمرن على CUDA Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ CUDA Academy؟
لا تُشترط خبرة سابقة. CUDA Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «خط أنابيب التخزين المزدوج»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس CUDA Academy هذا؟
نعم. كل درس في CUDA Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- لماذا الذاكرة القابلة لترحيل الصفحات بطيئة
- الذاكرة المثبّتة باستخدام cudaMallocHost
- استخدام cudaMemcpyAsync في Stream
- خط أنابيب التخزين المزدوج