• Hardware

Actualización 2015

En Febreiro 2015 púxose en producción a seguinte ampliación do sistema:

18 HP ProLiant XL230a Gen9 – Compute node (node configuration)
Processor

2 x Intel Haswell E5-2680

2.5 GHz, 30MB Level 3 Cache, 120W, 12 cores per processor

Memory

64 GB

Storage

2 x 1TB 6G SATA 7.2K 2.5in

Networking

Dual Port Intel 1GbE NIC

Dual Port Infiniband FDR 40Gb

Actualización 2014

En Xuño 2014 púxose en producción a seguinte ampliación do sistema:

10 HP ProLiant DL320e Gen8 v2 – Compute node (node configuration)
Processor

1 x Intel Haswell E5-1240

3.4 GHz, 8MB Smart Cache, 80W, 4 cores per processor

Memory

32 GB

Storage

1 x 2TB 6G SATA 7.2K 3.5in

Networking

Dual Port Intel 1GbE NIC

Actualización 2012

En Octubre 2012 púxose en producción a seguinte ampliación do sistema:

8 HP ProLiant SL230s Gen8 – Compute node (node configuration)
Processor

2 x Intel Sandy Bridge E5-2670

2.6 GHz, 20MB Level 3 Cache, 115W, 8 cores per processor

Memory

64 GB 

Storage

1 x 2TB 6G SAS 7.2K 

Networking

Dual Port Intel 1GbE NIC

Dual Port Infiniband FDR 40Gb

2 HP DL 560 Gen8 - Fat node (node configuration)
Processor

4 x Intel Sandy Bridge E5-4620

2.2 GHz, 16MB Level 3 Cache, 95W, 8 cores per processor

Memory

512 GB PC3-1333R

Storage

6 x 1TB 3G SAS 6G 7.2K NHP

Networking

Four Port HP 1GbE NIC

Dual Port Infiniband FDR 40Gb

 

Actualización 2011

En Marzo 2011 púxose en producción a siguiente ampliación do 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 (27 nodes) & 64 GB (19 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

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

  • Estado dos sistemas 

No seguinte enlace poderá consultar o estado do SVG estado dos sistemas.

  • Guía de uso
  • Acceso:

Acédese ao sistema a través de svgd.cesga.es seguindo as instruccións que se detallan a continuación:

1. Conectarse a svgd.cesga.es da forma habitual

2. Lanzar unha sesión interactiva: compute --arch [amd|sandy]
(amd: nodos AMD Opteron; sandy: nodos Intel Sandy Bridge)

3.  Cargar os módulos necesarios de compiladores, aplicaciones, etc.

NOTAS:

module av amosa os módulos dispoñibles

module help amosa unha axuda básica de como utilizar o módulo

 

  • Envío de traballos ao sistema de colas:

O envio de traballos é similar al anterior svg.

Traballos secuenciais:

qsub -l arch=[amd|sandy|ivy|haswell|ibhas],num_proc=1,s_rt=1:00:00,s_vmem=2G,h_fsize=20G trabajo.sh

Traballos paralelos openmp:

qsub -l arch=[amd|sandy|ivy|haswell|ibhas],num_proc=16,s_rt=1:00:00,s_vmem=2G,h_fsize=20G trabajo.sh

Traballos paralelos MPI:

qsub -l arch=[amd|sandy|ivy|haswell|ibhas],num_proc=1,s_rt=1:00:00,s_vmem=2G,h_fsize=20G -pe mpi 16 test.sh

Para máis detalles consultar a guía de Intel MPI


Os limites máximos son os seguintes:

  • Memoria: hasta 1TB
  • Número de cores por nodo: hasta 32
  • Número de cores por traballo: hasta 192
  • Tamaño de scratch: hasta 4TB
  • Tempo máximo de execución de traballos: hasta 300 horas "elapsed" en nodos "amd" e hasta 48 horas en nodos "sandy"

Pode obter información detallada sobre a política de uso do SVG executando:
module help sge
Esta política pode impoñer restriccións adicionais sobre os límites máximos anteriores, podendo variar dinámicamente en función das necesidades específicas en cada momento.

 

  • Sistemas de ficheiros:

O sistema SFS esta accesible desde a actualización do SVG a través do directorio /sfs/$HOME
Para transferir datos entre FinisTerrae e SVG, o home do SVG esta accesible desde o FinisTerrae no directorio $HOMESVG

 

  • Compiladores e ferramentas de desenvolvemento: (texto en castelán)

Combinaciones de compiladores, librerías BLAS/LAPACK y MPI disponibles:

Compiladores de intel. Intel

Compiladores GNU. GNU

Compiladores Open64. OPEN64

Compiladores de PGI. PGI

Referencias: documentación recomendada

 

Intel(RECOMENDADO)

Uso habitual en el CESGA:

Compiladores:

https://www.cesga.es/soporte_usuarios/usr-servicio-computacion/Aplicaciones?app=Intel%20C%2B%2B%20Compiler

https://www.cesga.es/soporte_usuarios/usr-servicio-computacion/Aplicaciones?app=Intel%20Fortran%20Compiler

Librería matemática

https://www.cesga.es/soporte_usuarios/usr-servicio-computacion/Aplicaciones?app=MKL

MPI:

https://www.cesga.es/soporte_usuarios/usr-servicio-computacion/Aplicaciones?app=Intel%20MPI%20Library

 

GNU

Uso habitual en Scientific Linux 6

https://www.cesga.es/soporte_usuarios/usr-servicio-computacion/Aplicaciones?app=GNU%20Compilers

 

OPEN64:

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.

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

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

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

-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

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 aplicaciones@cesga.es 

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

 

Referencias:

https://software.intel.com/en-us/intel-software-technical-documentation

https://software.intel.com/sites/default/files/Compiler_QRG_2013.pdf

http://developer.amd.com/Assets/CompilerOptQuickRef-61004100.pdf

http://www.pgroup.com/doc/pgiug.pdf