Historias
Slashboxes
Comentarios
 
Este hilo ha sido archivado. No pueden publicarse nuevos comentarios.
Mostrar opciones Umbral:
Y recuerda: Los comentarios que siguen pertenecen a las personas que los han enviado. No somos responsables de los mismos.
  • por pobrecito hablador el Lunes, 24 Noviembre de 2008, 21:57h (#1102431)
    102GFLOPS y 64GB de memoria (con un BW de 256 GB/s ) por CPU... Un nodo (de memoria compartida) es 16 veces eso. Soporta hasta 512 nodos.

    Ahí tienes [top500.org], 1.4PFLOPs, ya te he ganado. Venga, un poco de seriedad, estamos hablando de un sistema que cabe en una torre (y que vale 10k$), y que se distribuye bajo el lema "one researcher, one supercomputer". ¿Te cabe siquiera encima de la mesa un SX-9 o tratas de hacerte el listillo?

    Mucho más fácil de programar, muchísimo más eficiente en programas altamente vectorizables

    No solo no es más fácil de programar (vectorizar un código es mucho más complicado que CUDA-ificarlo, que es casi como usar OpenMP), además el código vectorial no es tan eficiente como el código CUDA. Las tarjetas gráficas con CUDA son las máquinas que más se acercan a su rendimiento pico en pruebas con aplicaciones reales, por eso (entre otras cosas) son tan interesantes en investigación. Un código vectorial real, si alcanza la mitad de su rendimiento pico, es que está muy bien pensado y muy bien programado.

    Los 4GB de memoria (por narices) tendrán muy pocos bancos para la cantidad de miniprocesadores que pueden querer acceder a la vez a ella... El cuello de botella con memoria será bestial (tanto por ancho como por acceso al mismo banco), y si no se programa usando las pequeñas caches de cada miniprocesador correctamente, no se le sacará apenas rendimiento... demasiado complejo.

    La memoria puede servir 4 (u 8 en las últimas, creo) bytes por ciclo a cada uno de los "miniprocesadores" (como tú los llamas). El cuello de botella aparece si esos accesos no se hacen "fusionados", es decir, si cada uno de los miniprocesadores dentro de cada grupo de 16/32 hilos, accede a direcciones no contiguas de memoria (lo mismo que en un vectorial). Si son contiguas, y en estas últimas tarjetas ni siquiera tiene que ser en orden (lo ordena el controlador), puede servir un dato de un ciclo para otro (los procesadores utilizan multithreading para esconder la latencia de cada acceso, de forma que para cuando le vuelve a tocar ya tiene ahí el dato si está solo a "una latencia" de distancia). Si no, te comes una latencia más que importante.

    El controlador de memoria de estas tarjetas es increíblemente complejo. Su funcionamiento es más flexible y más complejo que el de un procesador vectorial, dando más oportunidades de explotar paralelismo a cambio de ciertas complejidades adicionales. Lo único que le falla, por el momento, es la escalabilidad. Por todo lo demás, estas nuevas arquitecturas manycore se comen lo que les eches.

    Todo esto aparte, un solo procesador SX-9 tiene MENOS rendimiento pico en doble precisión que una GTX280. La GTX280 tiene un pico teórico de 116GFLOPs, de los cuales en aplicaciones reales se ha alcanzado entre 60-80GFLOPs. Un solo SX-9 alcanza 102GFLOPs pico teóricos, de los cuales vete a saber cuántos se han alcanzado en aplicaciones reales. La fuerza de ese tipo de supercomputadores es su escalabilidad, puedes juntar 8000 nodos y el rendimiento se multiplica. Pero para una placa que se pincha en un PC y que cuesta menos de 600$, sigue sin tener competencia NI DE LEJOS. Y desde luego, 80GFLOPs en doble precisión SÍ es espectacular para un sistema de esas características. Tan espectacular que no hay nada ni cercano a eso, de nuevo, en los términos en los que nos estamos moviendo.

    [ Padre ]
  • por Vacatalada (31662) el Lunes, 24 Noviembre de 2008, 23:29h (#1102448)
    ( Última bitácora: Jueves, 31 Mayo de 2007, 20:41h )
    Yo sólo le ponía un ejemplo de que existen otras cosas, que para mi gusto son más "bonitas" de trabajar con ellas.

    Desde luego, no digo que las Nvidia de esas sean una tontería, es más yo tengo una 9800GT en casa para "juguetear" con ella ;-)

    Puse un SX-9 como ejemplo porque son los únicos procesadores vectoriales clásicos que siguen vivos.

    ¿Te cabe siquiera encima de la mesa un SX-9 o tratas de hacerte el listillo?
    El teclado de mi portátil es más grande que un procesador + 64GB de un SX-9, y los rack de 16 procesadores creo que son los típicos 42U.

    vectorizar un código es mucho más complicado que CUDA-ificarlo, que es casi como usar OpenMP
    Yo hablaba de códigos fácilmente vectorizables, por ejemplo la previsión meteorológica...
    A mi me parece mucho más fácil vectorizar esos algoritmos "a mano" en un procesador vectorial que implementarlos en una Nvidia.
    En un vectorial, operaciones con matrices enormes se pueden codificar "a mano" de forma sencilla, en una Nvidia (al menos en la mía) es una puñeta... como se te ocurra usar la memoria principal y pasar de las caches para simplificar el código no tira todo lo que debería tirar (aunque corra como 100 veces más que en un Opteron)

    Y no hablemos de la simplicidad del código...

    Todo esto aparte, un solo procesador SX-9 tiene MENOS rendimiento pico en doble precisión que una GTX280. La GTX280 tiene un pico teórico de 116GFLOPs, de los cuales en aplicaciones reales se ha alcanzado entre 60-80GFLOPs. Un solo SX-9 alcanza 102GFLOPs pico teóricos, de los cuales vete a saber cuántos se han alcanzado en aplicaciones reales
    Una Nvidia...
    80/116 = ~69%
    Un sistema SX-6 (2001) del top500 con múltiples nodos unidos por un crossbar.
    35860/40960 = ~87% Y eso que los nodos están dispersos por una habitación enorme...
    http://www.top500.org/system/performance/5628 [top500.org]

    El roadrunner (el de tu ejemplo) tiene: 1105000/1456000 = ~76%
    Así que el rendimiento respecto a su potencia máxima de las Nvidia no es nada sorprendente. Su precio sí, en eso no discutimos.
    [ Padre ]