You are on page 1of 10

Caractersticas Acceso Envo de trabajos Sistema de ficheros Compiladores

Caractersticas: 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 estn 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 configuracin RAID 5 Actualizacin 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 Storage Networking 32 GB (17 nodes) & 64 GB (27 nodes) 1 x 500GB 3G SATA 7.2K NHP 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 Storage 64 GB PC3-1333R 1 x 2TB 3G SATA 7.2K NHP

46 HP ProLiant SL165z G7 Compute node (node configuration)


Networking Vis. Card 2 Embedded Dual Port Intel 1GbE NICs (4 total NICs) ATI Firepro V7800

Total Processor Memory Storage Networking Performance Power consumption CPU hours Perf./KW 1,200 cores 2.2GHz 2,400 GB 31 TB NFS GbE & Dedicated MPI GbE 10,240 GFlops 21KW 10 Million hours 487GFlops/KW

Acceso: Se accede al sistema a travs de svgd.cesga.es siguiendo las instrucciones que se detallan a continuacin: 1. Conectarse a svgd.cesga.es de la forma habitual 2. Lanzar una sesin interactiva: compute --arch amd 3. Cargar los modulos necesarios de compiladores, aplicaciones, etc. NOTAS:

module av muestra los modulos disponibles module help <mdulo> muestra una ayuda bsica sobre como utilizar el mdulo

Envo 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 estn restringidos a 24 slots mpi como mximo. Los limites son los siguientes (por trabajo): Maxima cantidad de memoria: 63GB Maximo numero de cores: 24 Maximo tamao 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, libreras 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 mdulo correspondiente:

module load open64: Carga los compiladores de Open64

Para compilar cdigos, deber utilizarse los siguientes comandos:

opencc fichero.c (cdigos en C) openCC fichero.C (cdigos en C++) openf90 fichero.f90 (cdigos en FORTRAN 90) openf95 fichero.f95 (cdigos en FORTRAN 95)
Algunas opciones de compilacin importantes son:

-O2 -O3 -Ofast -LNO -ipa -fb-create -fb-opt -apo -mso -march -mp -HP

Nivel de optimizacin por defecto; equivalente a -O. Realiza un conjunto de optimizaciones globales. -O2 con algunas optimizaciones ms agresivas; en particular, -O3 activa LNO. Se expande en -O3, -ipa, y algunas otras optimizaciones ms agresivas. Habilita las optimizaciones en bucles anidados, incluyendo vectorizacin y generacin de instrucciones prefetch. Realiza anlisis y optimizaciones interprocedimentales. Optimiza a travs de funciones y lmites del fichero. Activa optimizaciones profile-guided (dirigidas por retroalimentacin). Requiere compilaciones separadas.

Habilita la paralelizacin automtica de bucles. Realiza optimizaciones de escalabilidad en procesadores multicore. Genera instrucciones para un tipo de procesador especfico. Activa el soporte para OpenMP (versin 2.5) Especifica el nmero de huge pages (2MB) usados por los segmentos bss, data, text and heap. Esta caracterstica puede no estar disponible en todos los sistemas operativos.

Informacin ms detallada sobre la utilizacin de los compiladores de Open64 y la optimizacin 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 opcin -intrinsic= Para incluir en la compilacin todas las intrnsecas soportadas se debe usar -intrinsic=EVERY

Adicionalmente es posible slo incluir la funcin necesaria: -intrinsic=<funcin>. Por ej: intrinsic=rand incluira la extensin GNU rand (http://gcc.gnu.org/onlinedocs/gfortran/RAND.html)

Libreras matemticas ACML (BLAS/LAPACK/FFT): ACML proporciona un conjunto de rutinas matemticas optimizadas para aplicaciones de clculo intensivo. Constan de los siguientes componentes principales:

Una implementacin 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). Adems 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 estndar. Fast Fourier Transforms (FFTs) en tipos de datos single, double, single-complex and doublecomplex. Generadores de nmeros aleatorios, tanto en simple como en doble precisin. Para utilizar estas libreras matemticas es necesario cargar el mdulo correspondiente:

