GUÍA DE OPERACIÓN Y ADMINISTRACIÓN DEL CLUSTER ABACUS

CLUSTER ABACUS

GRUPO DE EVOLUCIÓN ARTIFICIAL (GEA), UNIVERSIDAD DE EXTREMADURA

Descripción: Cluster Beowulf para realizar computación de altas prestaciones

Nº actual de nodos: 10 (1 nodo maestro y 9 nodos de computación)

Sistema operativo: NPACI ROCKS (basado en Red Hat Linux)

Operación del cluster abacus

Compilación y ejecución de programas en paralelo usando MPICH:

  1. Añadir el camino al directorio de ejecutables de MPICH para ethernet al path del usuario (para evitar tener que poner el path cada vez que se teclea el comando). Para ello incluir la siguiente línea en el archivo ~usuario/.bash_profile (antes de la línea export PATH):

    PATH=$PATH:/opt/mpich/ethernet/gcc/bin

    A continuación salir completamente del sistema e iniciar una nueva sesión.

  2. Compilar el código fuente usando el compilador C para MPI:

    $ mpicc -o programa programa.c

  3. Incluir en el directorio en que se esté trabajando un archivo "machines" y poner en el mismo el nombre de los nodos en que deba ejecutarse el programa. Por ejemplo:

    [jlguisado@abacus mpi_practicas]$ cat machines
    compute-0-0
    compute-0-1

  4. Iniciar un agente SSH, para que suministre automáticamente la clave SSH a los nodos de computación en vez de pedirla al usuario de modo interactivo:

    $ ssh-agent $SHELL
    $ ssh-add

  5. Ejecutar el programa con la orden mpirun, especificando el número de nodos (que debe coincidir con los especificados en el archivo machines):

    $ mpirun -np nº_de_nodos -nolocal -machinefile machines /ruta_al_directorio_de_trabajo/programa

Ejemplo: compilación y ejecución del programa de prueba "hello_advanced.c":

[jlguisado@abacus mpi_practicas]$ cat hello_advanced.c
/*************************************************************************
PROGRAM hello_advanced.c

A program to try MPI_Comm_size and MPI_Comm_rank
**************************************************************************/

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

void main(int argc, char *argv[])
{
int my_rank, size;

MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &my_rank);
MPI_Comm_size(MPI_COMM_WORLD, &size);
if (my_rank == 0)
{
printf ("I am process %i out of %i: Hello world!\n", my_rank, size);
}
else
{
printf ("I am process %i out of %i.\n", my_rank, size);
}
MPI_Finalize();
}

[jlguisado@abacus mpi_practicas]$ mpicc -o helloworld helloworld.c
[jlguisado@abacus mpi_practicas]$ ssh-agent $SHELL
[jlguisado@abacus mpi_practicas]$ ssh-add
Enter passphrase for jlguisado@abacus.unex.es:
Identity added: /home/jlguisado/.ssh/identity (jlguisado@abacus.unex.es)
[jlguisado@abacus mpi_practicas]$ mpirun -np 2 -nolocal -machinefile machines /home/jlguisado/mpi_practicas/hello_advanced
I am process 1 out of 2.
I am process 0 out of 2: Hello world!


Administración del cluster abacus

Inicio y parada de todas las interfaces de red:

Orden: #/etc/init.d/network {start,stop}

Apertura de una nueva cuenta de usuario:

  1. Comprobar que no existe cuenta con el mismo nombre de usuario: #grep nombre_de_usuario /etc/passwd
  2. #useradd nombre_de_usuario
  3. Desde la consola del nodo maestro, conectarse como el nuevo usuario: #su - nombre_de_usuario
    Especificar un frase de paso para que se generen las claves de SSH.
  4. Asignar la clave de usuario UNIX al usuario: #passwd nombre_de_usuario

 

José Luis Guisado Lizar

Grupo de Evolución Artificial.
Centro Universitario de Mérida
Universidad de Extremadura

E-mail de Contacto: jlguisado@unex.es