C #: إجراء العمليات على GPU، وليس وحدة المعالجة المركزية (حساب PI) [مغلق

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

  •  12-09-2019
  •  | 
  •  

سؤال

لقد قمت مؤخرا بقراءة الكثير حول البرامج (معظمها ذات صلة علمية / الرياضيات والتشفير) التي تتحرك جزءا من حسابها على GPU مما يؤدي إلى زيادة أضعاف 100-1000 (!) في السرعة للعمليات المدعومة.

هل هناك مكتبة أو API أو طريقة أخرى لتشغيل شيء ما على GPU عبر C #؟ أنا أفكر في حساب PI بسيط. لدي GeForce 8800 GTX إذا كان هذا صحيحا على الإطلاق (يفضل الحل المستقل البطاقة على الرغم من ذلك).

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

المحلول

إنها تقنية جديدة للغاية، لكنك قد تحقق كودا. وبعد منذ سؤالك الموسومة مع C #، ها هو .WNET Wrapper..

ككافأة، يبدو أن 8800 GTX يدعم CUDA.

نصائح أخرى

خيار آخر لم يتم ذكره لحساب GPU من C # هو براهم.

براهم يوفر التجريد المستند إلى LINQ لحسابات GPU - إنه أساسي LINQ إلى GPU. يعمل على OpenGL و DirectX بدون مكتبات إضافية (ولكن يتطلب SM3). بعض العينات مذهلة إلى حد ما.

قد ترغب في النظر في هذا السؤال

ربما كنت تبحث عن مسرع, ، ولكن إذا كنت مهتما بتطوير اللعبة بشكل عام، فسوف أقترح عليك إلقاء نظرة على XNA

cuda.net. يجب أن يكون بالضبط ما تبحث عنه، ويبدو أن دعم بطاقة الرسومات المحددة الخاصة بك.

يمكنك الوصول إلى آخر apis direct3d من .NET باستخدام حزمة رمز واجهة برمجة التطبيقات. وبعد Direct3D 11 يأتي مع تظليل حساب. هذه هي قابلة للمقارنة تقريبا من CUDA، ولكن العمل أيضا على GPUs غير NVIDIA.

ملاحظة تقتصر DirectX و XNA المدار على مجموعة ميزة Direct3D 9، والتي يصعب استخدامها إلى حد ما ل GPGPU.

هناك مجموعة من ارتباطات .NET ل NVIDIA CUDA API، يطلق عليه cuda.net.. وبعد يمكنك الرجوع إلى دليل مرجعي للنظر في بعض رمز C #.

وسيتم استخدام الطريقة المفضلة للوصول إلى المشارك الخاص بك (GPU) opencl بحيث يكون رمزك محمول مع بطاقات ATI، لكنني أعتقد أنه قد يكون هناك ترميز إضافي مطلوبا ولست متأكدا من مقدار دعم OpenCL للحصول على منصة .NET.

إذا كنت ترغب في استخدام C ++، إليك نظرة عامة سريعة حول كيفية الحصول على بعض العينة رمز تجميع مع Visual Studio.

لمعلوماتك: مسرع (http://research.microsoft.com/en-us/projects/accelerator/) كان يعمل بشكل رائع لبعض الاختبارات.

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