OpenMPI en Ubuntu con Geany


MPI es una interfaz, API o especificación para el paso de mensajes (síncronos y asíncronos) entre ordenadores para permitir una comunicación. Generalmente es usado en supercomputadores, clusters de computadores y en general sistemas distribuidos ya que no requiere memoria compartida.

Existen muchas implementaciones de MPI y en multitud de lenguajes. Las implementaciones más usadas son las escritas en C y C++.

OpenMPI Logo
OpenMPI Logo

En este artículo usaremos la implementación de software libre OpenMPI escrita en C por un consorcio de acádemicos, investigadores e industrias afines. Esta implementación soporta la versión MPI-2 de 1997 por lo que esta muy capacitada para desarrollos profesionales.

Para instalarla en Ubuntu, en mi caso Ubuntu Maverick 10.10:

$ sudo apt-get install libopenmpi-dev openmpi-bin openmpi-doc

Puedes probar un ejemplo simple con el siguiente código:

#include < stdio.h>
#include < mpi.h>

int main(int argc, char** argv)
{
    int myrank, nprocs;

    MPI_Init(&argc, &argv);
    MPI_Comm_size(MPI_COMM_WORLD, &nprocs);
    MPI_Comm_rank(MPI_COMM_WORLD, &myrank);

    printf("Hello from processor %d of %d\n", myrank, nprocs);

    MPI_Finalize();
    return 0;
}

Compilarlo con:

$ mpicc MPI_Hello.c -o MPI_Hello

Y ejecutarlo con:

$ mpiexec -n 5 MPI_Hello

Obtendrás una salida similar a:

$ mpiexec -n 5 MPI_Hello
Hello from processor 1 of 5
Hello from processor 0 of 5
Hello from processor 2 of 5
Hello from processor 4 of 5
Hello from processor 3 of 5

Obviamente más ejecuciones pueden darte resultados distintos o diferir de este, ya que cada procesador puede ejecutarse en diferentes momentos.

Integrar entorno de desarrollo Geany

Si además deseas integrar un IDE como Geany para hacer el proceso de compilación y ejecución fácil y rápido, puedes seguir los siguientes pasos para poder compilar un programa MPI con Geany:

1. Descargar el archivo de etiquetas C para OpenMPI y copiarlo a ~/.config/geany/tags/

$ wget http://shakaran.net/blog/wp-content/uploads/openmpi.c.tags
$ cp openmpi.c.tags ~/.config/geany/tags/

Actualización: También puedes generar el fichero con:

$ geany -g -P openmpi.c.tags /usr/include/mpi.h

2. Abrir el ejemplo MPI anterior con Geany

3. Establecer las configuraciones de compilación. Para ello, pinchar en el menú “Construir > Establecer comandos de construcción

En compilar poner:

mpicc -Wall "%f" -o "%e"

En ejecutar:

mpiexec -n 5 "%e"

Debería quedarte algo como en esta imagen (pinchar para ampliar):

Configuraciones de compilacion
Configuraciones de compilacion

7 thoughts on “OpenMPI en Ubuntu con Geany”

  1. No se si alguien tuvo problemas pero yo no pude utilizar el comando mpiexec -n 5 MPI_Hello, a mi me dio problemas asi q utilice este comando mpirun -n 5 MPI_Hello, ademas en el ejemplo MPI_Hello.c tienen q borrar los espacio q se encuentran despues del simbolo < q se encuentra en la declaracion de las librerias, a parte de esto el post me sirvio de mucha ayuda.

  2. Hola Byron,

    Como dices, es más correcto usar mpirun en lugar de mpiexec, aunque debería funcionarte.

    Sobre MPI_Hello.c debido al plugin de formateado de código en WordPress que utilizo (WP Codebox) si pongo los includes, bien puestos, los toma como etiquetas, de ahí que tenga que poner un espacio entre medias (todos mis artículos con código C, tienen este “defecto”).

    Me alegro que te haya servido de ayuda 😉

  3. A mi me funciono perfecto muchas gracias por el aporte, me encuentro un poco confundido con este tema que es nuevo para mi. y me ha servido mucho gracias.

  4. amigo tengo un problema estoy desarrollando un programa y necesito la implementacion de esta libreria mpi.h, ademas que el programa lo estoy programando en Codeblocks en c++. algun link para poder descargar la dicha libreria y anadirla a mi proyecto. porfavor se les agradece

  5. En artículo hago referencia la web de OpenMPI http://www.open-mpi.org Puedes descargar el código fuente de la biblioteca mpi.h desde allí. Aunque este artículo esta orientado a la programación desde Ubuntu y no se si quizás estas usando Windows. En cuyo caso, desde el mismo sitio también tienes disponible la biblioteca para su descarga.

Deja un comentario