lunes, mayo 24, 2010

Más de programacion paralela: OpenMP

OpenMP es un estandar creado por un grupo de fabricantes de software y hardware, con la intención de crear herramientas que sean útiles y de fácil uso, para la programación de máquinas de varias unidades de procesamiento con memoria compartida.

Es decir, herramientas que permitan a cualquier programar supercomputadoras clásicas (como la Cray). Y la idea es que sea posible programar de manera secuencial, para que cualquiera pueda desarrollar sus algoritmos sin tantas complicaciones y que a su vez, la porción paralela se ejecute en hilos, pero la decisión de cuantos hilos y de como sincronizarlos se le deja al compilador y no al programador. Que como se puede intuir, ayuda al programador.

Esto se logra mediante pragmas, directivas, llamadas a funciones y variables, que le indican al compilador que debe paralelizar en hilos.

Pero si es para programar supercomputadoras ¿qué sentido tiene hablar de ello cuando muy pocos pueden acceder a una de esas máquinas? Lo interesante, Open MP es independiente de plataforma (portable), y es posible usar OpenMP si se cuenta con una computadora con al menos dos núcleos. Es decir, gracias al avance de los procesadores, hoy cuanquiera con al menos dos núcleos, puede aprovechar el uso de OpenMP.

Y lo mejor aún, el compilador de GNU gcc soporta el más reciente estándar OpenMP 3.0; por lo que si además se tiene instalado alguna distribución GNU/Linux, ya se puede comenzar a jugar con OpenMP.

La página oficial de OpenMP:

http://openmp.org/wp/

Y ahí mismo hay mucho material para comenzar a trabajar, en donde se puede encontrar un tutorial de intel, que me ha parecido bastante bueno para comenzar a entender que es y como funciona OpenMP.

http://software.intel.com/en-us/articles/getting-started-with-openmp/