Activa las notificaciones para estar al tanto de lo más nuevo en tecnología.

Para quienes quieran hacer supercómputo

Actualmente vivimos en el mundo de las computadoras que tienen más de un núcleo y esta es la tendencia que incluso se ve en los...

Actualmente vivimos en el mundo de las computadoras que tienen más de un núcleo y esta es la tendencia que incluso se ve en los dispositivos móviles. Hoy, los sistemas operativos sacan relativa ventaja de procesadores con varios núcleos. Para hacer verdaderamente supercómputo los sistemas tienen que distribuir las tareas de los programas en los diferentes núcleos. Desafortunadamente, esto no se puede hacer aún de forma mecánica y automática, pues los programas que hacen supercómputo requieren la ayuda de sus ‘amigos’, los desarrolladores.

Así entonces, nace OpenCL (Open Computing Language), un lenguaje de computación abierto, que consta de una interfaz de programación de aplicaciones y de un lenguaje de programación, Ambos permiten crear aplicaciones que puedan hacer paralelismo usando los diferentes núcleos, ya sea en procesadores normales (CPUs), como en los gráficos (GPUs). Este lenguaje OpenCL está basado en C99 eliminando cierta funcionalidad y extendiéndolo con operaciones vectoriales.

Apple fue quien creó la especificación original y fue desarrollada en conjunto con AMD, IBM, Intel y NVIDIA. Apple la propuso al Grupo Khronos (los mismos que desarrollan OpenGL) para convertirla en un estándar abierto y libre. El 16 de junio de 2008 Khronos creó el Compute Working Group para llevar a cabo el proceso de estandarización.

OpenCL forma parte de Mac OS X v10.6 (‘Snow Leopard’), mientras que AMD decidió apoyar OpenCL en lugar de su antigua API denominada Close to Metal. Intel también dispone de su propio entorno de desarrollo para hacer paralelismo y supercómputo, y NVIDIA además de tener su propia API para chips gráficos llamada CUDA, también soporta OpenCL.

Para usar OpenCL, lo que el programador tiene que hacer es definir qué partes de sus procesos pueden paralizarse. Como ya dijimos, la paralelización no se puede automatizar, por lo que es tarea del desarrollador analizar qué partes de los cálculos que hace pueden sacar ventaja de este esquema de paralelización y colocar las directivas de la biblioteca de OpenCL para entonces paralelizar los procesos.

Referencias:

SIGGRAPH y Grupo Khronos

Comentarios