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 faragon (17575) el Lunes, 02 Junio de 2008, 20:57h (#1049703)
    ( http://www.voluntariado.net/ | Última bitácora: Domingo, 10 Junio de 2012, 21:48h )
    10000 hilos concurrentes a 100 GB/s entre hilo, da 1000 TB/s -yo no me lo creo-, no está mal, chaval, que diría Charly Glamour :-)

    Respecto a los saltos en el Cell, penalizan más o menos como cualquier CPU que no ejecute fuera de orden, se soluciona a base de "loop unrolling" y buena voluntad ;-)

    El Cell, por mi experiencia, está a años luz en flexibilidad de cualquier GPU actual (cálculo, número de registros por unidad vectorial, memoria local, comunicación entre unidades vectoriales, transferencias por DMA en segundo plano, etc.). Eso sí, me encantaría que las GPUs fuesen más flexibles, palabra.
    [ Padre ]
    Puntos de inicio:    1  punto
    Modificador por Bonus-Karma   +1  

    Total marcador:   2  
  • por pobrecito hablador el Lunes, 02 Junio de 2008, 22:18h (#1049725)
    10000 hilos concurrentes a 100 GB/s entre hilo, da 1000 TB/s -yo no me lo creo-, no está mal

    100 GB/s (unos 108, en realidad) es el ancho de banda con la memoria de vídeo (la memoria principal para la GPU). Lo cual es unas 4 veces lo que tiene disponible un Cell en acceso Local Storage a Main Storage.

    Respecto a los saltos en el Cell, penalizan más o menos como cualquier CPU que no ejecute fuera de orden, se soluciona a base de "loop unrolling" y buena voluntad ;-)

    ¿Qué CPU no ejecuta fuera de orden? Y no penaliza lo mismo que una CPU en orden (que no penaliza nada, pero el rendimiento es un pedo), su predictor de saltos es una porquería y la penalización es muy exagerada. Y el loop unrolling, en general, podrá paliarlo, no arreglarlo. Y desde luego poco o nada que hacer con condicionales. Por ejemplo, un bucle for de 10 millones de iteraciones con un if dentro, la mitad del código en el if y la otra mitad en el else. Te cagas.

    El Cell, por mi experiencia, está a años luz en flexibilidad de cualquier GPU actual (cálculo, número de registros por unidad vectorial, memoria local, comunicación entre unidades vectoriales, transferencias por DMA en segundo plano, etc.). Eso sí, me encantaría que las GPUs fuesen más flexibles, palabra.

    Y no obstante, mi experiencia (y la de todos los que yo conozco) es que se consigue mucho más rendimiento con una GPU que con un Cell. Es mucho más fácil de programar y tiene la ventaja de tener muchas más unidades de procesamiento, oculta muchísimo mejor las latencias (hasta el punto de que, por ejemplo, los saltos en general no influyen en el rendimiento (solo en casos muy específicos, donde hay mucha divergencia dentro de grupos de threads pequeños, lo cual no es común y cuando aparece suele poder solucionarse)) y para colmo es mucho más barata. De hecho, y en general, si se programa con cuidado la mayoría de las veces se puede conseguir más rendimiento con una CPU que con un Cell. A poco complejo que sea el algoritmo y que tenga patrones de acceso irregulares y dispersos (que destroza al Cell por el rollo de los LS), el Cell se te hunde frente a una CPU.

    Mi experiencia es que salvo para cuatro cosas muy muy concretas, no merece la pena la paliza que supone pegarse con el Cell.
    [ Padre ]