Guía de uso SVG

Anuncio
Características
Acceso
Envío de trabajos
Sistema de ficheros
Compiladores
Características:
Hardware
El sistema SVG instalado en el CESGA está formado por:
40 servidores blade: 36 DELL PE 1955 con doble procesador quad-core Intel Xeon 5310 a 1.6GHz
con 4GB de memoria principal y un disco de 72GB SAS a 10,000rpm y 4 servidores blade DELL PE
1955 con doble procesador quad-core Intel Xeon 5355 a 2.66GHz con 8GB de memoria principal y
dos discos de 72GB SAS a 10,000rpm. Todos estos nodos están interconectados mediante Gigabit
Ethernet a un servidor de datos 2950 con 2 procesadores Xeon 5130 a 2GHz y 4GB de memoria e
1800GB de disco SCSI en configuración RAID 5
Actualización 2011
En Marzo 2011 se ha puesto en produccion la siguiente ampliacion del sistema:
46 HP ProLiant SL165z G7 – Compute node (node configuration)
2 x AMD Opteron™ Processor 6174
Processor
2.2 GHz, 12MB Level 3 Cache, 80W, 12 cores per processor
Memory
32 GB (17 nodes) & 64 GB (27 nodes)
Storage
1 x 500GB 3G SATA 7.2K NHP
Networking
2 Embedded Dual Port Intel 1GbE NICs (4 total NICs)
4 HP DL 385 G7 - Visualization node (node configuration)
2 x AMD Opteron™ Processor Model 6174
Processor
2.2 GHz, 12MB Level 3 Cache, 80W
Memory
64 GB PC3-1333R
Storage
1 x 2TB 3G SATA 7.2K NHP
46 HP ProLiant SL165z G7 – Compute node (node configuration)
Networking
2 Embedded Dual Port Intel 1GbE NICs (4 total NICs)
Vis. Card
ATI Firepro V7800
Total
Processor
1,200 cores 2.2GHz
Memory
2,400 GB
Storage
31 TB
Networking
NFS GbE & Dedicated MPI GbE
Performance
10,240 GFlops
Power
consumption
21KW
CPU hours
10 Million hours
Perf./KW
487GFlops/KW
Acceso:
Se accede al sistema a través de svgd.cesga.es siguiendo las instrucciones que se detallan a
continuación:
1. Conectarse a svgd.cesga.es de la forma habitual
2. Lanzar una sesión interactiva: compute --arch amd
3. Cargar los modulos necesarios de compiladores, aplicaciones, etc.
NOTAS:
module av muestra los modulos disponibles
module help <módulo> muestra una ayuda básica sobre como utilizar el módulo
Envío de trabajos al sistema de colas:
El envio de trabajos es similar al anterior svg.
Trabajos secuenciales:
qsub -l arch=amd,num_proc=1,s_rt=10:00:00,s_vmem=2G,h_fsize=20G
trabajo.sh
Trabajos paralelos:
qsub -l arch=amd,num_proc=1,s_rt=010:00:00,s_vmem=2G,h_fsize=20G -pe
mpi 6 test.sh
Debe tenerse en cuenta que los trabajos paralelos se ejecutan dentro de un único nodo y por
tanto están restringidos a 24 slots mpi como máximo.
Los limites son los siguientes (por trabajo):
Maxima cantidad de memoria: 63GB
Maximo numero de cores: 24
Maximo tamaño de scratch: 700GB
Sistemas de ficheros:
El sistema SFS esta accesible desde la actualizacion del SVG a traves del directorio /sfs/$HOME
Para transferir datos entre Finis Terrae y SVG, el home del SVG esta accesible desde el Finis
Terrae en el directorio $HOMESVG
Compiladores y herramientas de desarrollo:
Combinaciones de compiladores, librerías BLAS/LAPACK y MPI disponibles:
Compiladores Open64. OPEN64 (RECOMENDADO)
Compiladores de PGI. PGI
Compiladores de intel. Intel
Compiladores GNU. GNU
OPEN64 (RECOMENDADO):
Para utilizar los compiladores de Open64 debe cargarse el módulo correspondiente:
module load open64: Carga los compiladores de Open64
Para compilar códigos, deberá utilizarse los siguientes comandos:
opencc fichero.c (códigos en C)
openCC fichero.C (códigos en C++)
openf90 fichero.f90 (códigos en FORTRAN 90)
openf95 fichero.f95 (códigos en FORTRAN 95)
Algunas opciones de compilación importantes son:
-O2
Nivel de optimización por defecto; equivalente a “-O”. Realiza un conjunto de optimizaciones
globales.
-O3
“-O2” con algunas optimizaciones más agresivas; en particular, “-O3” activa LNO.
-Ofast
Se expande en “-O3”, “-ipa”, y algunas otras optimizaciones más agresivas.
-LNO
Habilita las optimizaciones en bucles anidados, incluyendo vectorización y generación de instrucciones
prefetch.
-ipa
Realiza análisis y optimizaciones interprocedimentales. Optimiza a través de funciones y límites del
fichero.
-fb-create
Activa optimizaciones profile-guided (dirigidas por retroalimentación). Requiere compilaciones
separadas.
-fb-opt
-apo
Habilita la paralelización automática de bucles.
-mso
Realiza optimizaciones de escalabilidad en procesadores multicore.
-march
Genera instrucciones para un tipo de procesador específico.
-mp
Activa el soporte para OpenMP (versión 2.5)
-HP
Especifica el número de huge pages (2MB) usados por los segmentos bss, data, text and heap. Esta
característica puede no estar disponible en todos los sistemas operativos.
Información más detallada sobre la utilización de los compiladores de Open64 y la optimización de
las aplicaciones se puede encontrar en:
http://developer.amd.com/documentation/articles/pages/optimizewithopen64.aspx
Fortran intrinsics:
El soporte de los procedimientos intrinsecos en fortran se controla mediante la opción -intrinsic=
Para incluir en la compilación todas las intrínsecas soportadas se debe usar -intrinsic=EVERY
Adicionalmente es posible sólo incluir la función necesaria: -intrinsic=<función>. Por ej: intrinsic=rand incluiría la extensión GNU rand (http://gcc.gnu.org/onlinedocs/gfortran/RAND.html)
Librerías matemáticas ACML (BLAS/LAPACK/FFT):
ACML proporciona un conjunto de rutinas matemáticas optimizadas para aplicaciones de cálculo
intensivo. Constan de los siguientes componentes principales:




Una implementación completa de nivel 1, 2 y 3 de Basic Linear Algebra Subrutines (BLAS), con
rutinas optimizadas para alto rendimiento en procesadores AMD Opteron.
Un paquete completo de las rutinas de álgebra lineal (LAPACK). Además de tener las ventajas de
disponer de BLAS optimizadas, un conjunto de rutinas LAPACK se han optimizado para conseguir
un rendimiento considerablemente mayor que las implementaciones LAPACK estándar.
Fast Fourier Transforms (FFTs) en tipos de datos single, double, single-complex and doublecomplex.
Generadores de números aleatorios, tanto en simple como en doble precisión.
Para utilizar estas librerías matemáticas es necesario cargar el módulo correspondiente:
module load acml/4.4.0_open64
Para linkar un programa que necesite estas librerías es necesario seguir la siguiente fórmula
general:
openf90 test.f90 -o test -lacml
Si se quiere utilizar la versión OpenMP de estas librerías debemos cargar el módulo:
module load acml/4.4.0_open64_OpenMP
y linkar siguiendo esta fórmula:
openf90 -mp test.F -o test -lacml_mp
NOTA: Soporte OpenMP sólo disponible para las rutina BLAS
Compilación y ejecución con OpenMP
Tanto el compilador de Fortran como de C soportan OpenMP. Para compilar un programa que
necesite utilizar OpenMP se ha de utilizar la opción -openmp o -mp. Por ejemplo, para compilar el
programa test.F con OpenMP utilizar el comando:
openf90 -openmp programa.F -o programa, o bien,
openf90 -mp programa.F -o programa
Por defecto, el número de hilos que se arrancan es igual al número de procesadores. Para
controlar el número de hilos que se ejecutan, utilizar la variable OMP_NUM_THREADS=<número
de hilos>. Por ejemplo, en la shell ksh o bash el siguiente comando limitará el número de hilos
a 6:
export OMP_NUM_THREADS=6
Si se ejecuta en batch, esa variable tendrá un valor igual al número de procesadores
seleccionados en el qsub con la opción -l num_proc.
Compilación y ejecución con MPICH2
Para utilizar MPICH2 debe cargarse el módulo correspondiente:
module load mpich2
Al cargar este módulo se cargan automáticamente los compiladores Open64, que serán los que se
utilizarán por defecto:



mpicc, compila código MPI en C, utilizando el compilador de Open64 opencc
mpicxx, compila código MPI en C++, utilizando el compilador de Open64 openCC
mpif90, compila código MPI en Fortran 90, utilizando el compilador de Open64 openf90
Si se desea utilizar otros compiladores, es necesario cargar el módulo correspondiente al
compilador:
mpich2/1.3.2p1-gnu: Compiladores GNU gcc/g++/gfortran
mpich2/1.3.2p1-pgi: Compiladores PGI pgcc/pgCC/pgf90
Para ejecutar la aplicación se pueden usar estos comandos indistintamente:
mpirun
mpiexec
A estos comandos se le debe indicar el número de procesos a utilizar (opción -np) y el ejecutable
con sus parámetros. El fichero de nodos es asignado por el sistema de colas y su ubicación es
$TMPDIR/machines.
Ejemplo:
mpirun -np 4 ./mpi_program
Librerías matemáticas paralelas ScaLAPACK:
ScaLAPACK (Scalable LAPACK) es una librería que incluye un subconjunto de rutinas LAPACK
rediseñado para computadores paralelos de memoria distribuida. Actualmente está escrito en
estilo Single-Program-Multiple-Data usando pasos de mensaje explícitos para la comunicación
entre procesos. Se asume que las matrices se colocan siguiendo una descomposición cíclica de
bloque de dos dimensiones. ScaLAPACK está diseñada para computación heterogénea y es
portable a cualquier computador que soporte MPI.
Para utilizar estas librerías matemáticas es necesario cargar el módulo correspondiente:
module load scalapack
Para linkar un programa que necesite estas librerías es necesario seguir la siguiente fórmula
general:
mpif90 example.f -o example -lscalapack -lblacsF77init_MPI-LINUX-0 lblacs_MPI-LINUX-0 -lblacsF77init_MPI-LINUX-0 -lacml
Se ejecuta igual que cualquier programa MPI:
mpirun -f $TMPDIR/machines -np 4 ./example
PGI
Se recomienda la utilización de los compiladores de Open64, aunque también existe la posibilidad
de utilizar los compiladores de PGI. Para utilizar los compiladores de PGI debe cargarse el módulo
correspondiente:
module load pgi: Carga todo el entorno de PGI
Para compilar códigos, deberá utilizarse los siguientes comandos:
pgcc fichero.c (códigos en C)
pgCC fichero.C (códigos en C++)
pgf77 fichero.f (códigos en FORTRAN 77)
pgf90 fichero.f90 (códigos en FORTRAN 90)
pgf95 fichero.f95 (códigos en FORTRAN 95)
Algunas opciones de compilación importantes son:
-O<level>
Especifica el nivel de optimización del código. <level> puede ser 0, 1, 2, 3 ó 4. “-O2” es la
opción que se toma por defecto.
-fast
Incluye -O2 , -Munroll y otras opciones más agresivas.
-Minline
Habilita inlining de funciones.
-Mvect=prefetch
Instruye para generar instrucciones prefetch cuando se encuentran bucles vectorizables
-Mipa=fast, inline
Realiza análisis y optimizaciones interprocedimentales. También habilita inlining automático
de procedimientos.
-Mpfi
Activa optimizaciones dirigidas por retroalimentación del perfil.
-Mpfo
-Munroll
Desenrolla bucles, ejecutando múltiples estancias del bucle en cada iteración.
-mp
Activa el soporte para OpenMP
-Mconcur
El compilador utilizará múltiples procesadores para ejecutar los bucles que determina que
son paralelizables.
Información más detallada sobre la utilización de los compiladores de PGI y la optimización de las
aplicaciones se puede encontrar en:
http://www.pgroup.com/doc/pgiug.pdf
Librerías matemáticas ACML (BLAS/LAPACK/FFT):
Al cargar el módulo de PGI ya está disponible la librería ACML optimizada para este compilador.
Para linkar un programa que necesite estas librerías es necesario seguir la siguiente fórmula
general:
pgf90 test.F -o test -lacml
y si se quiere utilizar la versión OpenMP de estas librerías:
pgf90 -mp test.F -o test -lacml_mp
Compilación y ejecución con OpenMP
Tanto el compilador de Fortran como de C soportan OpenMP. Para compilar un programa que
necesite utilizar OpenMP se ha de utilizar la opción -openmp o -mp. Por ejemplo, para compilar el
programa test.F con OpenMP utilizar el comando:
pgf90 -openmp programa.F -o programa, o bien,
pgf90 -mp programa.F -o programa
Por defecto, el número de hilos que se arrancan es igual al número de procesadores. Para
controlar el número de hilos que se ejecutan, utilizar la variable OMP_NUM_THREADS=<número
de hilos>. Por ejemplo, en la shell ksh o bash el siguiente comando limitará el número de hilos
a 6:
export OMP_NUM_THREADS=6
Si se ejecuta en batch, esa variable tendrá un valor igual al número de procesadores
seleccionados en el qsub con la opción -l num_proc.
Compilación y ejecución con MPI de PGI
NOTA: Temporalmente el uso de MPI incluido en la distribución de PGI está
deshabilitado debido a la imposibilidad de integración en el sistema de colas.
Alternativa: Usar mpich2
Los compildores de PGI incorporan soporte para MPI-1, pero no para MPI-2.
Al cargar el módulo de PGI se carga automáticamente el soporte de MPI-1:




mpicc, compila código MPI en C, utilizando el compilador de PGI pgcc
mpicxx, compila código MPI en C++, utilizando el compilador de PGI pgCC
mpif77, compila código MPI en Fortran 77, utilizando el compilador de PGI pgf77
mpif90, compila código MPI en Fortran 90, utilizando el compilador de PGI pgf90
Otra forma alternativa de compilar con MPI es utilizar los compiladores de PGI y añadir el flag Mmpi. Ejemplo:
pgcc test_mpi.c -Mmpi -o test_mpi” es equivalente a “mpicc test_mpi.c -o
test_mpi
Para ejecutar la aplicación hay que usar el comando mpirun. A este comando se le debe indicar el
número de procesos a utilizar (-np), el fichero de nodos a utilizar (-machinefile) y el ejecutable
con sus parámetros. El fichero de nodos es asignado por el sistema de colas y su ubicación es
$TMPDIR/machines.
Ejemplo:
mpirun -machinefile $TMPDIR/machines -np 4 ./mpi_program
Para el uso de MPI-2 es necesario usar mpich2 cargando el módulo correspondiente a los
compiladores PGI:
module load mpich2/1.3.2p1-pgi
Al cargar este módulo se cargan automáticamente los compiladores PGI:



mpicc, compila código MPI en C, utilizando el compilador PGI pgcc
mpicxx, compila código MPI en C++, utilizando el compilador PGI pgCC
mpif90, compila código MPI en Fortran 90, utilizando el compilador PGI pgf90
Para ejecutar la aplicación se pueden usar estos comandos indistintamente:


mpirun
mpiexec
A estos comandos se le debe indicar el número de procesos a utilizar (opción -np) y el ejecutable
con sus parámetros. El fichero de nodos es asignado por el sistema de colas y su ubicación es
$TMPDIR/machines.
Ejemplo:
mpirun -np 4 ./mpi_program
Librerías matemáticas paralelas ScaLAPACK:
NOTA: Debido a la imposibilidad de integración del MPI de PGI con el sistema de colas
temporalmente se inhabilita el uso de scalapack con estos compiladores. Por favor si es
necesario hacer una petición por correo electrónico a [email protected]
Los compildores de PGI también incorporan estas librerías matemáticas.
La forma más sencilla de linkar un programa que necesite estas librerías es utilizar el flag Mscalapack:
pgf90 example.f -o example -Mmpi -Mscalapack, o bien, mpif90 example.f -o
example -Mscalapack
Ejecutar con:
mpirun -machinefile $TMPDIR/machines -np 4 ./example
Nota: No hay versión disponible de ScaLAPACK para los compiladores PGI y mpich2
Intel
Uso habitual en el CESGA
GNU
Uso habitual en Scientific Linux 6
Referencias:
http://developer.amd.com/Assets/CompilerOptQuickRef-61004100.pdf
Descargar