guia uso svg 2011

10
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) Processor 2 x AMD Opteron™ Processor 6174 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) Processor 2 x AMD Opteron™ Processor Model 6174 2.2 GHz, 12MB Level 3 Cache, 80W Memory 64 GB PC3-1333R Storage 1 x 2TB 3G SATA 7.2K NHP

Upload: adrian-tec

Post on 23-Oct-2015

14 views

Category:

Documents


0 download

DESCRIPTION

fortran

TRANSCRIPT

Page 1: Guia Uso SVG 2011

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)

Processor

2 x AMD Opteron™ Processor 6174

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)

Processor

2 x AMD Opteron™ Processor Model 6174

2.2 GHz, 12MB Level 3 Cache, 80W

Memory 64 GB PC3-1333R

Storage 1 x 2TB 3G SATA 7.2K NHP

Page 2: Guia Uso SVG 2011

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:

Page 3: Guia Uso SVG 2011

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

Page 4: Guia Uso SVG 2011

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

-fb-opt

Activa optimizaciones profile-guided (dirigidas por retroalimentación). Requiere compilaciones

separadas.

-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

Page 5: Guia Uso SVG 2011

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 double-

complex.

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

Page 6: Guia Uso SVG 2011

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

Page 7: Guia Uso SVG 2011

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

Page 8: Guia Uso SVG 2011

-Mipa=fast, inline Realiza análisis y optimizaciones interprocedimentales. También habilita inlining automático

de procedimientos.

-Mpfi

-Mpfo

Activa optimizaciones dirigidas por retroalimentación del perfil.

-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

Page 9: Guia Uso SVG 2011

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

Page 10: Guia Uso SVG 2011

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