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 Jueves, 11 Diciembre de 2008, 18:00h (#1107423)
    El que te equivocas de cabo a rabo eres tú.

    Dime un sólo compilador capaz de resolver, como dices tú, los problemas de la concurrencia y del paralelismo para varios procesadores diferentes.

    Esperaré sentado.
    [ Padre ]
  • por pobrecito hablador el Jueves, 11 Diciembre de 2008, 18:07h (#1107426)

    Lo importante para aprovechar los recursos de la máquina no es el lenguaje, si no el compilador.

    A ver, que esto promete...

    Si el compilador genera código optimo para cada arquitectura de soporta

    Y si te la chupa mientras lo compila ya sería la hostia. Pero NO, no te la chupa y no te hace ningún tipo de optimización interesante para la arquitectura. Al final, si utilizas tú mismo los recursos a mano medio mal, ya vas el varias veces mejor de lo que es capaz de funcionar un compilador hoy en día. Si te paras a pensar un poco, es fácil ir 20, 50 o 100 veces más rápido que lo que escupe el compilador. De nuevo, hablo de estas arquitecturas.

    ¡¡Si pasa lo mismo entre las arquitecturas de PC!!

    Una arquitectura de PC es genérica, y cualquier PC expone más o menos los mismos recursos (un juego de registros, una memoria principal y tal vez un juego de instrucciones vectoriales, juego que los compiladores no son capaces de explotar decentemente), y son recursos que no tienen nada de particular. Las arquitecturas de propósito específico tienen componentes hardware muy particulares y que además son los que les dan esa potencia extra que es la que nos interesa. Y mientras que en un programa de propósito general, para una arquitectura de propósito general, lo que te juegas entre hacerlo tú y dejar al compilador es, normalmente, algo mínimo; lo que te juegas en una arquitectura de estas es la diferencia entre que te merezca la pena hacerlo en la GPU o que sea mejor dejarlo para la CPU. Casi nada.

    Si la cosa es bien sencilla, muéstrame un solo compilador que genere código de forma automática para una de estas arquitecturas. Con "de forma automática" me refiero a que coja un lenguaje general (que no exponga las particularidades de la arquitectura) y genere el código para la plataforma específica de forma eficiente.

    Y te voy a decir aún más. Si los compiladores tuviesen la capacidad, hoy en día, de pasar de un código tipo OpenCL a una arquitectura tan específica como una GPU, no te quepa duda de que podrían hacer lo mismo con C + OpenMP. Hay implementaciones que pasan de OpenMP a CUDA, pero como te digo, en rendimiento son una mierda.

    [ Padre ]
  • por pobrecito hablador el Jueves, 11 Diciembre de 2008, 18:44h (#1107439)
    Me he leido muy por encima la especificación pero me ha parecido que OpenCL se compila en tiempo de ejecución... Lo único que hace es abstraer la problemática de la programación paralela, que sí es siempre la misma en cualquier arquitectura. La adaptación concreta al hardware se hace en tiempo de ejecución por lo que el rendimiento estará cerca del óptimo.
    [ Padre ]