C #: إجراء العمليات على GPU، وليس وحدة المعالجة المركزية (حساب PI) [مغلق
سؤال
لقد قمت مؤخرا بقراءة الكثير حول البرامج (معظمها ذات صلة علمية / الرياضيات والتشفير) التي تتحرك جزءا من حسابها على GPU مما يؤدي إلى زيادة أضعاف 100-1000 (!) في السرعة للعمليات المدعومة.
هل هناك مكتبة أو API أو طريقة أخرى لتشغيل شيء ما على GPU عبر C #؟ أنا أفكر في حساب PI بسيط. لدي GeForce 8800 GTX إذا كان هذا صحيحا على الإطلاق (يفضل الحل المستقل البطاقة على الرغم من ذلك).
المحلول
إنها تقنية جديدة للغاية، لكنك قد تحقق كودا. وبعد منذ سؤالك الموسومة مع C #، ها هو .WNET Wrapper..
ككافأة، يبدو أن 8800 GTX يدعم CUDA.
نصائح أخرى
قد ترغب في النظر في هذا السؤال
ربما كنت تبحث عن مسرع, ، ولكن إذا كنت مهتما بتطوير اللعبة بشكل عام، فسوف أقترح عليك إلقاء نظرة على 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/) كان يعمل بشكل رائع لبعض الاختبارات.