Configuración MPI
Índice
MPI
Message Passing Interface (MPI) is a standardized and portable message-passing system designed by a group of researchers from academia and industry to function on a wide variety of parallel computing architectures. Wikipedia
OpenMPI
The Open MPI Project is an open source Message Passing Interface implementation that is developed and maintained by a consortium of academic, research, and industry partners. Open MPI is therefore able to combine the expertise, technologies, and resources from all across the High Performance Computing community in order to build the best MPI library available. Open MPI offers advantages for system and software vendors, application developers and computer science researchers. Open-MPI.org
Descarga
Descarga (.tar.gz): https://www.open-mpi.org/software/
Descompresión
Descomprimir
tar -xzvf <nombre>.tar.gz
cd <nombre>
Configuración
- Configurar y compilar los archivos
./configure --prefix="<ruta>"
make
sudo make install
- Invocar las utilidades instaladas de MPI, se necesita cargar ciertas variables al entorno de trabajo
export PATH="$PATH:<ruta>/bin"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:<ruta>/lib/"
NOTA: Para no tener que invocar en cada sesión las anteriores variables, basta con agregar las siguientes reglas a la configuración del ambiente
echo export PATH="$PATH:<ruta>/bin" >> /home/$USER/.bashrc
echo export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:<ruta>/lib/" >> /home/$USER/.bashrc
Compilar
- C
mpicc <nombre>.c -o <nombre ejecutable>
- C++
mpic++ <nombre>.cpp -o <nombre ejecutable>
Ejecutar
mpirun --hostfile hostfile -np <número de procesos> ./<nombre ejecutable>
Archivo de hosts (hostfile)
El archivo de hosts se genera a partir de los nodos que se quieran utilizar en el procesamiento, basta con escribir un archivo de texto plano con los alias de los hosts (o con las direcciones IP)
node01
node02
node07
Para el ejemplo anterior se indica que se van a utilizar los nodos node01, node02 y node07 para procesar algún trabajo.
Posibles errores
Falta de compilador C/C++
apt install build-essential