Introducción

  • El cluster Kefren está accesible en la dirección kefren.dsic.upv.es.
  • El acceso al mismo únicamente está disponible mediante terminal segura SSH y está accesible desde cualquier punto de Internet.
  • El cluster consta de 19 nodos biprocesadores Pentium Xeon a 2 Ghz, interconectados mediante una red SCI con topología de Toro 2D en malla de 4x4. Debido a un problema de hardware el cluster, que inicialmente constaba de 20 nodos, ha tenido que ser reconfigurado a un cluster SCI de 16 nodos mas 3 nodos adicionales para trabajos secuenciales. Cada nodo consta de 1 Gigabyte de memoria RAM. El front-end es el punto de entrada al cluster y no se utiliza en ejecuciones de trabajos al cluster, de manera que para la red SCI quedan disponibles 15 nodos.
  • Está sometido a una temperatura ambiente no superior a 20º C.

Descripción del hardware

  • 20 nodos biprocesadores Pentium Xeon 2 Ghz.
  • Interconexión SCI con una topología de Toro 2D en una matriz de 4x4 nodos
  • El nodo principal consta de 4 discos duros Ultra160 SCSI de 36 Gbytes a 10000 rpm hot-plug. El resto de nodos constan de 1 disco duro IDE de 40 Gbytes a 7200 rpm.
  • Se puede encontrar una descripción más extensa del hardware del cluster en el siguiente archivo DescripcionKefren.pdf

Esquema de la red SCI:

En la siguiente figura viene un esquema de la como está formada la red SCI entre 16 de los 19 nodos del cluster. En primer lugar se crea una matriz de 4 filas x 4 columnas de nodos, interconectando cada nodo con su vecino, tanto en horizontal como en vertical. Luego también hay una conexión que cierra cada una de las filas (en rojo) y cada una de las columnas (en azul).

La red se reconfigura automáticamente en caso de fallo de algún nodo, para poder encontrar las nuevas rutas entre dos nodos del cluster. Los nodos siguen un esquema de nombrado que permite situarlos fácilmente dentro del esquema mostrado: hypercat1-1, hypercat3-2 hypercat4-3, etc

El nodo principal, que desde la red externa al cluster se ve como kefren.dsic.upv.es, internamente se ve como hypercat1-1.

Prestaciones

Prestaciones

Linpack HPL

El cluster odin obtiene un total de 19.53 Gflops usando HPL - A Portable Implementation of the High-Performance Linpack Benchmark for Distributed-Memory Computers.

Intel MPI Benchmark

Estos son los resultados obtenidos por la red SCI usando el Benchmark MPI de Intel:

PingPong latency: 3.18 usec
One-way data rate (PingPong): 230.29 MB/s
Two-way data rate (SendRecv): 273.97 MB/s

Software instalado

Sistema operativo

Linux CentOS 5.3 con kernel 2.6.18.

Compiladores

  • gcc, g++ version 4.1.2
  • g77 version 3.4.6

Librerías numéricas

BLAS
  • Version 3.0-37
  • Estándar: enlazar con -lblas
LAPACK
  • Version 3.0-37
  • Estándar: enlazar con -llapack
SCALAPACK
  • Version 1.8
  • /usr/local/soft/scalapack-1.8.0
  • Estándar: enlazar con -lscalapack

Sistema de gestión de colas

  • Version 2.3.6 de Torque. Al sistema de gestión de colas PBS se le ha adicionado el scheduler maui (ver. 3.2.6p21).

Matlab 7

  • Version 7.1.0.183 (R14) Service Pack 3
  • /usr/local/soft/matlab7/bin/matlab

Globus Toolkit 4

  • Version 4.2.1
  • /usr/local/soft/gt421

Librerías de comunicaciones MPI

  • NMPI 1.3.3.1: Implementación completa del estándar MPI-2, optimizada para la red de comunicaciones SCI (/usr/local/soft/nmpi-1.3.3.1).

Sistema de Ficheros GlusterFS

  • Sistema de ficheros GlusterFS versión 3.
  • Servidores en todos los nodos internos.
  • Striping de ficheros con tamaño de 1MB.
  • Replicación de datos en cada dos nodos
  • Un total de 300GB de espacio disponible.
  • Montado en el directorio /mnt/glusterfs.

Compilando un programa MPI

1. CONFIGURANDO LAS VARIABLES DE ENTORNO LA PRIMERA VEZ.

Edite el fichero .bashrc que está en su directorio de usuario y añada al final las siguientes líneas.

export MPI_HOME=/usr/local/soft/nmpi-1.3.3.1

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MPI_HOME/lib

export PATH=$PATH:$MPI_HOME/bin

Para cargar los cambios realizados, cierre todos los terminales abiertos y vuelva a conectarse. Alternativamente, puede ejecutar el siguiente comando y así no tendrá que cerrar los terminales.

. $HOME/.bashrc (¡Atención al punto inicial!)

2. COMO COMPILAR CON NMPI

Para compilar un programa MPI llamado hello-world para que haga uso de las librerías NMPI optimizadas, hay que emplear la rutina:

mpicc -o hello-world hello-world.c

mpif77 -o hello-world hello-world.f

mpif90 -o hello-world hello-world.f

Dependiendo de si estamos ante un código en C o en Fortran 77 o 90.

3. EJECUTANDO EL PROGRAMA PARALELO.

Para lanzar un programa paralelo usando mpi al sistema de colas se ha creado un script "nmpisub.sh" para facilitar el trabajo. Por ejemplo, ejecutamos el programa recien compilado con 4 procesadores

nmpisub.sh -n 4 -N JOB -2 -o prueba.salida -j /home/micafer/imb/src_nmpi/IMB-MPI1

El script nmpisub coge 4 nodos de los que tienen red SCI de y ejecuta el programa en ellos. Los parametros del script son los siguientes:

  • n Indica el numero de NODOS a utilizar
  • 2 Indica que vamos a lanzar 2 procesos en cada nodo. Por defecto es 1.
(Procesadores = 2 * Num Nodos)
  • N Indica el nombre del trabajo
  • e Indica el fichero de salida de error
  • o Indica el fichero de salida estandar
  • j unifica los ficheros de salida estandar y de error
  • w Indica el directorio de trabajo
  • t Indica el tiempo limite de ejecucion del trabajo (walltime) [[hours:]minutes:]seconds[.milliseconds]

Se ha configurado el sistema de colas para que los trabajos mas cortos tengan prioridad. Por ello es importante que se indique el walltime de cada trabajo, ya que si no, se usará el máximo y por tanto tendrá la menor prioridad.