por
pobrecito hablador
el Jueves, 11 Diciembre de 2008, 16:48h
(#1107408)
Pero tanto las GPUs CUDA, como los DSPs (no sé cómo se podría portar OpenCL a un DSP cualquiera, tal vez a uno concreto pero no a cualquiera), como el Cell son procesadores de propósito específico. Hasta tal punto que si no son programados de una forma muy determinada y haciendo uso de unos recursos específicos de cada una de las arquitecturas, se vuelven casi inútiles.
Cuando programas ese tipo de arquitecturas tan dirigidas, si no haces uso del hardware específico del que dispones, por lo general el rendimiento es paupérrimo. Para poder hacer uso de ese hardware específico (la memoria compartida, las unidades de texturas, los distintos espacios de memoria de una GPU, por ejemplo), ese hardware tiene que ser expuesto. Y aquí tienes dos opciones: o lo expones y tu lenguaje ya no es portable (caso de CUDA), o no lo expones y el rendimiento es una basura (caso, sospecho, de OpenCL).
Si el objetivo de estos aparatos fuese conseguir que las cosas corrieran en ellos, pues algo como OpenCL sería válido. Pero lo que queremos es que corran tan rápido como sea posible, y eso solo se puede conseguir con lenguajes muy específicos o generalizando la estructura (de forma que lo que tengamos sean implementaciones diferentes de la misma idea estructural del computador). Y como digo, no creo que ahora ATI se ponga a diseñar las tarjetas para que sean similares a las CUDA de nvidia. Mucho menos (porque ya no tendría sentido siquiera) que lo hagan con otro tipo de dispositivos que no sean para gráficos (como un DSP o Cell).
Re:Opinión a primera vista
(Puntos:0)Cuando programas ese tipo de arquitecturas tan dirigidas, si no haces uso del hardware específico del que dispones, por lo general el rendimiento es paupérrimo. Para poder hacer uso de ese hardware específico (la memoria compartida, las unidades de texturas, los distintos espacios de memoria de una GPU, por ejemplo), ese hardware tiene que ser expuesto. Y aquí tienes dos opciones: o lo expones y tu lenguaje ya no es portable (caso de CUDA), o no lo expones y el rendimiento es una basura (caso, sospecho, de OpenCL).
Si el objetivo de estos aparatos fuese conseguir que las cosas corrieran en ellos, pues algo como OpenCL sería válido. Pero lo que queremos es que corran tan rápido como sea posible, y eso solo se puede conseguir con lenguajes muy específicos o generalizando la estructura (de forma que lo que tengamos sean implementaciones diferentes de la misma idea estructural del computador). Y como digo, no creo que ahora ATI se ponga a diseñar las tarjetas para que sean similares a las CUDA de nvidia. Mucho menos (porque ya no tendría sentido siquiera) que lo hagan con otro tipo de dispositivos que no sean para gráficos (como un DSP o Cell).