Cristina G. Pedraz/DICYT El paralelismo es una forma de computación basada en un principio aparentemente simple: dividir los problemas grandes en varios pequeños y solucionarlos simultáneamente, lo que permite ejecutar más instrucciones en menos tiempo. Pero llevado a la práctica, es una cuestión compleja en la que se encuentran investigando grupos científicos de todo el mundo. En la Universidad de Valladolid, investigadores del Departamento de Informática trabajan desde hace años en estos temas de computación distribuida, un área en la que han publicado múltiples artículos.
“El problema que pretendemos resolver es que los ordenadores de hoy en día han dejado de ser cada vez más rápidos y, los fabricantes, en vez de hacer un único microprocesador más avanzado, que tiene unos consumos muy elevados, lo que hacen es poner dos, cuatro o más, incluso 80 en algunos ordenadores experimentales”, detallan los investigadores Diego Llanos y Arturo González. Esto ha sido posible gracias a una mejora en la tecnología de fabricación, que ha posibilitado una reducción en el tamaño de los elementos que componen estos microprocesadores y, por tanto, que se puedan incluir más dispositivos en la misma área.
La parte principal de los microprocesadores es el núcleo, encargado de leer y ejecutar las instrucciones. La disminución de su tamaño ha permitido a los fabricantes tener mayor espacio e introducir más núcleos, con el fin de mejorar las prestaciones del procesador (realizar varias tareas a la vez).
“En lugar de introducir un microprocesador se colocan varios, juntos, para consumir menos. El problema es cómo sacarle partido a varios núcleos, ya que los microprocesadores funcionan de manera secuencial, es decir, si tienen que ejecutar un único programa y con un núcleo alcanza, el resto no hace nada”, explican.
Se trata, pues, de una “cuestión de eficiencia”. “Nosotros trabajamos en paralelización de algoritmos. Aprovechar dos núcleos es posible, pero cuando se habla de 4, 8, 16, etc, si se tiene una sola aplicación de cálculo intensivo, la cuestión es cómo aprovecharlos, es decir, qué hacer para que realmente funcionen todos a la vez”, subrayan. La resolución de este problema ocupa a la comunidad científica internacional, que está intentado obtener “una versión paralela que distribuya la tarea entre todos los obreros y por tanto aprovechar de forma automática un programa que ahora es secuencial, que primero hace una tarea y luego otra”.
Nuevos lenguajes
Por otro lado, recuerdan que buena parte de la tarea investigadora en esta línea se ocupa de diseñar “nuevos lenguajes que permitan expresar fácilmente cómo hacer eso, no de forma automática, sino manual, pero que permitan expresarlo bien y que sean productivos”.
Hasta el momento, añaden, todo el trabajo que se ha realizado en ingeniería de software y grandes aplicaciones de cara al mercado no ha incluido el tema del paralelismo o la distribución “de una forma clara”. Por ello, “son cosas cuyo resultado no se va a comprobar hasta dentro de unos años”.
“Escribir un programa secuencial es difícil, pero escribir un programa que funcione en paralelo distribuyendo tarea entre diferentes procesadores y luego comprobar que todos lo han hecho bien es muy complicado. Trabajamos en herramientas para hacer eso fácil, o bien realizando esa distribución automática o bien desarrollando lenguajes que permitan expresar ese paralelismo de manera simple”, insisten Diego Llanos y Arturo González, quienes investigan desde hace cerca de 10 años en esta línea, en la que se enmarcaron sus respectivas tesis doctorales.
NOTA: Los investigadores Diego Llanos y Arturo González en su área de trabajo en el Departamento de Informática.