domingo, 26 de abril de 2009

Programación Multinúcleo – C for Throughput

En esta nueva era de la informática donde los esfuerzos se centran en el desarrollo de la programación en paralelo, programación concurrente y los sistemas multiprocesadores y multinúcleo, las nuevas herramientas que faciliten el desarrollo de software en estas plataformas son de vital importancia, ya que la programación multicore no es nada sencilla, y menos si tomamos en cuenta que los chips comerciales muy pronto podrían tener cientos de núcleos.

Por eso, Intel lanzó un proyecto de investigación llamado CT (C for Throughput) que pretende hacer que compiladores estándar de lenguajes como C y C++ funcionen automáticamente bajo sistemas multiprocesador y multinúcleo sin la necesidad de modificar de manera significativa el código o recompilarlo.

Usualmente al hacer programación en paralelo, se aíslan partes del código que se utilizarán varias veces pero que necesitan ejecutarse por separado por cada tarea que requiera dicho código(a esto se le llama un módulo). Esta tarea es complicada puesto que todo el código se tiene que rehacer para cada sistema, dependiendo de cuantos núcleos tiene el sistema. CT pretende realizar todo este proceso de forma automática. La compatibilidad de CT sería para toda la gama de procesadores x86, por lo que serviría para programas y sistemas antiguos e incluso para procesadores ajenos a Intel (AMD y otros).

Los aspectos técnicos es que CT puede ser agregado a un sistema basado en C/C++ agregando la librería CT, esta genera en entorno en tiempo de ejecución las herramientas necesarias para el manejo de memoria, threads y directivas al compilador. CT trata de obtener y dividir al sistema en la mayor cantidad de tareas independientes que pueda en tiempo de ejecución y el motor de CT los entrega.

Los usos que se puede hacer con esta nueva tecnología son inmensos. Un ejemplo sería el rendimiento de las tarjetas aceleradoras de gráficos, que sería muy superior al que se tiene con las tarjetas mas poderosas, al manejar de manera adecuada todos los recursos que los sistemas multicore proveen. Y lo mejor de todo es que los programadores no tiene que hacer nada extra mas que agregar una librería a sus programas para obtener estos beneficios. Veremos que pasa. - OverflowIT