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, Triqui1 4 Prácticas Magerit, Triqui1 4
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 1 2 3 4. 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.
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) res-support@cesvima.upm.es
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 ---------------------------
Magerit: OpenMP Disponible en: 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 1 2 3 4: 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 1 4: 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 1 4: 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 1 4: 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=hostc gige triqui2