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

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

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

+48
08 авг. '09 в 21:02
источник поделиться
7 ответов

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

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

+19
08 авг. '09 в 21:05
источник

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

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

+15
08 авг. '09 в 22:43
источник

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

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

+8
08 авг. '09 в 21:06
источник

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

+4
08 авг. '09 в 21:09
источник

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

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

+3
08 авг. '09 в 21:39
источник

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

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

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

+2
08 авг. '09 в 21:51
источник

FYI: ускоритель (http://research.microsoft.com/en-us/projects/Accelerator/) отлично справился с выполнением нескольких тестов.

0
20 авг. '09 в 3:54
источник

Посмотрите другие вопросы по меткам или Задайте вопрос