Técnicas de Computación Científica
Intro Prácticas
FIM 2010/11
Vicente Martín
v0.1a
Tarzan: Multicomputador con nodos SMP
En la IBM SP2 cada nodo es una estación de trabajo con su propio espacio de direcciones
bajo el control exclusivo de su propio sistema operativo. El acceso a una posición de memoria
perteneciente a otro nodo requiere la comunicación de dos SO independientes con un paso de
mensajes explícito, en este caso ayudado por HW específico: el High Performance Switch
Clasificación de
Arquitecturas
paralelas
Elmer, Triqui14
Prácticas
Magerit, Triqui14
Machines available for practises.
● Magerit.
– Multicomputer. Cluster architecture made up from bi and
tetraprocs PPC 970. Myrinet+Gigabit. Linux SLE ~2800
CPUs
● Elmer: Power 5 SMP 2CPUs (2 threads per CPU).
AIX. OS sees the machine as a 4 CPUs SMP.
● Triqui 1234. Intel SMP 8 CPUs (2 quadcores).
Linux (main machine for OpenMP)
● Arturo, Alpha 21264, tetraprocessor. True64 Unix,
used only for HPF (NO).
● Magerit/Elmer: Compiladores de IBM
● Compiladores (drivers para compilación y montado):
– Estándar: xlf, xlf90, xlf95
– Reentrantes (para OMP, con cualificador qsmp=omp)
xlf_r, xlf90_r, xlf95_r
– Para paso de mensajes (MPI): mpxlf, mpxlf90,
mpxlf95
– Para HPF: xlhpf
– Modo mezcla: mpxlf_r, mpxlf90_r, mpxlf95_r
● Otras herramientas: PAPI. vt para leer las trazas
generadas por una ejecución con tracelevel 9
● ELMER:
● CPU POWER5, Dual core, 2 threads/CPU. OS sees the machine
as a 4 CPUs SMP.
● AIX 5.x
● Same IBM Compilers: xlf, xlf90, xlf95, xlc...
upc??
● PAPI
– ARTURO: NO
● CPU Alpha 21264. 4 CPUs
● AlphaServer ES40 Tru64 Unix V5.x
● f77/f90/f95 cc
CeSViMa: Magerit
Potencia sostenida 16 Tflops
Multicomputador: Linux SLE
– Myrinet: comunicación interproceso MPI
– Gigabit Ethernet: Sistema de ficheros (GPFS) +
gestión.
1204 nodos de cómputo
– 1036 Blade JS20
Biprocesador PPC 970 2,2GHz – 4GB RAM
168 Blade JS21
Tetraprocesador PPC 970 2,3GHz – 8GB RAM
– Cerca de 2800 CPUs, 5.5 TB de RAM y 55TB de
disco local.
Discos
– Capacidad 192 TB
– 256 HD SATA x 750GB
– Distribuido (16 servidores Power5)
– Tolerante a fallos
RAID5 + HOT SPARE
Sistema de colas (LoadLeveler)
– Cola “learn”
Compiladores:
– IBM XL C/C++/Fortran 77/90/95
– Compiladores GNU
– MPI: Lamm, Glenn Messages.
Nodos Interactivos:
– Login y trabajo de desarrollo.
Nodos de Cómputo:
– Gestionados por el LoadLeveler
– Cola “learn” (llclass l)
Compiladores:
– IBM XL C/C++/Fortran 77/90/95
– Compiladores GNU
– MPI: Lamm, Glenn Messages.
– IBM XL C/C++ (xlc, xlC) Fortran 77/90/95 (xlf, xlf90,
xlf95) and thread safe versions (_r commands)
– GNU compilers (gcc, g++, g77)
– MPI wrappers (mpicc, mpiCC, mpif70, mpif90)
Backend are IBM XL compilers by default.
– MPI: Lamm, Glenn Messages.
A Job definition file is needed in order to
Compilers:
submit a job.
– (see Magerit docs,
http://static.cesvima.upm.es/doc/manual/Magerit-GuiaUsuarios.pdf)
–
[email protected]
SLURM: Simple Linux Utility for Resource
Management
– scalable cluster management and job scheduling
system for Linux clusters
– QoS based.
– A Slurm daemon (slurmd) runs at every node. It is
under the control of a central (slurmctl) daemon.
– Useful commands:
– sacct, salloc, sattach, sbatch, sbcast, scancel,
scontrol, sinfo, smap, squeue, srun, strigger and
sview
SLURM-Moab Basic commands
– jobcancel suprime un trabajo de la cola de
– jobcheck muestra información detallada de un
– jobq muestra el estado de los trabajos del usuario en
el sistema desglosado según su estado.
– jobstart proporciona la hora estimada de inicio del
ejecución.
trabajo.
trabajo.
ejecución.
– jobsubmit envía un trabajo al sistema para su
A Job definition file is needed in order to
submit a job. (see Magerit docs)
#!/bin/bash
#----------------------- Start job description -----------------------
#@ group = [project_id]
#@ class = [class_name]
#@ initialdir = /gpfs/projects/[project_id]/[data_dir]
#@ output = res/[programoutfile].out
#@ error = res/[programerrfile].err
#@ total_tasks = [number of tasks]
#@ wall_clock_limit = [hh:mm:ss]
#------------------------ End job description ------------------------
#-------------------------- Start execution --------------------------
# Run our program
srun ./[myprogram]
#--------------------------- End execution ---------------------------
OpenMP Disponible en:
● Magerit:
– Compiladores serie XL (xlf, xlc): usar switch
qsmp=omp y librerias reentrantes llamando a los
compiladores con los scripts xlf_r y xlc_r
– Compiladores GNU: teneis que mirar por vuestra
cuenta el nivel al que está soportado en esa
arquitectura.
– NOTA: La mayoría de los nodos de Magerit son de 2
procesadores, en estos la máxima ganancia con
OpenMP es un factor 2. Hay unos pocos que son
tetraprocesadores (ganacia máxima 4)
● Triqui 1234:
– 8 cores per node.
– Intel compilers (icc, ifort): use openmp switch
for openMP.
– Están en /opt/intel/Compiler/11.1/069
● Look for the exact place: it changes qith compiler versions.
● There is a Documentation directory.
● You have to make sourcing of the files (source or . commands):
● iccvars.sh ( C language and Bourne shell. Also .csh
version) ifortvars.sh (idem Fortran version) en
/opt/intel/Compiler/11.1/069/bin with
argument intel64
– Place the commands in .bash_profile if you don't want to have to
repeat it each time.
– GNU compilers: use the fopenmp switch.
● Triqui 14:
● Por si acaso no funciona directamente el
ifortvars.sh:
● Export PATH=$PATH:/opt/intel/Compiler/11.1/069/bin/intel64
● Export LD_LIBRARY_PATH=/opt/intel/Compiler/11.1/069/lib/intel64
● /opt/intel/Compiler/11.1/069/bin/ifortvars.sh intel64
UPC disponible en Triqui 14:
– UPC es experimental y está compilado con el
compilador de Intel (icc, usad iccvars.sh )
– Añadir /usr/local/berkeley_upc/bin a
vuestro PATH
– Comprobadlo con upc V
MPI en Triqui 14:
– MPICH2 implementacion de MPI2 completo.
– Añadir /usr/local/mpich2-1.1.1/bin a
vuestro PATH
– Comprobadlo con mpich2version
– Incluye drivers para los compiladores/montadores:
mpif90, mpif77
– Para iniciar procesos usa el mecanismo definido en el
“standard” 2: mpiexec aunque sigue aceptado el
viejo mpirun.
– En cada nodo se inicia un demonio que actua como
gestor de los procesos MPI. Los demonios se inician
con mpd &
– Ejemplo:
● $ mpd &
● $ mpiexec n 4 hostname
– También se puede decidir en donde se ejecutan
los programas a través de un host file:
● mpiexec machinefile mf n 7 p0
– Ejemplo de machinefile:
# comment line
triqui4
Triqui3:4 ifhn=hostcgige
triqui2
Comentarios de: Intro Prácticas - Técnicas de Computación Científica (0)
No hay comentarios