OpenCL es un estandard propuesto por el grupo khronos, que es un conglomerado de empresas de tecnología informática que se encarga de estándares abiertos tales como OpenGL que como todos sabemos es la libreria de programación 3d de facto en general y solo segunda a direct x en windows.
Dada la evolución que los GPU están teniendo, se comienzan a convertir en procesadores de propósitos más generales que solo el renderizado, OpenCL es el intento de estandarzar estos recursos, esto es más extenso que lo que prentende nvida con CUDA que por ser código cerrado tiene menos opciones a futuro que un estándard soportado por la mayoría de fabricantes.
básicamente los GPU son procesadores orientados a calcular una cantidad masiva de datos paralelamente, cosa en la que los cpu's x86 no son tan eficientes, si se pusiera un cpu a tratar de generar threads para un proceso con miles de datos, se tardaría demasiado tiempo solo tratando de ubicar recursos, en los gpu la instanciación de procesos con datos distintos es instantánea y realizada con una velocidad cientos de veces mayor a la de un cpu.
¿y eso en que afecta mis conocimientos de programación?
si OpenCL tiene éxito, las tarjetas gráficas dejarán de ser un artículo de entretenimiento y se convertirán en la piedra angular de los sistemas de bases de datos, diseño arquitectural, en la minería de datos y en la infinidad de campos de aplicación que una arquitectura masivamente paralela tiene. señores podríamos estar ante la siguiente revolución informática.
se pueden dar dos posibles escenarios:
1. la computación paralelizada puede cambiar completamente el paradigma de programación (principalmente a bajo nivel), las máquinas virtuales se volverían cosa de todos los días y pues los lenguajes actuales estarían en clara desventaja desde el punto de vista del desempeño de las aplicaciones, habría que empezar a forjar nuevas herramientas de programación para explotar los recursos enormes que tendriamos a la mano.
2. los lenguajes de programación se adaptan y simplemente hacemos un INCLUDE OPENCL en la cabecera de nuestro programa y usamos un par de librerías extra, esto a mi parecer sería talvez de las primeras iteraciones del OpenCL y no su forma final.
si este proyecto obtiene el apoyo necesario, los programadores no informados podemos quedar en una desventaja crítica, ciertamente vivimos en una era dorada de la tecnología, es realmente algo motivador.