Intel Xeon Phi es mucho más fácil de programar que Tesla
Apenas ayer Intel anuncio sus cGPUs para cómputo paralelo masivo Xeon Phi 5110P, y ya empieza a publicitarlo, mostrando las ventajas que ofrece ante productos rivales (Tesla K20X de Nvidia y FirePro S10000 de AMD).
El acelerador de cómputo paralelo Intel Xeon Phi 5110P (1.01 TFlops en cálculos de doble precisión) palidece ante el poderío de Tesla K20X (1.31 TFlops en doble precisión) y FirePro S10000 (1.48 TFlops en doble precisión); pero ante esta desventaja ante sus rivales, Intel afirma que su producto es mucho más sencillo de programar, permitiendo fácilmente aprovechar sus 60 núcleos x86 (capaces de ejecutar 240 hilos de procesamiento) y sus 960 shader processors (agrupados en 60 unidades vectoriales 16-Wide).
Para demostrar sus afirmaciones Intel nos brinda un ejemplo mostrando como adaptar código común (algoritmo de Monte Carlo para este ejemplo), el cual se ejecutó en 693 segundos en un equipo basado en una configuración Dual Xeon (doble socket), el cual con cambios mínimos (dos líneas de código adicionales) se ejecutó en 6.35 segundos en un Xeon Phi.
Hacer lo mismo para el acelerador Tesla de Nvidia requiere de mucho trabajo al pasar el código estándar (C/C++ o Fortran) a CUDA; además de que sería muy difícil volverlo a traducir para su ejecución en un CPU normal.
Link: What does it take to code for a Xeon Phi? (SemiAccurate)
También pueden comentar en nuestro foro.
NVIDIA presenta oficialmente su nuevo GPU GeFor...
Intel Core i7-4770K “Haswell-DT” versión comerc...
Hacer una réplica por supercomputador del cereb...
Smart Dust: La computadora más pequeña que un g...
AMD anuncia su promoción Never Settle Reladed L...
AMD lanza su GPU Radeon HD 8970M “Neptune”
Se filtran imágenes, especificaciones y precio ...
La red Bitcoin supera el Exaflop y a todos los ...