module load acml/4.4.0_open64


Para linkar un programa que necesite estas libreras es necesario seguir la siguiente frmula general:

openf90 test.f90 -o test -lacml


Si se quiere utilizar la versin OpenMP de estas libreras debemos cargar el mdulo:

module load acml/4.4.0_open64_OpenMP


y linkar siguiendo esta frmula:

openf90 -mp test.F -o test -lacml_mp


NOTA: Soporte OpenMP slo disponible para las rutina BLAS Compilacin y ejecucin 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 opcin -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 nmero de hilos que se arrancan es igual al nmero de procesadores. Para controlar el nmero de hilos que se ejecutan, utilizar la variable OMP_NUM_THREADS=<nmero

de hilos>. Por ejemplo, en la shell ksh o bash el siguiente comando limitar el nmero de hilos
a 6:

export OMP_NUM_THREADS=6
Si se ejecuta en batch, esa variable tendr un valor igual al nmero de procesadores seleccionados en el qsub con la opcin -l num_proc. Compilacin y ejecucin con MPICH2 Para utilizar MPICH2 debe cargarse el mdulo correspondiente:

module load mpich2


Al cargar este mdulo se cargan automticamente los compiladores Open64, que sern los que se utilizarn por defecto:

mpicc, compila cdigo MPI en C, utilizando el compilador de Open64 opencc mpicxx, compila cdigo MPI en C++, utilizando el compilador de Open64 openCC mpif90, compila cdigo MPI en Fortran 90, utilizando el compilador de Open64 openf90 Si se desea utilizar otros compiladores, es necesario cargar el mdulo 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 aplicacin se pueden usar estos comandos indistintamente: mpirun mpiexec A estos comandos se le debe indicar el nmero de procesos a utilizar (opcin -np) y el ejecutable con sus parmetros. El fichero de nodos es asignado por el sistema de colas y su ubicacin es $TMPDIR/machines. Ejemplo:

mpirun -np 4 ./mpi_program

Libreras matemticas paralelas ScaLAPACK: ScaLAPACK (Scalable LAPACK) es una librera que incluye un subconjunto de rutinas LAPACK rediseado para computadores paralelos de memoria distribuida. Actualmente est escrito en

estilo Single-Program-Multiple-Data usando pasos de mensaje explcitos para la comunicacin entre procesos. Se asume que las matrices se colocan siguiendo una descomposicin cclica de bloque de dos dimensiones. ScaLAPACK est diseada para computacin heterognea y es portable a cualquier computador que soporte MPI. Para utilizar estas libreras matemticas es necesario cargar el mdulo correspondiente: module load scalapack Para linkar un programa que necesite estas libreras es necesario seguir la siguiente frmula 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 utilizacin de los compiladores de Open64, aunque tambin existe la posibilidad de utilizar los compiladores de PGI. Para utilizar los compiladores de PGI debe cargarse el mdulo correspondiente:

module load pgi: Carga todo el entorno de PGI


Para compilar cdigos, deber utilizarse los siguientes comandos:

pgcc fichero.c (cdigos en C) pgCC fichero.C (cdigos en C++) pgf77 fichero.f (cdigos en FORTRAN 77) pgf90 fichero.f90 (cdigos en FORTRAN 90) pgf95 fichero.f95 (cdigos en FORTRAN 95)
Algunas opciones de compilacin importantes son: -O<level> Especifica el nivel de optimizacin del cdigo. <level> puede ser 0, 1, 2, 3 4. -O2 es la opcin que se toma por defecto. -fast -Minline -Mvect=prefetch Incluye -O2 , -Munroll y otras opciones ms agresivas. Habilita inlining de funciones. Instruye para generar instrucciones prefetch cuando se encuentran bucles vectorizables

-Mipa=fast, inline

