Pregunta

Me gustaría saber de las personas con la experiencia de codificación para ambos. Yo mismo, que sólo tienen experiencia con NVIDIA.

NVIDIA CUDA parece ser mucho más popular que la competencia. (Sólo contando las etiquetas de interrogación en este foro, Barracuda 'supera a 'OpenCL' 3: 1, y 'nvidia' supera a 'ati' 15: 1, y no hay ninguna etiqueta para 'ati-stream' en absoluto).

Por otro lado, según la Wikipedia, ATI / AMD tarjetas debe tener mucho más potencial, especialmente por dólar. La tarjeta más rápida de NVIDIA en el mercado a partir de hoy, GeForce 580 ($ 500), tiene una potencia de 1,6 TFlops de precisión simple. AMD Radeon 6970 se puede conseguir por $ 370 y que tiene una potencia de 2,7 TFlops. El 580 tiene 512 unidades de ejecución en 772 MHz. El 6970 tiene 1536 unidades de ejecución en 880 MHz.

¿Qué tan realista es que la ventaja de papel de AMD sobre NVIDIA, y es probable que se obtenga en la mayoría de las tareas de GPGPU? ¿Qué ocurre con las tareas enteros?

¿Fue útil?

Solución

Metafóricamente hablando ATI tiene un motor bueno en comparación con nvidia. Pero nvidia tiene un coche mejor: D

Esto es principalmente porque NVIDIA ha invertido buena cantidad de sus recursos (en dinero y personas) para desarrollar bibliotecas importantes que se requieren para la informática científica (BLAS, FFT), y luego un trabajo bueno de nuevo en su promoción. Esta puede ser la razón CUDA domina las etiquetas de aquí en comparación con ATI (o OpenCL)

En cuanto a la ventaja que se realiza en las tareas GPGPU en general, que terminaría en función de otras cuestiones (dependiendo de la aplicación), tales como, el ancho de banda de transferencia de memoria, un buen compilador y probablemente incluso el conductor. nvidia tener un compilador más maduro, un conductor más estable en Linux (Linux, ya que, su uso está muy extendido en la computación científica), inclinar la balanza a favor de CUDA (al menos por ahora).


Editar 12 Ene, 2013

Ya han pasado dos años desde que hice este post y todavía parece atraer vistas a veces. Así que he decidido aclarar algunas cosas

  • AMD ha intensificado su juego. Ahora tienen dos bibliotecas BLAS y FFT. Numerosos bibliotecas de terceros también están surgiendo alrededor de OpenCL.
  • Intel Xeon Phi ha introducido en el medio natural apoyando tanto OpenMP y OpenCL. También cuenta con el código x86 uso capacidad existente. como se ha señalado en los comentarios, sin limitarse x 86 SSE por ahora
  • NVIDIA CUDA y todavía tienen la ventaja en el rango de bibliotecas disponibles. Sin embargo, no se pueden centrando en OpenCL tanto como lo hacían antes.

En resumen OpenCL ha cerrado la brecha en los últimos dos años. Hay nuevos jugadores en el campo. Pero CUDA es todavía un poco por delante del resto.

Otros consejos

No tenemos ninguna sentimientos fuertes sobre CUDA OpenCL vs.; presumiblemente OpenCL es el futuro a largo plazo, solo a fuerza de ser un estándar abierto.

Pero actuales días NVIDIA vs tarjetas ATI para GPGPU (no el rendimiento de gráficos, pero GPGPU), que tienen una fuerte opinión sobre el. Y para el plomo en eso, voy a señalar que en la actual lista de Top 500 de los grandes grupos , cables NVIDIA AMD 4 sistemas a 1, y en gpgpu.org , los resultados de búsqueda (documentos, enlaces a Internet recursos, etc.) de NVIDIA superan en número a los resultados de AMD 6: 1.

Una gran parte de esta diferencia es la cantidad de información disponible en línea. Echa un vistazo a la CUDA de NVIDIA Zona frente GPGPU la central de . La cantidad de cosas que hay para los desarrolladores de la puesta en marcha ni siquiera se acercan a la comparación. En de NVIDIA sitio encontrará toneladas de papeles - y el código contribuido - de la gente probablemente trabajan en problemas como el suyo. Encontrará toneladas de clases en línea, de NVIDIA y en otros lugares, y documentos de gran utilidad como guía de buenas prácticas de los desarrolladores, etc. La disponibilidad de herramientas gratuitas devel - el generador de perfiles, el cuda-gdb, etc - se inclina abrumadoramente forma de NVIDIA.

(Editor: la información contenida en este párrafo ya no es exacto.) Y algunas de las diferencias es también el hardware. AMDS tarjetas tienen mejores especificaciones en términos de pico de fracasos, pero para ser capaz de obtener una fracción significativa de eso, usted tiene que romper no sólo su problema arriba sobre muchos procesadores de flujo completamente independientes, cada elemento de trabajo también tiene que ser vectorizado. Teniendo en cuenta que los GPGPUing código es bastante difícil, que la complejidad arquitectónica extra es suficiente para hacer o romper algunos proyectos.

Y el resultado de todo esto es que la comunidad de usuarios de NVIDIA sigue creciendo. De los tres o cuatro grupos que conozco pensando en construir grupos de GPU, ninguno de ellos está considerando seriamente tarjetas de AMD. Y eso significa todavía más grupos de redacción de documentos, contribuyendo con código, etc en el lado de NVIDIA.

No soy un pelele NVIDIA; Me gustaría que no fuera así, y que hubo dos (o más) plataformas GPGPU igualmente convincentes. La competencia es buena. Quizás AMD va a intensificar el juego muy pronto - y los productos de fusión próximos parecer muy convincente. Pero en dar consejos a alguien acerca de que las tarjetas para comprar hoy en día, y dónde gastar su tiempo de poner esfuerzo en este momento, no puedo en buena conciencia decir que tanto los entornos de desarrollo son igualmente buenas.

Editado para añadir : Creo que lo anterior es un poco elíptica en términos de responder a la pregunta original, así que permítanme que sea un poco más explícito. El rendimiento que se puede obtener a partir de una pieza de hardware es, en un mundo ideal, con tiempo infinito disponibles, sólo depende del hardware subyacente y las capacidades del lenguaje de programación; pero en realidad, la cantidad de rendimiento que se puede obtener en una cantidad fija de tiempo invertido también depende en gran medida de herramientas devel, bases existentes código comunitario (por ejemplo, bibliotecas de acceso público, etc.). Estas consideraciones apuntan fuertemente a NVIDIA.

(Editor:. La información contenida en este párrafo ya no es exacto) En términos de hardware, el requisito de vectorización dentro de las unidades SIMD en las tarjetas AMD también hacen que el logro de un rendimiento de papel aún más difícil que con el hardware de NVIDIA

.

La principal diferencia entre AMD y arquitecturas de NVIDIA es que AMD está optimizado para problemas en los que el comportamiento del algoritmo se puede determinar en tiempo de compilación, mientras que NVIDIA está optimizado para problemas en los que el comportamiento del algoritmo sólo puede ser determinado en Run- tiempo.

AMD tiene una arquitectura relativamente simple que les permite pasar más transistores en ALU de. Mientras el problema puede ser completamente definido en tiempo de compilación y se asignó correctamente a la arquitectura de una manera un tanto estática o lineal, hay una buena probabilidad de que AMD va a ser capaz de ejecutar el algoritmo más rápido que NVIDIA.

Por otro lado, el compilador de NVIDIA está haciendo menos el análisis en tiempo de compilación. En su lugar, NVIDIA tiene una arquitectura más avanzada donde han pasado más transistores en la lógica de que es capaz de manejar el comportamiento dinámico del algoritmo que sólo emerge en tiempo de ejecución.

Creo que el hecho de que la mayoría de los superordenadores que las GPU de uso van con NVIDIA es que el tipo de problema que los científicos están interesados ??en el funcionamiento de cálculos con los mismos en mapa general mejor a la arquitectura de NVIDIA de AMD.

He hecho algunas iterativo de codificación en OpenCL. Y los resultados de la ejecución en NVIDIA y ATI, son más o menos lo mismo. Cerca de la misma velocidad en el mismo valor ($) tarjetas.

En ambos casos, las velocidades fueron ~ 10x-30x comparando con una CPU.

Yo no probó CUDA, pero dudo que podría solucionar mi memoria al azar traiga problemas mágicamente. Hoy en día, CUDA y OpenCL son más o menos lo mismo, y veo más futuro en OpenCL que en CUDA. La razón principal es que Intel está lanzando los conductores con OpenCL para sus procesadores. Este será un gran avance en el futuro (móvil 16, 32 o 64 hilos de OpenCL en la CPU es muy rápido y muy fácil de portar a la GPU).

Después de haber pasado algún tiempo con OpenCL para GCN tarjetas después de algunos años de CUDA de Fermi y Kepler, yo prefiero CUDA como un lenguaje de programación y elegiría el hardware de AMD con CUDA si tuviera una opción.

Principales diferencias de NVIDIA y AMD (OpenCL):

Para AMD:

  • A pesar de Maxwell, NVidia todavía tiene probabilidades de ser más rápido en 10 AMD latencias de comandos más largos y complejos algoritmos son (suponiendo mismos teóricos Teraflops) después fáciles optimizaciones para ambos. La diferencia era de hasta el 60% para Kepler VS GCN. Es más difícil para optimizar los núcleos complejos de NVidia en este sentido.

  • tarjetas baratos.

  • OpenCL es estándar abierto con otros proveedores disponibles.

Para Nvidia:

  • Tiene la línea de Tesla de hardware que es adecuado para altas cargas de servidor fiables.

  • Nueva Maxwell es la forma más eficiente de la energía.

  • Compilador y herramientas son la forma más avanzada. AMD todavía no puede llegar a poner en práctica el parámetro maxregcout, por lo que se puede controlar fácilmente la ocupación de una variedad de hardware y su compilador tiene una gran cantidad de ideas al azar de lo que es un código óptimo que el cambio con cada versión, por lo que puede ser necesario volver a examinar cada código antiguo medio año, ya que de repente se convirtió en el 40% más lento.

En este punto, si GPGPU es su objetivo, CUDA es la única opción, ya que OpenCL con AMD no está listo para el conjunto de servidores y es significativamente más difícil de escribir código eficiente para AMD debido al hecho de que el compilador siempre parece ser " en beta".

Soy nuevo en GPGPU pero tengo algo de experiencia en computación científica (Doctor en Física). Estoy preparando un equipo de investigación y yo quiero ir hacia el uso de GPGPU para mis cálculos. Tuviera que elegir entre las plataformas disponibles. Me decidí por Nvidia, por un par de razones:., Mientras que ATI puede ser más rápido en el papel, Nvidia tiene una plataforma más maduro y más documentación por lo que será posible acercarse al máximo rendimiento en esta plataforma

Nvidia también tiene un programa de apoyo a la investigación académica, se puede solicitar ayuda, acabo de recibir una tarjeta de TESLA 2075 que estoy muy feliz. No sé si ATI o Intel apoya la investigación de esta manera.

Lo que oí sobre OpenCL es que está tratando de ser todo a la vez, es cierto que su código OpenCL será más portátil, pero también es probable que no explotar todas las capacidades de cualquiera de las plataformas. Prefiero aprender un poco más y los programas de escritura que utilizan mejor los recursos. Con el Tesla K10 que acaba de salir este año Nvidia se encuentra en los 4,5 TeraFlops van por lo que no está claro que Nvidia está detrás de Intel ... sin embargo los PRM podría llegar a ser un competidor real, especialmente si tienen éxito en mover la unidad de GPGPU la placa base. Pero por ahora, he elegido Nvidia.

Mi experiencia en la evaluación de OpenCL rendimiento de punto flotante tiende a favorecer a las tarjetas de NVIDIA. He trabajado con un par de puntos de referencia de punto flotante en las tarjetas de NVIDIA que van desde la 8600M GT a la GTX 460. tarjetas NVIDIA lograr de manera consistente alrededor de la mitad del pico teórico de un solo precisino en estos puntos de referencia.
Las tarjetas ATI que he trabajado rara vez alcanzan mejor que un tercio del pico de precisión simple. Tenga en cuenta que mi experiencia con ATI es sesgada; Sólo he podido trabajar con una tarjeta de la serie 5000. Mi experiencia es en su mayoría con la HD 4000 tarjetas de la serie, que nunca fueron bien apoyados. El apoyo a las tarjetas de la serie HD 5000 es mucho mejor.

Me gustaría añadir al debate. Para nosotros en el negocio del software, podemos comprometer el rendimiento de precisión simple prima para la productividad, sino incluso que no tienen que comprometer puesto que, como ya se ha señalado, no se puede lograr la mayor rendimiento en el hardware de ATI usando OpenCL como se puede lograr si se escribe en CUDA en el hardware de NVIDIA.

Y sí, con el anuncio del compilador para x86 CUDA de IGP, no habrá ninguna buena razón para gastar más tiempo y recursos a escribir en OpenCL:)