24 Comentarios
Intel Xeon Phi es mucho más fácil de programar que Tesla
Y qué hay de OpenCL? no se supone que es incluso más dificil de programar?
ResponderSólo por conocimiento podrían tirarse una tabla con las ventajas y desventajas de una forma de configurar sobre la otra? porque quizás la complejidad en la configuración sea compensada muy bien por el poder extra que entrega, pero hay que tener en cuenta que programar lleva tiempo, lo que significa que puedes perder en programar, todo el tiempo que ahorraste ejecutando.
Hay una gran diferencia y es que el mundo opencl tiene el potencial de llegar a absolutamente todas las plataformas, cosa que no pasará ni con x86 ni con CUDA.
También falta evaluar el potencial impacto que tendrán HSA y OpenACC, estándares apoyados por los pesos pesados de la industria y que promete ser fácil para los programadores... ya veremos.
Creo que las tres compañías dan soporte a OpenCL, pero me parece que no es la gracia en este tipo de tarjetas.
De la página de AMD de la firepro por ejemplo, dice: " It’s the only discrete graphics architecture compatible with the x86 programming model, paving the way for future software and hardware integration."
Si mal no recuerdo GCN soporta C++ AMP, OpenACC y cosas del estilo, que facilitan mucho a la hora de escribir código.
realmente como odio no entender la parte de codigo de noticias asi...
ResponderSeguramente un conocedor de CUDA (yo no) desbarataría fácilmente una argumentación tan sesgada y un conocedor de OpenCL (yo no todavía) también.
ResponderNo dicen por ejemplo que una vez optimizado para su ejecución en paralelo, probablemente el resultado (tiempo de ejecución) sea igual o superior con CUDA.
De otra parte el código CUDA se hace ver deliberadamente mas complicado (con CUDA o sin … hay malos y buenos estilos de codificación). Y eso de que “sería muy difícil volverlo a traducir para su ejecución en un CPU normal” qué argumento tan tonto.
bueno, no soy un experto, pero se programar con cuda, y no estan mintiendo los de intel, el cambio necesario en el codigo es minimo. Solo Falta saber que tan buena es la optimizacion de codigo con ejemplos mas grandes.
Yo programo en OpenMP...Si es que se le puede llamar programación cuando solo debes colocar 2 líneas de código.
Si es verdad lo que dice intel, aunque a ese còdigo le falta por supuesto.
La programación paralela en x86 es tan absurda como declarar openmp para luego hacer el llamado y listo, todo el còdigo enmarcado en el llamado se hara de forma paralela.
que un codigo se muestre "mas simple" no quiere decir que en realidad sea mas simple de utilizar y mas simple de ejecutar... me explico:
Responderpara los que estamos relacionados con la programacion, muchas veces codigos extremadamente simplificados no nos brindan realmente la dimension del trabajo ni los recursos utilizados en este (no podemos saber los estados, que parte se va ejecutar, trozos de carga y descarga, etc) como experiencia personal me sucedio de pasar del mundo de C++ a J2EE cuando el bendito "colector de basura" hace un trabajo que en realidad tu no puedes controlar ni menos saber que diablos sucede...
por lo que puedo ver, los algoritmos mostrados por intel descienden de BASIC, mientras que los demas descienden de lenguajes muchisimo mas ricos, complejos y mas bajo nivel (C y FORTRAN) que te permiten ser mas especificos y exquisito a la hora de programar.
sin ser un conocedor de los lenguajes que utilizan estas plataformas, me atreveria a decir que es un ejemplo muy tendencioso... y que pasa si yo requiero utilizar y redireccionar espacios de memoria o canales muy especificos? apuesto que intel seria extremadamente complejo de hacer, mientras que con cuda solo bastaria agregar un par de lineas mas
"sin ser un conocedor de los lenguajes que utilizan estas plataformas"
bla bla bla
"con cuda solo bastaria agregar un par de lineas mas"
Ni vos te entendés man, mejor no hubieras dicho nada ;D
En resumen, no te consta que uno sea más simple que otro. Es decir, mucho palabrerio de tu experiencia en programación para finalmente quedar donde mismo en este tema, osea, nada.
captain obvious!!! a eso mismo me referia... si ser un gran conocedor, cualquier programador podrá notar que el ejemplo es tendencioso (leyeron mas arribla que hay personas que no tienen idea de programar y les gustaria saber que diablos dice en palabras mas simples???)
ya me doy cuenta que aqui no se puede ayudar a nadie....
Es interesante que haya mas opciones en el mercado, pero a ver a que precio.
ResponderSobre la dificultad de programar yo sólo se que con OpenCL es muy sencillo (se programa en C), aunque puede haber quien diga que tener que alojar buffers (arrays) en el dispositivo es un engorro, a mi no me supuso un problema técnico. Otra cosa muuuuuy diferente sería que tuviese que programar en ensamblador en lugar de C. Me imagino que Cuda y el compilador de Intel tambien tendran sus cosas, pero lo que quiero resaltar es que para mi es mucho más importante tener un buen depurador, o que el algoritmo que tengo que implementar necesita demasiada memoria o es muy complejo. Por el lenguaje me da igual, porque hoy en día todos permiten hacer lo mismo de un modo u otro.
@iso9660. Mas tarde publico más sobre Xeon Phi, incluido su precio.
Saludos.
Se me olvidaba decir que la solución de Intel tiene además otros inconvenientes:
Responder- Es más lenta.
- No integra capacidad para gráficos (muy importante) en el trozo de silicio, por lo que para representar los resultados me obliga a comprar una tarjeta de vídeo (la cual seguro que soporta OpenCL).
- OpenCL y Cuda permiten compartir buffers y texturas entre OpenCV y OpenCL de forma muy rápida.
- Llega tarde. OpenCL y Cuda están asentados y tienen una base instalada enorme y muchísimos programadores que ya han hecho sus pinitos, por lo que es muy fácil encontrar código fuente de ejemplo.
Solo discrepo en el punto. Este producto entra a competir con tesla y firepro, que tampoco integran capacidad para gráficos. Sea cual sea la alternativa que eliges te vas a ver obligado a comprar una tarjeta de video.
Respecto al ultimo punto, yo creo que OpenCL y CUDA para el propósito de computo están recién partiendo. Al menos con mi poca experiencia con software de simulación de fluidos, software de simulación para calculo estructural que usan los ingenieros y renderizadores de 3d, los cálculos por gpu empezaron a hacer ruido hace unos 5 años y recién yo diría que están resultando una alternativa real para competir (ya sea por desarrollo de hardware o software), pero al menos para fines profesionales no se si aun es tan conveniente para usuarios mas modestos.
@Jorgito. FirePro S10000 tiene 1 salida DVI y 4 DisplayPort.
Saludos.
Hola Jorjito, en mi caso he desarrollado con dos modelos de ATI Radeon, no conocía los casos de que tesla y firepro.
Respecto a OpenCL y CUDA se llevan usando bastantes años (www.GPGPU.org), el caso es que entre programadores normales no está demasiado extendido. Sin embargo un programador normal sin conocimientos matemáticos demasiado exigentes es capaz por ejemplo de hacer estabilización de vídeo, ya que aunque el programa no sea ninguna proeza matemáticamente hablando, con cualquier tarjeta de gama media se puede decodificar vídeo en tiempo real a 1080p y estabilizarlo.
En mi caso por ejemplo lo usé para hacer estabilización de vídeo de una cámara web a 1080p y 24fps detectando las líneas de referencia en OpenCL (por fuerza bruta, ya que en ese momento no conocía que se podían cacular con regresiones lineales por minimos cuadrados) y luego mostrando la imágen rotada y escalada con OpenGL. La tarjeta de vídeo funcionaba soplando bastante (Radeon 7650) pero la CPU ni se despeinaba y el vídeo se mostraba a 24fps.
Otro proyecto donde la usé fue para la calibración de la imagen de forma interactiva (la versión de OpenCV que quise usar no soportaba OpenCL, aunque sí CUDA), en este caso ya usaba las regresiones lineales por mínimos cuadrados, pero al tener que usar algoritmos matemáticos más complejos ya bajaba a 15fps.
El caso es que con una GPU de 80€ se pueden hacer programas con requerimientos de cálculo importantes y además representar los resultados para trabajar de forma interactiva.
Lo que sería un avance realmente importante es que otros dispositivos ARM como la Rasperry PI, la BeagleBoard, PandaBoard y demás soportaran también OpenCL, ya que se podrían utilizar dispositivos de 5W para procesar algoritmos complejos... pero eso ya es otra historia.
Por último, da igual que Intel ofrezca una plataforma x86, cuando si no recompilas y modificas tu programa no funciona. Llegado a este punto te da igual que el la plataforma sea x86, ARM, MIPS, o bocata de chorizo...
ResponderNop, no es lo mismo, por q si desarrollas para el CPU ya casi tenes listo el programa para la cGPU.
Hombre... Si te empeñas en programarlo en ensamblador seguro que si... :)
Responderun poco más facil de programar???, pero la velocidades de las tarjetas que es lo que realmente lo que importa.
ResponderDeja tu Comentario