Realiza anlisis y optimizaciones interprocedimentales. Tambin habilita inlining automtico de procedimientos.

-Mpfi

Activa optimizaciones dirigidas por retroalimentacin del perfil.

-Mpfo -Munroll -mp -Mconcur Desenrolla bucles, ejecutando mltiples estancias del bucle en cada iteracin. Activa el soporte para OpenMP El compilador utilizar mltiples procesadores para ejecutar los bucles que determina que son paralelizables.

Informacin ms detallada sobre la utilizacin de los compiladores de PGI y la optimizacin de las aplicaciones se puede encontrar en: http://www.pgroup.com/doc/pgiug.pdf Libreras matemticas ACML (BLAS/LAPACK/FFT): Al cargar el mdulo de PGI ya est disponible la librera ACML optimizada para este compilador. Para linkar un programa que necesite estas libreras es necesario seguir la siguiente frmula general: pgf90 test.F -o test -lacml y si se quiere utilizar la versin OpenMP de estas libreras: pgf90 -mp test.F -o test -lacml_mp Compilacin y ejecucin 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 opcin -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 nmero de hilos que se arrancan es igual al nmero de procesadores. Para controlar el nmero de hilos que se ejecutan, utilizar la variable OMP_NUM_THREADS=<nmero

de hilos>. Por ejemplo, en la shell ksh o bash el siguiente comando limitar el nmero de hilos
a 6:

export OMP_NUM_THREADS=6

Si se ejecuta en batch, esa variable tendr un valor igual al nmero de procesadores seleccionados en el qsub con la opcin -l num_proc. Compilacin y ejecucin con MPI de PGI NOTA: Temporalmente el uso de MPI incluido en la distribucin de PGI est deshabilitado debido a la imposibilidad de integracin 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 mdulo de PGI se carga automticamente el soporte de MPI-1:

mpicc, compila cdigo MPI en C, utilizando el compilador de PGI pgcc mpicxx, compila cdigo MPI en C++, utilizando el compilador de PGI pgCC mpif77, compila cdigo MPI en Fortran 77, utilizando el compilador de PGI pgf77 mpif90, compila cdigo MPI en Fortran 90, utilizando el compilador de PGI pgf90 Otra forma alternativa de compilar con MPI es utilizar los compiladores de PGI y aadir 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 aplicacin hay que usar el comando mpirun. A este comando se le debe indicar el nmero de procesos a utilizar (-np), el fichero de nodos a utilizar (-machinefile) y el ejecutable con sus parmetros. El fichero de nodos es asignado por el sistema de colas y su ubicacin es $TMPDIR/machines. Ejemplo:

mpirun -machinefile $TMPDIR/machines -np 4 ./mpi_program


Para el uso de MPI-2 es necesario usar mpich2 cargando el mdulo correspondiente a los compiladores PGI: module load mpich2/1.3.2p1-pgi Al cargar este mdulo se cargan automticamente los compiladores PGI:

mpicc, compila cdigo MPI en C, utilizando el compilador PGI pgcc mpicxx, compila cdigo MPI en C++, utilizando el compilador PGI pgCC mpif90, compila cdigo MPI en Fortran 90, utilizando el compilador PGI pgf90 Para ejecutar la aplicacin se pueden usar estos comandos indistintamente:

mpirun mpiexec

A estos comandos se le debe indicar el nmero de procesos a utilizar (opcin -np) y el ejecutable con sus parmetros. El fichero de nodos es asignado por el sistema de colas y su ubicacin es $TMPDIR/machines. Ejemplo:

mpirun -np 4 ./mpi_program

Libreras matemticas paralelas ScaLAPACK: NOTA: Debido a la imposibilidad de integracin 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 peticin por correo electrnico a aplicaciones@cesga.es Los compildores de PGI tambin incorporan estas libreras matemticas. La forma ms sencilla de linkar un programa que necesite estas libreras 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 versin 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

You might also like