CUDA vs Directx 10 para las matemáticas paralelas. ¿Algún pensamiento que tenga al respecto?

StackOverflow https://stackoverflow.com/questions/625162

  •  05-07-2019
  •  | 
  •  

Pregunta

CUDA vs Direct X 10 para matemáticas paralelas. ¿Algún comentario sobre esto?

¿Fue útil?

Solución

CUDA es probablemente una mejor opción, si sabe que su arquitectura de destino está usando nVidia chips. Usted tiene control completo sobre sus transferencias de datos, rutas de instrucciones y orden de operaciones. También puedes arreglarte con menos llamadas de __syncthreads cuando estás trabajando en el nivel inferior.

DirectX 10 será más fácil de interconectar, debería pensar, pero si realmente quieres aumentar tu optimización de velocidad, debes pasar por alto la capa adicional. DirectX 10 tampoco sabrá cuándo usar la memoria de textura en lugar de la memoria constante en comparación con la memoria compartida, así como usted lo hará dependiendo de su algoritmo en particular.

Si tienes acceso a un Tesla C1060 o algo así, CUDA es, con mucho, la mejor opción. Realmente puede acelerar las cosas si conoce los detalles específicos de su GPGPU: he visto incrementos de velocidad de 188x en un algoritmo en particular en un Tesla versus mi escritorio.

Otros consejos

Me parece incómodo CUDA. No es C, sino un subconjunto de ella. No admite punto flotante de precisión doble de forma nativa y está emulado. Sin embargo, para precisión simple está bien. Depende del tipo de tarea que le lances. Debe dedicar más tiempo a la computación en paralelo que a pasar la información para que valga la pena usarla. Pero ese problema no es exclusivo de CUDA.

Esperaría el OpenCL de Apple, que parece ser el estándar de la industria para la computación paralela.

Bueno, CUDA es portátil ... Eso es una gran victoria si me preguntas ...

CUDA no tiene nada que ver con el soporte de operaciones de punto flotante de doble precisión. Esto depende del hardware disponible. Las series 9, 100, 200 y Tesla admiten operaciones de punto flotante de doble precisión tesla . / p>

Debería ser fácil decidir entre ellos.

Si su aplicación puede tolerar ser específica de Windows, aún puede considerar DirectX Compute. De lo contrario, usa CUDA o OpenCL.

Si su aplicación no puede tolerar un bloqueo de proveedor en NVIDIA, no puede usar CUDA, debe usar OpenCL o DirectX Compute.

Si su aplicación está haciendo interoperabilidad de DirectX, considere que CUDA / OpenCL incurrirá en una sobrecarga de cambio de contexto al hacer interoperabilidad de API de gráficos, y DirectX Compute no lo hará.

A menos que uno o más de esos criterios afecten su aplicación, use el bisabuelo de las cadenas de herramientas masivas paralelas: CUDA.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top