texto:   A-   A+
eliax

Finalizada la especificación OpenCL 1.0 en tiempo récord
eliax id: 5918 josé elías en dic 9, 2008 a las 12:44 PM (12:44 horas)
Según el grupo de ingeniería y estandarización Khronos, el grupo finalizó en tiempo récord (unos 6 meses desde que se reunieron por primera vez hasta que salió la primera versión) la especificación técnica completa del OpenCL (Open Computing Language) versión 1.0.

Para los que no saben, OpenCL es una manera de programar los GPUs (los procesadores dentro de las tarjetas de video, a diferencia del procesador maestro de tu PC o Laptop) para que esta programación se haga de manera estándar.

La razón de querer hacer esto es que da la casualidad de que muchas de las tareas que un GPU debe hacer dentro de una tarjeta de video (sea para decodificar video, codificar video, o procesar gráficos en 3D) son matemáticamente genéricos para uno poder hacer todo tipo de otras funciones de mucha utilidad para científicos en programación.

Para que tengan una idea, un GPU puede ejecutar cierto tipo de instrucciones decenas, cientos o miles de veces mas eficiente que un CPU que emule las mismas instrucciones que ejecuta un GPU nativamente.

Note que desde hace un tiempo ya empresas como NVIDIA, AMD/ATI, y recientemente Intel, entre otras, están dotando sus GPUs de una manera de poder programarse genéricamente. El problema ha sido sin embargo que cada modelo de programación es diferente, y lo que OpenCL planea hacer es crear un modelo unificado, de modo que un programa diseñado para tomar ventaja de la existencia de uno o varios GPUs pueda funcionar en cualquier entorno, sea en una chip de NVIDIA, AMD/ATI, Intel, o cualquier otro fabricante en el futuro.

Algo interesante es que la razón principal de la creación de OpenCL fue Apple, quien anunció que la próxima versión de su sistema operativo Mac OS X 10.6 (el OS X "Snow Leopard") ofrecerá soporte nativo para OpenCL, lo que hará de ese sistema operativo algo extremadamente potente para varios tipos de software en comparación con lo disponible en Windows o Linux (quienes tienen sus propias maneras de programar GPUs, pero no estandarizada).

Esta aceleración será evidente en OS X Snow Leopard cuando uno esté manipulando datos multimedia (imágenes, videos, sonido), así como ejecutando código altamente paralelizado y orientado a aplicaciones científicas (como el folding@home).

Será interesante ahora ver como la comunidad de código libre y Microsoft adoptan este estándar en sus respectivos sistemas operativos...

Fuente de la noticia

OpenCL en Wikipedia

autor: josé elías

Comentarios

  • En realidad muy interesante esta nueva tecnologia, ando trackeandola desde q Steve Mobs lo anuncio en junio de este a;o, algo q no creo q vaya a suceder es q Mocosoft lo vaya a implementar o siquiera a adoptar porq ellos tambien andan trabajando en algo "similar" DX 11.. bueno quien sabe quizas si lo lleguen hace hacer.. looking forward on this new release of the Snow Leopard to power up my MacBook Pro. Buen post Eliax.

  • Esta bien bueno el analysis.

    Pero creo que lei un articulo hace unos meses atras (un benchmark) donde intel probaba que tener un CPU que pueda ejecutar instrucciones vectorizadas es mucho mas potente que un GPU.

    Alguien puede confirmar o desconfirmar?

    • Eso no es cierto :)

      A lo que te refieres es a una nueva arquitectura de Intel en donde pondrán decenas o centenares de micro-CPUs en paralelo a hacer el trabajo de un GPU.

      Sin embargo, esos "CPU" de Intel en realidad están optimizados también con instrucciones del mismo tipo que ejecutan los GPU.

      En otras palabras, puro mercadeo... :)

  • Creo que puede malinterpretarse la noticia cuando dice: "en comparación con lo disponible en Windows o Linux (quienes tienen sus propias maneras de programar GPUs, pero no estandarizada)."

    El OpenCL lo que busca (como tu lo dices en la noticia) proveer un API estándar para usar el GPU para cálculos paralelizados en aplicaciones tanto gráficas como no gráficas. La aseveración, de la noticia, puede llevar a pensar que en windows y Linux no hay estándares dados para programar el GPU, cuando no es así. El DirectX y OpenGL están pesandos para estandarizar el acceso a los recursos del GPU sin importar cual sea el GPU. Estamos de acuerdo que el ni el DirectX u OpenGL proveen mecanismos para usar el GPU en otra cosa que no sea gráficos (rendering, encoding, decoding, tracing, ligthing, texturing, etc.). El que quiera usar el GPU para calcular otra cosa que no sea relacionado con gráficos va a tener que ponerse a inventar (siempre y cuando no sea algo de audio, que para eso está OpenAL).

    El OpenGL existe en ambas plataformas (windows y Linux), lo único que la gente de microsucks se ha encargado de que los desarrolladores se fijen solo en DirectX ("No windows logo, if is not DirectX"), i.e., menos ventas.

    Esto suena muy bonito, tanto como sonó OpenGL y OpenAL cuando los lanzaron. Vamos a ver que hace microsucks para inventarse un API y hacerle la competencia a esto. Al final el que ponga más empeño (lease dinero, y presiones coorporativas) es el que tiene la "mejor tecnología".

    Yo no creo que la comunidad OpenSource tenga algún problema en implementar el estándar. Recuerda que las plataformas de OS de OpenSource son todas basas en algún un*x (cualquier cosa POSIX tambien cuenta), y al contrario de los OS como windows, son basados en acceso por niveles, donde implementar algo como OpenCL solo lleva escribir una libreria que envuelva los recursos de bajo nivel. En el caso de windows, algo como esto necesitaría algo a nivel del kernel para que fuera eficiente.

    Pero claro esto es solo blah, blah, blah.

Añadir Comentario

tu nombre
tu email
(opcional)
web personal
(opcional)
en respuesta a...
comentario de caracteres máximo
4 + 5 = requerido (control anti-SPAM)
 

"Increible! solo puedo decir: que el futuro es ahora en el presente."

por "Syruam" en ago 30, 2011


en camino a la singularidad...

©2005-2014 josé c. elías
todos los derechos reservados
como compartir los artículos de eliax