تنفيذ تعليمات وحدة المعالجة المركزية/وحدة معالجة الرسومات من التعليمات البرمجية المدارة

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

  •  21-09-2019
  •  | 
  •  

سؤال

مع الأخذ في الاعتبار تعطيل تنفيذ البت ، ما هي الطريقة الموصى بها لتنفيذ التعليمات مقابل معالج أصلي من بيئة مُدارة عالية المستوى مثل VB.NET 2008 أو C#. بالإضافة إلى ذلك ، هل حقق أي شخص مماثلة في تنفيذ تعليمات GPU مقابل معالج الرسومات؟

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

المحلول

هناك عدد قليل من خيارات GPU لـ C#، للوصول المباشر دون العودة إلى P/استدعاء أو كتابة أغلفة C ++ الخاصة بك:

  • براهما مثيرة للاهتمام للغاية. يوفر الوصول إلى وحدة معالجة الرسومات مباشرة عبر مزود LINQ مخصص. يتضمن الرمز بعض عينات الأساليب الحسابية للغاية التي يتم تشغيلها على وحدة معالجة الرسومات ، وكلها مكتوبة في C# عبر LINQ.
  • Slimdx يوفر غلافًا لطيفًا .NET لجميع وظائف DirectX الرئيسية. مع تظليل مخصص ، يمكنك إجراء حساب على وحدة معالجة الرسومات عبر DirectX. ويشمل أيضًا دعم DX11 ، بحيث يمكنك استخدام تظليل الحساب مباشرة (إذا كان لديك الأجهزة الخاصة به).
  • يمكنك الوصول إلى CUDA عبر cuda.net.
  • يمكنك استخدام opencl عبر opencl.net.

أما بالنسبة لتعليمات وحدة المعالجة المركزية ، فإن هذا يتطلب عادةً الانخفاض إلى رمز أصلي من المستوى الأدنى مع تعليمات التجميع. من المحتمل أن يكون الخيار الأكثر إثارة للاهتمام المدارة (على الأقل جزئيًا) هو الاستخدام Mono.simd, ، والذي يوفر الوصول المباشر إلى تعليمات SIMD في وحدة المعالجة المركزية من التعليمات البرمجية المدارة عند التشغيل على مكدس Mono.

نصائح أخرى

ذلك ليس خيارا. سيتعين عليك p/استدعاء وظيفة في DLL التي تم إنشاؤها بواسطة MASM أو مكتوبة في C/C ++ غير المدارة ، باستخدام التجميع المضمّن أو الجوهارات. أو استخدم برنامج التحويل البرمجي C ++/CLI وقم بإنشاء رمز الوضع المختلط مع إدارة #Pragma.

احذر الآن أنك لم تعد قادرًا على الاعتماد على برنامج التحويل البرمجي JIT الذي يولد أي رمز النظام الأساسي مناسب لنظام التشغيل. استخدم Project + Properties ، Tab Build ، هدف النظام الأساسي لإجبار الهندسة المعمارية على مطابقة الرمز غير المُدار.

انظر إلى CUDA لرمز GPU المدارة.

قم بإنشاء مكتبة. DLL غير مُدارة مع أي إرشادات تريدها واستخدمها للدعوة.

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