2012-01-24 16 views
7

Me doy cuenta de que hay varias preguntas sobre este tema, pero creo que mi ángulo es único.¿Puedo utilizar núcleos en GPU desde C# SIN cambiar al código?

Tengo una aplicación de C# madura que uso para el cálculo científico de números. En el código, comienzo 24 hilos C# en mi 24 HyperThread (es decir, tengo 2 CPU cada uno con 6 núcleos/12 hilos) estación de trabajo. Ejecuto Windows 7 y lo maneja de forma brillante: puedo usar todo mi poder de procesamiento para hacer mi trabajo.

Veo que algunas GPU anuncian "448 núcleos". Si compré uno de estos ¿mi aplicación C# podría utilizarlos? Quiero decir sin reescribir mi código de ninguna manera importante. ¿Serán los hilos que empiezo captados por los núcleos de la GPU en lugar de la CPU HyperThreads como es el caso ahora?

SEGUIMIENTO DE PREGUNTA

Hola, aprecio las respuestas que estoy recibiendo - incluso si es negativo.

¿Hay algún otro hardware que debería estar pensando (no demasiado caro) que me daría una gran cantidad de núcleos, pero podría ejecutar mi código C# sin una reescritura?

+0

posible duplicado de [Ejecutar código C en la GPU] (http://stackoverflow.com/questions/4119876/run-c-sharp-code-on-gpu) –

+0

Por cierto, 448 núcleos es de gama baja. Obtenga una tarjeta de gama alta avanzada y hable de miles. y la posibilidad de llevar de 8 a 10 de esas GPU a una máquina con la placa adecuada. 2 por tarjeta, 3-4 cartas son factibles sin problemas. – TomTom

+0

Todas las respuestas son decepcionantes "no", pero hay un lado positivo. Las cosas a las que se vinculan son muy interesantes. –

Respuesta

2

Heh ... no. De ninguna manera no como. Esos "núcleos" no son lo mismo. Para aprovechar cualquier computación GPU, debe escribir sus cálculos de una manera muy específica. Pruebe OpenCL tal vez. Pero la respuesta a tu pregunta es no.


En cuanto a su edición, lo único posible con pocos cambios (dependiendo de cómo lo haya estructurado actualmente) es un procesador. Si no está creando un software general, probablemente pueda ejecutar 48 núcleos individuales sin HT. Aunque tal vez ese no sea el cuello de botella. Podría aumentar su RAM para hacer que todo sea más rápido hasta cierto punto.

+0

Ver la edición – ManInMoon

+0

@ManInMoon: Editar visto. – Ryan

+0

¿Por qué mencionas 48 núcleos específicamente? ¿Es eso un límite de núcleos para Windows? Este no es un software general, solo para mí. También podría agregar tanta RAM como pudiera. ¿Hay alguna manera de obtener una mayor cantidad de núcleos como sugieres? Estoy buscando una forma de obtener cientos de núcleos realmente – ManInMoon

1

No. Los subprocesos .Net no aprovecharán automáticamente los núcleos de la GPU para su procesamiento. Son muy diferentes de los núcleos de procesador normales. Debería modificar su programa para aprovechar el procesamiento de la GPU.

+0

ver la edición – ManInMoon

3

Tendrá que volver a escribir su código realmente para hacer uso de un gpu. Estos enlaces pueden ser útiles: -

CUDA .NET - Funcionalidad CUDA a través de aplicaciones .NET.

CUDA Sharp - C# envoltorio para nVidia Toolkit

Estos se basan en el sistema de nVidia CUDA por lo que había necesidad de una tarjeta nVidia para este supuesto.

Cuestiones relacionadas