Loading [MathJax]/extensions/TeX/AMSsymbols.js

PESTAÑAS

lunes, 6 de febrero de 2012

Computación en paralelo I

Hola a todos


En esta ocasión voy a hablar muy escuetamente de lo que va a ser el futuro de la programación científica: la computación en paralelo.

Actualmente los procesadores tienden a tener un número de núcleos mayor de uno, tal y como era hace unos años: todos estamos familiarizados con los "Pentium core 2 duo" o los modernos "Pentium I3, I5, etc". Sin embargo, por lo que a mi respecta, la formación universitaria en ingeniería sólo cubre nociones básicas de programación en serie. Es obvio que, desde un punto de vista computacional, si se poseen varios núcleos de procesamiento, el realizar una programación capaz de utilizar simultáneamente la potencia de cálculo de esos cores va a ser mucho más ventajoso.

Sin embargo, hasta hace bien poco desconocía por completo un punto de partida que me pudiera orientar para empezar a caminar en este vasto campo. Pues bien, si queréis una piedra angular de referencia, vuestra palabra mágica es MPI.

El MPI se puede considerar como un anexo a los lenguajes de programación típicos en ciencias (Fortran, C) que permite procesar un código arrancando varios "threads", o hilos de computación. Realmente lo ideal es ejecutar tantos threads como núcleos tengas en tu cluster, pero no tiene por que ser así.

Para realizar un código en paralelo, hay que pasar de una mentalidad de cálculo en serie, y comenzar a pensar como se puede distribuir todas las tareas que tiene que hacer el código: habrá tareas, como una búsqueda de elementos en un fichero o matriz, que se puede "descomponer" en partes que pueden llevar a cabo cada núcleo. En cambio habrá otras que no se puedan descomponer de modo directo, como la escritura y lectura simultánea de un fichero.

Todas estas tareas deben ser coordinadas, esto es, normalmente se programa de forma que uno de los núcleos actúa como maestro y el resto como esclavos: el primero realizará tareas no paralelizables y se encargará de enviar y recibir información que los esclavos necesiten y/o proporcionen. Los cores esclavos se encargarán de realizar la computación respectiva, enviando o recibiendo información vital para el código.

MPI es una alternativa básica a la programación tradicional. Sin embargo, otras aplicaciones están desarrollándose rápidamente, con el afán de simplificar los procesos de comunicación entre cores y la distribución del trabajo: un ejemplo clásico es el OpenMP.


En próximos posts hablaré más en detalle de MPI y OpenMP.


Un saludo

2 comentarios:

Unknown dijo...

Hola,


Hola

El server de LATEX que suministraste no me funciona. Me podrías decir si ahora te está funcionando a tí?
Muchas gracias,
Josemari

DAVID RODRIGUEZ dijo...

Hola Jose María

En primer lugar quería pedirte disculpas por la tardanza (casi 3 meses es una vergüenza absoluta). La verdad es que estoy muy liado acabando mi doctorado y no he dedicado nada de tiempo al blog.

En cuanto a tu pregunta, comentar que el script que tengo puesto en mi blog para visualizar LATEX si que me funciona: de hecho, si no funcionara no podría visualizar las fórmulas adecuadamente en el blog porque estoy utilizando dicho script.

El problema que tienes podría estar debido al dominio de tu blog: mi blog esta ubicado en blogspot (blogger). Por lo que leí, dependiendo el dominio, la gente utiliza unos script u otros. La verdad es que no sabría decirte mucho más, ya que mi dominio sobre html es nulo. Sin embargo, en la web www.watchmath.com , hay un foro en el que se discute al respecto. Yo estuve siguiendo las conversaciones hasta dar con un script adecuado al dominio de blogger.
Busca en google palabras clave tipo "latex writting" o "escribir latex" + el dominio que utilices para tu web/blog y prueba a ver si encuentras algún script adecuado.

Siento no haberte contestado antes. Me disculpo de nuevo. Voy a retomar la escritura del blog y a actualizar contenidos. Espero haberle sido de ayuda.

Un saludo


DAVID RODRIGUEZ