técnicas de computación científicavicente/tcc/presentapracttcc1011.pdf · técnicas de...
TRANSCRIPT
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 memoriaperteneciente 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
Prácticas
Magerit, Triqui14
Elmer, 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 RAM168 Blade JS21Tetraprocesador 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.
Compilers:– 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 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– 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
– QoS based.
SLURM-Moab Basic commands
– jobcancel suprime un trabajo de la cola de ejecución.
– jobcheck muestra información detallada de un trabajo.
– 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 trabajo.
– jobsubmit envía un trabajo al sistema para su ejecución.
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 linetriqui4Triqui3:4 ifhn=hostcgigetriqui2