C#: Realizar operaciones en GPU, no en CPU (Calcular Pi) [cerrado]


Recientemente he leído mucho sobre el software (principalmente científico / matemáticas y cifrado relacionados) que mueve parte de su cálculo en la GPU que causa un 100-1000 (!) aumento de la velocidad de plegado para operaciones soportadas.

¿Hay una biblioteca, API u otra forma de ejecutar algo en la GPU a través de C#? Estoy pensando en un simple cálculo de Pi. Tengo una GeForce 8800 GTX si eso es relevante (aunque preferiría una solución independiente de la tarjeta).

Author: JAL, 2009-08-09

7 answers

Es una tecnología muy nueva, pero podrías investigar CUDA. Dado que su pregunta está etiquetada con C#, aquí hay un . net wrapper.

Como bono, parece que su 8800 GTX soporta CUDA.

 20
Author: Charlie Salts,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-02-27 20:40:56

Otra opción que no se ha mencionado para el cálculo de GPU desde C# es Brahma.

Brahma proporciona una abstracción basada en LINQ para los cálculos de GPU-es básicamente LINQ a GPU. Funciona sobre OpenGL y DirectX sin bibliotecas adicionales (pero requiere SM3). Algunas de las muestras son bastante sorprendentes.

 16
Author: Reed Copsey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-08-10 14:40:02

Es posible que desee mirar esta pregunta

Probablemente estés buscando Accelerator , pero si estás interesado en el desarrollo de juegos en general, te sugiero que eches un vistazo a XNA

 8
Author: Tchami,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:26:06

CUDA.NET debería ser exactamente lo que estás buscando, y parece ser compatible con tu tarjeta gráfica específica.

 4
Author: Michael Borgwardt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-08 21:09:41

Puede acceder a las últimas API de Direct3D desde.NET utilizando el Paquete de código de API de Windows . Direct3D 11 viene con sombreadores de cómputo. Estos son más o menos comparables a CUDA, pero también funcionan en GPU que no son NVIDIA.

Tenga en cuenta que DirectX y XNA administrados están limitados al conjunto de características de Direct3D 9, que es algo difícil de usar para GPGPU.

 3
Author: Malte Clasen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-08 21:39:06

Hay un conjunto de enlaces. Net para la api CUDA de Nvidia, que se llama CUDA.net . Puede consultar la guía de referencia para ver algunos ejemplos de código C#.

La forma preferida de acceder a su co-proccesor (GPU) sería usar OpenCL para que su código sea portátil con tarjetas ATI, pero creo que puede haber codificación adicional requerida y no estoy seguro de cuánto soporte tiene OpenCL para la plataforma.Net.

Si desea utilizar C++, aquí hay un rápido descripción general sobre cómo obtener una compilación de código de ejemplo con Visual Studio.

 2
Author: Darwyn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-08 21:51:47

Para su información: Acelerador ( http://research.microsoft.com/en-us/projects/Accelerator / ) funcionó muy bien para un par de pruebas.

 0
Author: Alex,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-20 03:54:11