Cublas أو المكتبات المدعومة ، والتركيز على القراءة للمبتدئين

StackOverflow https://stackoverflow.com/questions/1549920

  •  20-09-2019
  •  | 
  •  

سؤال

أحاول تسخير قوة GPU (NVIDIA Quadro NVS140M) لتسريع بعض حسابات المصفوفة في مشروعي. أنا أقرأ بعض الوثائق (دليل البرمجة ، دليل أفضل الممارسات ، ودليل مرجعي) ، ولكن لست متأكدًا من القسم (القسم) الذي يجب أن أركز عليه. سيكون من الرائع أن أتمكن من تلقي بعض النصائح حول هذا الموضوع.

وأيضًا ، أتساءل عما إذا كان هناك SDKs التي تم الحفاظ عليها من طرف ثالث ، مثل cublas.net ، والتي قد تبسط عملية تطوير Cublas قبل التمسك بميزات Cublas المقدمة والتي من شأنها أن تساعدني على تحقيق أهدافي مع مشروعي. مرة أخرى ، شكرا مقدما على التعليقات.

هل كانت مفيدة؟

المحلول

معظم الوثائق التي تأتي مع تنزيلات CUDA Toolkit & SDK تدور حول CUDA بشكل عام ، وليس Cublas على وجه التحديد. ابدأ مع CUBLAS_Library_2.3.pdf ملف إذا كنت ستستخدم Cublas فقط-فلن تحتاج إلى كتابة حبات CUDA الخاصة بك. إذا كنت تستخدم بالفعل وحدة المعالجة المركزية BLAS ، فلا ينبغي أن يكون من الصعب التقاط Cublas. (وإذا لم تكن كذلك ، ففكر في تجربة وحدة المعالجة المركزية المحسنة قبل Cublas ، حيث سيكون من الأسهل البرنامج).

إذا كنت ترميز على .NET ، فإن أسهل طريقة لاستخدام Cublas هي على الأرجح عبر مكالمات منصة في cublas.dll. تأكد من الاحتفاظ باستمرار في المصفوفات في ذاكرة المضيف (CPU) ، والتي هي في ذاكرة الجهاز (GPU).

ضع في اعتبارك أن Cuda & Cublas ليسا رصاصات سحرية. يعتمد الأداء على الكثير من العوامل (وخاصة التحويلات عبر ناقل PCIe) ، ويبدو ببساطة تبديل Cublas لمكالمات CPU-BLAS قد لا يمنحك سرعات. قد تضطر إلى إجراء المزيد من التغييرات الكبيرة على التعليمات البرمجية الخاصة بك للحصول على تحسينات في الأداء. هذه الأدلة الأخرى التي ذكرتها مفيدة للغاية لفهم بنية CUDA واختناقاتها.

تحرير: لم أكن واضحًا بشأن الحدود بين رمز المستخدم ورمز kernel. Cublas هي مكتبة من نواة CUDA المحسنة مسبقًا. إذا كنت بحاجة فقط إلى وظيفة Blas ، فأنت لا تحتاج إلى كتابة نواةك الخاصة. بدلاً من ذلك ، فقط استدعاء وظائف Cublas. عند ضبط الأداء ، يجب ألا تحتاج إلى تعديل نواة Cublas ، ولكن قد تحتاج إلى تغيير كيف ومتى تتصل بها ، وكيف تستخدم الذاكرة ، وذلك لتقليل عدد عمليات النقل عبر ناقل PCI Express.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top