P.S: Mi argumento podría estar sesgada ya que hacemos casi todo nuestro trabajo GPGPU en CUDA. Tenemos un procesamiento de imágenes / Computer Vision biblioteca CUVI (CUDA para la Visión y de imagen) que acelera algunas funciones núcleo IP / CV en CUDA.

Cuda es ciertamente popular que OpenCL a partir de hoy, ya que fue lanzado 3 o 4 años antes de OpenCL. Desde OpenCL se ha dado a conocer, Nvidia no ha contribuido mucho a la lengua ya que se concentran tanto en CUDA. Ni siquiera han lanzado la versión 1.2 OpenCL para cualquier conductor.

En cuanto a la computación heterogénea, así como dispositivos de mano como OpenCL en cuestión seguramente ganar más popularidad en el futuro cercano. A partir de ahora el mayor contribuyente a OpenCL es AMD, es visible en su sitio.

en mi experiencia:

  • si quieres mejor rendimiento absoluto, entonces usted necesita para ver quién está en la última iteración de hardware, y utilizar su pila (incluyendo versiones más recientes / beta).

  • si desea el mejor rendimiento para el dinero que va a ser el objetivo en tarjetas de jugador en lugar de tarjetas de "profesionales" y la flexibilidad de que apuntan a diferentes plataformas favores OpenCL.

  • Si usted está comenzando a cabo, en particular, cuda tiende a ser más pulido y tienen más herramientas y bibliotecas.

Por último, mi visión personal, después pésimo "apoyo" de nvidia (tenemos un tesla muerto y no se cambió durante meses, mientras que un cliente estaba esperando): la flexibilidad de la nave salto con OpenCL vale la pena el riesgo de rendimiento ligeramente inferior cuando nvidia están por delante en el ciclo de lanzamiento.

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