Подтвердить что ты не робот

С#: выполнять операции с графическим процессором, а не с CPU (Calculate Pi)

Недавно я много читал о программном обеспечении (в основном связанном с наукой/математикой и шифрованием), который перемещает часть своих вычислений на графический процессор, что приводит к увеличению скорости в 100-1000 (!) раза для поддерживаемых операций.

Есть ли библиотека, API или другой способ запустить что-то на GPU через С#? Я думаю о простом вычислении Пи. У меня есть GeForce 8800 GTX, если это актуально вообще (предпочтет решение без карты).

4b9b3361

Ответ 1

Это очень новая технология, но вы можете исследовать CUDA. Поскольку ваш вопрос помечен С#, вот .NET wrapper.

В качестве бонуса, похоже, что ваш 8800 GTX поддерживает CUDA.

Ответ 2

Другим вариантом, который не упоминался для вычисления графического процессора с С#, является Brahma.

Brahma предоставляет абстракцию на основе LINQ для вычислений графического процессора - это в основном LINQ to GPU. Он работает над OpenGL и DirectX без дополнительных библиотек (но требует SM3). Некоторые из образцов довольно изумительны.

Ответ 3

Возможно, вы захотите посмотреть этот вопрос

Возможно, вы ищете Accelerator, но если вы заинтересованы в разработке игр в целом, я предлагаю вам воспользоваться посмотрите на XNA

Ответ 4

CUDA.NET должен быть именно тем, что вы ищете, и, похоже, поддерживает вашу конкретную графическую карту.

Ответ 5

Вы можете получить доступ к последним API Direct3D из .NET, используя Код кода Windows API. Direct3D 11 поставляется с Compute Shaders. Они примерно сопоставимы с CUDA, но работают также и на графических процессорах, отличных от NVIDIA.

Обратите внимание, что управляемые DirectX и XNA ограничены набором функций Direct3D 9, который несколько сложно использовать для GPGPU.

Ответ 6

Существует набор привязок .Net для Nvidia CUDA api, который называется CUDA.net. Вы можете обратиться к справочному руководству чтобы посмотреть пример кода С#.

Предпочтительный способ доступа к вашему совместному proccesor (GPU) будет использовать OpenCL, чтобы ваш код был переносимым с ATI но я считаю, что может потребоваться дополнительное кодирование, и я не уверен, сколько поддержки OpenCL для платформы .NET.

Если вы хотите использовать С++, вот краткий обзор о том, как получить образец кода для компиляции с Visual Studio.