Archivo por meses: agosto 2010

scilab

Versión 5.1.1 en (Itanium, Opteron y Péndulo) y 5.2.2 en Xeon del programa matemático de cálculo numérico.

Características generales

Está instalado en los nodos opteron de Arina y en Péndulo. La interfaz gráfica sólo está disponible en Péndulo y Guinness.
Similar en funcionalidades a Matlab. Incluye herramientas para:

  • Visualización 2D y 3D.
  • Lenguaje de programación (scripts de scilab).
  • Resolución de equaciones diferenciales.
  • Modelizador y simulador de sistemas híbridos: tratamiento de señal, sistemas de control, sistema biológicos,…
  • Álgebra simbólica (Maple).

Como ejecutar Scilab

Usar el siguiente comando:

scilab

y abrirá en Péndulo la interfaz gráfica y en Maiz una terminal. En los scripts para lanzar a las colas usar la línea

/software/bin/scilab -f script_scilab > output_file

donde script_scilab es el archivo con las ordenes para Scilab.

Más información

Más información y documentación de Scilab en http://www.scilab.org/.

Benchmarks

Hemos realizado unos benchmarks comparando [intlink id=»606″ type=»post»]Scilab 5.2[/intlink],  [intlink id=»612″ type=»post»]Octave 3.2[/intlink] y [intlink id=»600″ type=»post»]Matlab 7.10[intlink] en las máquinas del servicio.   Los resultados los presentamos en 3 tablas, la primera es un resumen de los resultados, la segunda son los resultados del bencharmark grande e incluimos una tercera con los mismos benchmark pero parámetros más pequeños para poder comparar con Péndulo.

Tabla 3: Resumen de resultados de los benchmark grandes. El score es la media geométrica de los 3 scores del bechmark grande.
Octave Scilab Matlab
Itanium Opteron Xeon Opteron Xeon Opteron Xeon
Total score 47.6 31.4 14.5 31.6 15.6 22.0 9.5

En resumen, las últimas versiones de Matlab y Octave tienen un rendimiento similar en los nodos Xeon (salvo por la ejecución de loops en Octave, ver más abajo). Scilab es aproximadamente un 50% más lento que los anteriores. En cuanto a las máquinas los nuevos nodos Xeon son mucho más potentes que los Itanium o los Opteron doblándoles en rendimiento (Scilab y Octave han sido compilados y linkados con librerías optimizadas, las versiones instaladas son el doble de rápidas que las versiones binarias instalables).

En la primera tabla resumen vemos la puntuación obtenida por los tres programas en las diferentes máquinas del servicio. Nos centraremos en las máquinas xeon que son las más nuevas. En ellas aparentemente Matlab es el más rápido. No obstante, si miramos detalladamente a los tiempos de ejecución de la tabla 4 vemos que los tiempos de Octave y Matlab son totalmente comparables salvo el benchmark en el que se crea una matriz de Toeplitz (Programation 4) en el que se testea la ejecución de bucles. La tecnología de Matlab permite ejecutar los loops de forma muy rápida mientras que Octave todabía no puede. En este sentido se recomienda en Octave usar operaciones vectoriales o funciones optimizadas en vez de bucles de forma intensiva (Por ejemplo, crear la misma matriz del benchmark en Octave con la función toeplitz(c,r) es casi instantáneo).

Del benchmark pequeño en el que incluímos a Péndulo vemos que obtenemos un rendimiento para Péndulo próximo a los Itanium y Opteron. En Péndulo no se han compilado sino que se han instalado los binarios.

El número de licencias de Matlab es limitado, pero la gratuicidad de Scilab y Octave le confieren ventaja en caso necesitar calcular mucho ya que no hay límite de licencias ni procesos de ejecución..

Tabla 4: Resultados de los benchmark grandes medido en segundos. El score es la media geométrica eliminando el mejor y el peor resultado. Al final se incluye una descripción de los benchmark. ++ tiempos muy largos, no se usan en la media geométrica.
Octave Scilab Matlab
Itanium Opteron Xeon Opteron Xeon Opteron Xeon
Matrix calculation
Matrix calc 1 108.6 35.9 12.8 93.0 33.2 24.5 12.4
Matrix calc 2 49.5 3.8 7.5 9.8 9.3 18.1 13.4
Matrix calc 3 122.3 32.8 25.1 27.8 25.6 24.8 18.4
Matrix calc 4 72.2 137.0 41.5 172.1 80.2 132.8 40.8
Matrix calc 5 37.2 42.5 17.9 40.0 18.0 54.8 18.7
Score 72.9 36.8 17.9 46.9 24.8 32.1 16.6
Matrix functions
Matrix func 1 2.6 1.2 0.5 11.0 0.9 1.7 0.6
Matrix func 2 153.5 99.5 37.2 290.9 71.8 124.0 39.9
Matrix func 3 48.1 50.8 22.1 48.1 21.6 65.8 23.0
Matrix func 4 57.1 72.8 29.1 66.1 29.8 106.5 32.8
Matrix func 5 32.1 42.9 16.1 39.7 16.3 51.0 16.5
Score 44.5 54.1 21.8 50.2 21.9 71.0 23.2
Programation
Programation 1 4.7 2.2 1.4 2.8 1.7 4.7 3.1
Programation 2 48.1 22.2 5.3 18.4 5.7 13.7 6.4
Programation 3 3.9 1.5 0.4 3.7 1.3 1.6 0.6
Programation 4 161.2 76.2 66.1 35.5 35.6 0.1 0.0
Programation 5 ++ ++ ++ ++ ++ ++ ++
Score 33.2 15.5 7.8 13.4 7.0 4.7 2.2
Tabla 5: Resultados de los benchmark pequeños medido en segundos. El score es la media geométrica eliminando el mejor y el peor resultado. Al final se incluye una descripción de los benchmark.
Octave Scilab Matlab
Pendulo Itanium Opteron Xeon Pendulo Opteron Xeon Opteron Xeon
Matrix calculation
Matrix calc 1 2.2 3.1 2.4 1.0 4.3 5.6 2.8 2.1 1.1
Matrix calc 2 0.9 5.2 0.3 0.7 1.1 1.1 0.9 1.2 1.2
Matrix calc 3 1.5 1.8 1.4 1.3 1.9 1.8 1.3 1.0 0.9
Matrix calc 4 1.8 1.8 3.8 1.2 18.4 6.4 2.3 3.0 1.2
Matrix calc 5 1.0 2.5 1.4 0.6 3.5 1.7 0.6 1.6 0.6
Score 1.4 2.4 1.7 0.96 3.1 2.6 1.7 1.6 1.1
Matrix functions
Matrix func 1 0.4 0.63 0.4 0.2 0.9 2.6 0.5 0.8 0.3
Matrix func 2 3.0 3.3 4.3 1.9 7.5 9.4 2.3 4.3 2.0
Matrix func 3 1.1 1.0 1.6 0.7 4.3 1.6 0.6 1.6 0.7
Matrix func 4 1.3 1.3 2.0 0.9 5.2 2.7 0.9 2.3 0.9
Matrix func 5 0.9 0.7 1.2 0.5 3.2 1.6 0.5 1.2 0.5
Score 1.1 1.0 1.6 0.65 4.2 2.2 0.67 1.7 0.66
Programation
Programat. 1 0.5 0.6 0.6 0.4 0.6 0.8 0.5 1.1 0.9
Programat. 2 30.0 2.6 3.9 1.1 4.3 3.5 1.2 2.6 1.3
Programat. 3 0.6 0.3 0.4 0.1 1.0 1.2 0.4 0.3 0.2
Programat. 4 8.2 14.3 7.2 5.8 3.3 3.7 3.2 0.0 0.0
Programat. 5 24.0 27.8 36.0 14.8 67.8 57.4 33.2 38.9 17.5
Score 4.9 2.8 2.6 1.4 2.4 2.5 1.3 0.9 0.58



Descripción de los benchmark.

Matrix calculation
Matrix calc Creation, transp., deformation of a matrix.
Matrix calc Normal distributed random matrix ^1000.
Matrix calc Sorting of random values.
Matrix calc Cross-product matrix (b = a’ * a).
Matrix calc Linear regression over a matrix (c = a b’).
Matrix functions
Matrix func FFT over random values.
Matrix func Eigenvalues of a random matrix.
Matrix func Determinant of a random matrix.
Matrix func Cholesky decomposition of a matrix.
Matrix func Inverse of a random matrix.
Programation
Programation Fibonacci numbers calculation (vector calc).
Programation Creation of a Hilbert matrix (matrix calc).
Programation Grand common divisors of pairs (recursion).
Programation Creation of a Toeplitz matrix (loops).
Programation Escoufier’s method on a matrix (mixed).

Matlab

Información general

Versión 7.9 (2009b) en los nodos Opteron y 7.12 (2010a) en los Xeon (por temas de compatibilidad)  del versátil programa matemático que incluye cálculo numérico, simbólico, visualización y lenguaje de programación (scripts de Matlab).

Cómo ejecutar Matlab

En modo interactivo (con interfaz gráfica):

Sólo está disponible para arquitectura Opteron y Xeon  por lo que tenéis que usarlo desde Guinness o Maiz, [intlink id=»48″ type=»post»] aquí como conectarse[/intlink].. El interfaz gráfico se puede ejecutar con

matlab

En el sistema de colas

En los scripts para lanzar a las colas usar la línea

/software/bin/matlab < input_file > output_file

donde input_file es el archivo con las ordenes para Matlab y output_file el fichero que recojerá la salida estándar.

Hemos tenido problemas con ficheros .m de más de 169 líneas. De suceder y para evitarlo llamar ha estos programas dentro de otro pequeño programa .m.

Para [intlink id=»19″ type=»post»]lanzar el cálculo[/intlink] a los nodos incluir la directiva opteron para que vaya a este tipo de nodos. Además, sólo existen dos licencias, por el momento, por lo que hemos creado una cola especial para evitar que los trabajos en los nodos mueran en las colas por falta de licencias. Vuestros scripts deben incluir entonces para dirigirlo a los Xeon:

#PBS -q matlab
#PBS -l nodes=1:ppn=1:xeon

o para los Opteron:

#PBS -q matlab
#PBS -l nodes=1:ppn=1:opteron

Benchmarks

Se han realizado unos [intlink id=»606″ type=»post»]benchmark[/intlink] comparando [intlink id=»612″ type=»post»]Octave[/intlink], [intlink id=»606″ type=»post»]Scilab[/intlink] y Matlab.

Toolboxes

Está instalado el toolbox libre Ezyfit.

Está instalado el toolbox de matlab Optimization.

Está instalado el toolbox de matlab Statistics.

Más información

Matlab home page.

Documentación en línea.

Mathematica

Información general

Versátil programa matemático que incluye cálculo numérico, simbólico, visualización y lenguaje de programación (scripts de Mathematica). En Guinness y sus nodos oxeon está instalada la versión 10.0 y en Arina (en los nodos itanium) y la versión 6.0 dado que no están soportadas versiones posteriores. En el resto de nodos más nuevos la versión 11.2 de Mathematica,

Mathematica incluye paralelismo.

Cómo ejecutar Mathematica

En modo interactivo

El interfaz gráfico se puede ejecutar con

mathematica

la terminal de Mathematica con

math

Nota: Existen ciertos problemas con las fuentes en la interfaz gráfica. Está puede funcionar si se ignoran (cerrar la ventana de error con el botón de aspa), pero los símbolos puede que no se vean correctamente. Para resolverlo hay que instalar localmente en el ordenador personal las fuentes.

En el sistema de colas

En los scripts para lanzar a las colas usar la línea

/software/bin/math < input > output

donde input es el archivo con las ordenes para Mathematica y output el fichero donde se guardará la salida por pantalla.

Más información

Mathematica home page.

Documentación en línea.

Espresso

Información general

opEn-SourceP ackage for Research in Electronic Structure, Simulation, and Optimization

Versión 6.1  del paquete de programas de cálculo ab-initio de DFT con pseudo-potenciales (ultrasoft y PAW-augmented wave method), desarrollado en DEMOCRITOS National Simulation Center of the Italian INFM.

Consta de un programa de estructura electrónica con base de ondas planas (PW), un programa de dinámica molecular basada en primeros principios (FPMD) y en Car-Parrileno (CP). Incluye también un programa para generar pseudopotenciales y una interfaz gráfica para PW. Existe la versión en serie y la paralela.

Cómo usar

[intlink id=»4493″ type=»post»]Ver apartado como enviar espresso.[/intlink]

Monitorización de los cálculos

Para facilitar el seguimiento y/o control de los cálculos, existen las suiguientes herramientas (sólo si ha sido enviado usando send_espresso):

  • remote_vi: Nos enseña con el editor gvim el *.out del cálculo de espresso.
  • myjobs: Durante la ejecución nos muestra el uso de cpu y memoria (SIZE) de nuestro trabajo, útil para conocer la memoria RAM a solicitar en trabajos posteriores similares.

Benchmark

Presentamos los datos de unos pequeños benchmark de pw.x y ph.x en las máquinas del servicio. Los mejores nodos son los Xeon y escala perfectamente a 32 cores. Parece que se nota que la red de comunicación de los xeon es mejor.

Tabla 1: Tiempos de ejecución de pw.x (versión 4.2.1).
System 8 cores 16 cores 32 cores
Xeon 1405 709 378
Itanium2 2614 1368 858
Opteron 2.4 4320 2020 1174
Core2duo 2.1
Tabla 2: Tiempos de ejecución de ph.x (versión 4.2.1)
System 8 cores 16 cores 32 cores
Xeon 2504 1348 809
Itanium2 2968 1934 1391
Opteron 2.4 6240 3501 2033
Core2duo 2.1

Más información

Página de ESPRESSO.

Documentación en línea.

Wiki de ESPRESSO.

STAR-CCM+

Información general

StarCCM+ es un programa de Dinámica de Fluídos.  La versión actual es la 14.04.013. En la arquitectua Itanium la última versión soportada e instalada es la 6.04.

Si se ejecuta Starccm+ en cualquiera de los servidores se abre la aplicación gráfica, en los nodos de cálculo se ha de lanzar mediante [intlink id=»19″ type=»post»]el sistema de colas[/intlink] (sin interfaz gráfica) y realizará el cálculo sin interfaz gráfica.

También esta disponible la aplicación Starview.

Cómo ejecutar

En modo interactivo (interface gráfica)

Los usuarios deberán cerciorarse el poder ejecutar una aplicación gráfica de los servidores del Servicio en sus ordenadores personales. Esto se explica [intlink id=»48″ type=»post»]en la guía de acceso[/intlink] al servicio.

Para abrir la interfaz gráfica de starccm+o starview+ usar:

starccm+
starview+

En el sistema de colas

Para mandar trabajos al [intlink id=»19″ type=»post»]sistema de colas[/intlink] basta ejecutar el comando [intlink id=»233″ type=»post»]qsub en interactivo[/intlink]

qsub

que os preguntará lo necesario para hacerlo, en la primera pregunta la opción 2 es lanzar un cálculo de Starccm+. Este comando selecciona automáticamente los nodos Xeon, los de mejor rendimiento.

Si queréis usar directamente un script para enviarlo a las colas debéis ejecutar en él:

/software/bin/starccm+ -run macro_file.java input_file.sim > log_file.log

con los nombres correspondientes para los ficheros de entrada y el de log. «-run macro_file.java» es opcional. En  este link hay un script de ejemplo, os recomendamos usarlo.  Se tiene licencia de cálculo intensivo para lanzar trabajos en 8 cores en paralelo.

Monitorización de los cálculos

Para monitorizar de forma rápida la convergencia de un cálculo que se está ejecutando en los nodos de cálculo con el identificador de trabajo 1234.arina, por ejemplo, podéis usar el comando:

starccm+_plot 1234

Para abortar limpiamente un cálculo tras la iteración en curso que se está ejecutando, con el identificador de trabajo 1234.arina por ejemplo, podéis usar el comando:

starccm+_abort 1234

También podéis conectaros al nodo a través de la aplicación gráfica, el comando «ni» muestra el nodo en el que se ejecuta vuestro trabajo.

Benchmark

Presentamos los resultados de un benchmark realizado en los xeones de 8 cores del Servicio (procesador E5520 a 2.27 GHz) para analizar el rendimiento de STAR-CCM+, se usó la versión 8.02. Se midieron los tiempos medios por iteración (segundos) en función del número de cores usado.

 

8 cores 16 cores 32 cores
Tiempo por iteración 32.8 14.6 7.6
Aceleración ideal 1 2 4
Aceleración 1 2.2 4.3
Eficiencia 1 112 % 108 %

Primero observamos que STAR-CCM+ escala muy bien cuando aumentamos el número de cores, multiplicar por 2 el número de procesadores reduce a la mitad el tiempo por iteración. De hecho, incluso en este benchmark, observamos un comportamiento superlineal al conseguir eficiencias por encima del 100 %.

Más información

Página web de CD-Adapco.

La interfaz gráfica trae un manual muy completo.

Librerías FFTW

Librerías Fastest Fourier Transform in the West para relizar todo tipo de transformadas de Fourier.

Está instalada la versión 3.3.3 en /software/fftw. Se han compilado con varios tipos (threads, simple precission,etc)

Para linkarlas se debe usar

-L/software/fftw -lfftw3

Ante cualquier duda consultar a los técnicos.

Más información en la página web de FFTW.

Librerías MPI

Información general

Las Librerías MPI son las más utilizadas a la hora de realizar cálculos distribuidos. Existen numerosas variedades. En el servicio tenemos HP-MPI. MPIbull2 … Las últimas versiones disponibles son IntelMPI 4.0.3, MPIbull2 1.3, hpMPI 2.02, openMPI 1.4 y mvapich2 1.5. Puedes de manera gráfica la disponibilidad en [intlink id=»2768″ type=»post»]esta tabla[/intlink] .

Consulta con los técnicos ante cualquier duda o para solicitar más información.


Librerías instaladas por defecto

Las versiones instaladas por defecto en estos momentos son:

  • En los nodos Itanium (Arina) mpibull2.
  • En los nodos Opteron (Maiz) Intelmpi.
  • En los Xeon (Guinness-Katramila) Intelmpi.
  • Intelmpi en Pendulo.

Librerías intelMPI

Están disponibles en los nodos xeon y opteron (Arina y maiz). Si no están por defecto se pueden cargar ejecutando

source /software/intel/impi_latest/bin64/mpivars.sh

Para compilar con los compiladores de Intel Fortran, C y C++ ejecutar mpiifort, mpiicc e mpiicpc respectivamente. Para compilar con los compiladores de GNU emplear mpif90, mpicc e mpiCC.

Librerías MPIbull2

Están disponibles en los nodos xeon e itanium (Guinness y Arina). Si no están por defecto se pueden cargar ejecutando

source /opt/mpi/mpibull2-1.3.9-18.s/share/mpibull2.sh

Para compilar con los compiladores de Intel Fortran, C y C++ ejecutar mpif90, mpicc e mpiCC.

Librerías hpMPI

Están disponibles en los nodos itanium e opteron (Arina y Maiz). Si no están por defecto se pueden cargar ejecutando

export PATH=/opt/hpmpi/bin:$PATH

Para compilar con los compiladores de Intel Fortran, C y C++ ejecutar mpif90, mpicc e mpiCC.

Librerías openMPI

Están disponibles en los nodos xeon (Guinness) y Pendulo. Están instaladas en /software/openmpi. Para usar estas librerías hay que especificar el path completo, por ejemplo:

/software/openmpi/bin/mpif90

Para compilar con los compiladores de Intel Fortran, C y C++ ejecutar los binarios mpif90, mpicc e mpiCC.

Librerías mvapich2

Están disponibles en los nodos xeon (Guinness). Están instaladas en /software/mvapich2. Para usar estas librerías hay que especificar el path completo, por ejemplo:

/software/mvapich2/bin/mpif90

 

Para compilar con los compiladores de Intel Fortran, C y C++ ejecutar los binarios mpif90, mpicc e mpiCC.

Compiladores de Intel

Información general

Recomendamos en general, pero encarecidamente en los nodos Itanium2, los compiladores de Intel sobre los de GNU. En los itanium2 hemos llegado a acelerar un programa en 50 veces con solo compilarlo con el de Intel.

Hemos realizado un manual sobre como compilar (pdf) en las máquinas del servicio y como usar de forma sencilla todos los nodos de cálculo disponibles en el servicio. Es muy recomendable leerlo.

Para más información o si tienes dudas no dudes en preguntar a los técnicos.

Compiladores instalados por defecto

  • En los nodos Itanium compiladores Intel 11.1 Fortran (ifort), C (icc) eta C++ (icpc).
  • En los nodos Xeon compiladores Intel  15.0 Fortran (ifort), C (icc) eta C++ (icpc).

Cómo ejecutar

Los ejecutables de fortran, C y C++ son ifort, icc, icpc.

Más información

Para más información ejecutar, por ejemplo, ifort -help o similar para compilador o preguntar a los técnicos.

Manual del lenguaje Fortan

Manual del compilador Fortran

Manual del compilador de C

Librerías Matematicas de Intel (MKL)

Información general

Estas librerías incluyen las librerías LAPACK y BLAS, pero también transformadas de Fourier, PARDISO (resuelve grandes sistemas de equaciones lineales), funciones matemáticas (Vector Math Library-VML) y funciones estadísticas (Vector Statistical Library-VSL). Están disponibles en todas las máquinas del servicio.

Para más información o si tienes dudas no dudes en preguntar a los técnicos.

 

Cómo linkarlas

Si no sabes exactamente como linkarlas en las diferentes arquitecturas, por favor, consulta con los técnicos.

 

Librerías instaladas por defecto

Las versiones instaladas por defecto son:

  • 11.1 en los nodos Itanium2 (/opt/intel/Compiler/11.1/073/mkl/lib/64).
  • 15.0 en los nodos Xeon (/software/intel/composerxe/mkl/lib/intel64).
  • 15.0 en Péndulo (/software/intel/composerxe/mkl/lib/intel64).

 

Más Información

Guía del usuario de las MKL 10.1

Manual de las MKL 10.1

Manual de las VSL

Información en línea.

Los recursos materiales y humanos están a disposición de empresas y agentes externos a la universidad. Para más información [intlink id=»154″ type=»page»]consultar a los técnicos del Servicio[/intlink].

Tarifa Interna

Información general

La tarifa interna se aplica a investigadores y centros de la UPV/EHU. Incluye servicio técnico y de aplicaciones. Estas tarifas estarán vigentes desde el 15 de Septiembre de 2021 hasta el 15 de Septiembre de 2022.

Tarifas por uso de CPU

La tarifa para el grupo de investigación será de 0.005 €/hora y core

Tarifa por almacenamiento

Se facturará por tener datos en Arina. Para establecer la tarifa se han  seguido los siguientes criterios:

  • Se facturará menos a los que realmente usen el servicio, es decir, usan en el servicio los datos almacenados en el mismo. Por lo tanto, se establece una factura dependiente del tiempo de cálculo consumido al final del año por el grupo.
  • No se factura por debajo de 3 GB por usuario.
  • Se facturará cada mes sobre la media de disco usado ese mes.
  • Se emplearán los precios por GB de la siguiente tabla, que tienen en cuenta el tiempo consumido en el servicio.
Tarifas por GB extra almacenado cada mes
Rango de uso de CPU Tarifa de Almacenamiento
(en días al año) (€/Gb) al mes
2500< cpu 0.1
100< cpu <2500 0.5
1< cpu <100 1.0
0< cpu <1 1.5

Tarifa para empresas

Tarifa por CPU

Tarifa para organismos privados. La tarifa por el uso de los recursos computacionales es de 0.016 €/hora y por core (cpu simple) (sin IVA). Incluye soporte técnico de para tareas y problemas comunes. No está incluido el almacenamiento de datos, ni servicios especializados de los técnicos, que dependerá del tipo de asistencia que se requiera, por lo que se deberá describir el proyecto a realizar para establecer un presupuesto.

Tarifa por almacenamiento

Se facturará por tener datos en Arina siguiendo los siguientes criterios:

  1. Se facturará menos a los que realmente usen el servicio, es decir, usan en el servicio los datos almacenados en el mismo. Por lo tanto se establece una factura dependiente del tiempo de cálculo consumido al final del año por el grupo.
  2. No se factura por debajo de 3 GB.
  3. Se facturará por meses sobre la media de disco usado en cada mes.
  4. Se emplearán los precios por GB, usando los precios establecidos en la siguiente tabla, que tienen en cuenta el tiempo consumido en el servicio (sin IVA).

Tarifas por GB extra almacenado cada mes que se aplicarán en función del uso del servicio.
Rango de uso de CPU Tarifa de Almacenamiento
(en días al año) (Euros/Gb) al mes
2500< cpu 0.1
100< cpu <2500 0.5
1< cpu <100 1.0
0< cpu <1 1.5

IVA no incluído.

Solicitar tiempo de cálculo

Se debe de solicitar tiempo de cálculo en Arina para poder calcular. El tiempo de cálculo podrá ser solicitado por cualquier profesor o investigador contratado por la UPV/EHU u ente externo (instituciones públicas o privadas, empresas,…). Los investigadores de la UPV/EHU deberán rellenar el formulario solicitando el tiempo de CPU que creen que van a necesitar para la convocatoria en curso, año 2010.
Seguir leyendo Solicitar tiempo de cálculo

Qsub interactivo

Si se ejecuta simplemente qsub sin añadir ningúna orden más:

qsub

este entrará en modo interactivo, nos realizará unas preguntas simples, que nos guiará en el proceso para enviar varios tipos de trabajo de un modo sencillo. Se puede usar con cualquier ejecutable pero también hay una lista de programas predefinidos (vasp, wrf, adinit, gaussian, nwchem …) de los cuales además se realizan comprobaciones como que los ficheros necesarios están presentes. Si se quiere añadir alguno más a la lista contactar con lo técnicos. Las respuestas son almacenadas como respuestas por defecto para la siguiente vez.

De acuerdo a los parámetros definidos por el usuario, el sistema de colas encajará cada trabajo en la cola pertinente. En caso de que algun parametro no sea definido por el usuario, TORQUE tiene determinados unos por defecto, que pueden no adecuarse al trabajo que mandamos por lo que es muy recomendable definirlos.

Para poder seguir correctamente las preguntas del qsub interactivo, os recomendamos que reviseis el apartado otras directivas.

Qsub tradicional

Ejecutar en la línea de comandos
qsub script_file

donde el archivo script_file contiene las directivas para el gestor de colas TORQUE y los comandos a ejecutar para poner el trabajo en marcha. En las siguientes secciones se detallan ciertos scripts. Una vez mandado el trabajo a la cola, obtendremos en pantalla el número de identificación del proceso, por ejemplo:

159.lgua00

Tras la ejecución, comprobar el contenido del archivo script.e159, en este caso para verificar los errores. La salida estándar del programa está en scrip.o159.

Trabajo en serie
En los trabajos en serie es altamente recomendable que se trabaje usando el espacio de disco local, la partición /scratch situada en cada nodo. El proceso de lectura y escritura es más rápido, por lo que el propio trabajo se ve beneficiado. Además, no se usa la red (NFS) en la lectura/escritura, por lo que el resto de los trabajos en otros nodos también irán más rápido y se evita saturar la red.

Los scripts se envían al sistema de colas con el comando

qsub script_file

o se puede usar el modo interactivo

qsub

Para seleccionar el tipo de arquitectura o nodo ver otras directivas.

Una plantilla de script que ejecuta el programa a.out es

#!/bin/bash
#PBS -l walltime=[val]
#PBS -l mem=[val]
#PBS -l nodes=1:ppn=1

#Nuestro directorio de scratch
scrt=/scratch/$USER/$PBS_JOBID

mkdir $scrt
#Copiamos los archivos al directorio scratch.
#Usaremos cp -r para copiar también subdirectorios.
cp $PBS_O_WORKDIR/* $scrt

#Nos movemos de directorio
cd $scrt

#Ejecutamos el programa
./a.out

#Movemos los archivos finales a nuestro home
outdir=escoger_nombre
mkdir $PBS_O_WORKDIR/$outdir
mv -f $scrt/* $PBS_O_WORKDIR/$outdir

#Borramos el directorio
rmdir $scrt

Las líneas que comienzan con #PBS son órdenes para el gestor de colas que seleccionan:

nodes: [opcional] Se puede usar para selecionar el nodo de cálculo (ejemplo: node=cn14).

mem: Memoria RAM reservada para el cálculo, medida en mb o gb (ejemplo: [val]=100mb).

walltime: Tiempo de microprocesador reservado en formato hh:mm:ss (ejemplo: [val]=24:00:00).

El resto de líneas que comienzan con # son comentarios.

En el script hay que sustituir escoger_nombre por el del directorio donde queremos guardar los resultados. La variable $USER devuelve el nombre del usuario, $PBS_O_WORKDIR el directorio de trabajo desde donde se ejecuta el comando qsub y $PBS_JOBID el número de identificación del trabajo.

Si el programa a.out no está en un directorio del $PATH, e.g. /usr/local/bin sino en nuestro directiorio es necesario usar ./a.out .

Ejemplo de trabajo en serie.

Tras la ejecución, comprobar el contenido del archivo script.eXXX para verificar los errores.

Las órdenes para PBS se pueden indicar directamente en el comando, en vez de en el script, usando a la hora de enviar el trabajo

qsub -l nodes=[name],mem=[val],walltime=[val] script

Trabajo en paralelo
Es recomendable lanzar los trabajos a 4 procesadores o 8 procesadores por nodo (ppn=4 o ppn=8), lo cual reduce los tiempos de espera. También es altamente recomendable que los trabajos escriban localmente en los nodos cuando sea posible.

Si el trabajo corre en un único nodo o, corriendo en más nodos, los microprocesadores no comparten archivos, el trabajo puede escribir sobre el disco local. Los scripts se envían al sistema de colas con el comando

qsub script_file

o se puede usar el modo interactivo

qsub

Para seleccionar el tipo de arquitectura o nodo ver otras directivas.

Una plantilla de script que ejecuta el programa a.out en paralelo es

#!/bin/bash
#PBS -l nodes=[val]:ppn=[val]
#PBS -l walltime=[val]
#PBS -l mem=[val]

#Nuestro directorio de scratch
scrt=/scratch/$USER/$PBS_JOBID

#Creamos el directorio
mkdir $scrt
#Copiamos los archivos al directorio scratch
#Usaremos cp -r $scrt para copiar también subdirectorios.
cp $PBS_O_WORKDIR/* $scrt

#Nos movemos de directorio
cd $scrt

#Ejecutamos el programa
mpirun a.out

#Movemos los archivos finales
outdir=escoger_nombre
mkdir $PBS_O_WORKDIR/$outdir
mv -f $scrt/* $PBS_O_WORKDIR/$outdir

#Borramos el directorio
rmdir $scrt

Las líneas que comienzan con #PBS son órdenes para el gestor de colas que seleccionan:

nodes: Número de nodos en los que se va a ejecutar el programa (ejemplo [val]=2).

ppn: Número de microprocesadores por nodo que va a usar el programa (ejemplo [val]=4).

mem: Memoria RAM reservada para el cálculo, medida en mb o gb (ejemplo: [val]=100mb).

walltime: Tiempo de microprocesador reservado en formato hh:mm:ss (ejemplo: [val]=24:00:00).

En el script hay que sustituir escoger_nombre por el del directorio donde queremos guardar los resultados la variable $USER devuelve el nombre del usuario, $PBS_O_WORKDIR el directorio de trabajo desde donde se ejecuta el comando qsub y $PBS_JOBID el número de identificación del trabajo.

Ejemplo de trabajo en paralelo usando el disco local /scratch .

Si el trabajo va a correr en varios nodos y los procesos comparten archivos han de ejecutarse desde nuestro /gscratch, que es un sistema de archivos de alto rendimiento compartido por todos los nodos (ver coniguración). El script que realiza esto es

#!/bin/bash
#PBS -l nodes=[val]:ppn=[val]
#PBS -l walltime=[val]
#PBS -l mem=[val]

#Nuestro directorio de scratch
scrt=/gscratch/$USER/$PBS_JOBID

#Creamos el directorio
mkdir $scrt
#Copiamos los archivos al directorio scratch
#Usaremos cp -r $scrt para copiar también subdirectorios.
cp $PBS_O_WORKDIR/* $scrt

#Nos movemos de directorio
cd $scrt

#Ejecutamos el programa
mpirun a.out

#Movemos los archivos finales
outdir=escoger_nombre
mkdir $PBS_O_WORKDIR/$outdir
mv -f $scrt/* $PBS_O_WORKDIR/$outdir

#Borramos el directorio
rmdir $scrt

Ejemplo de trabajo en paralelo usando gscratch.

Tras la ejecución, comprobar el contenido del archivo script.eXXX para verificar los errores.

Las órdenes para PBS se pueden indicar directamente en el comando, en vez de en el script, usando a la hora de enviar el trabajo

qsub -l nodes=[val]:ppn=[val],mem=[val],cput=[val] script

Cómo mandar NWchem

send_nwchem

Para lanzar al sistema de colas Nwchem existe la utilidad send_nwchem. Al ejecutarlo, muestra la sintaxis del comando, que se resume a continuación:

send_nwchem JOBNAME PROCS[property] TIME MEM [``Otherqueue options'' ]

  • JOBNAME: Nombre del input de nwchem sin extensión.
  • PROCS: Número de procesadores.
  • TIME: Tiempo solicitado a la cola, formato hh:mm:ss.
  • MEM: memoria en GB y sin especificar la unidad.
  • [«Otras opciones de Torque»] Existe la posibilidad de pasar más variables al sistema de colas. Ver ejemplos más abajo. Más información sobre estas opciones

Ejemplos

Mandamos NWchem con el input job1 a 1 nodo, 4 procesadores de ese nodo tipo itaniumb, con un tiempo solicitado de 4 horas y 1 GB de RAM:

send_nwchem job1 4:itaniumb 04:00:00 1

Mandamos NWchem con el input job2 a 2 nodos, 8 procesadores en cada nodo, con un tiempo solicitado de 192 horas, 8 GB de RAM y que se ejecute después del trabajo 1234.arina:

send_nwchem job2 16 192:00:00 8 ``-W depend=afterany:1234''

Mandamos NWchem con el input job3 a 4 nodos y 8 procesadores en cada nodo, con un tiempo solicitado de 200:00:00 horas, 2 GB de RAM y que nos envíe un mensaje de correo al inicio y final del cálculo a la dirección especificada.

send_nwchem job3 32 200:00:00 2 ``-m be -M mi.email@ehu.es''

El comando send_nwchem copia el contenido del directorio desde el que se lanza al /scratch o /gscratch -si se usan 2 o más nodos. Es allí donde realiza el cálculo.

qsub interactivo

Ejecutando

qsub

entramos en el modo [intlink id=»233″ type=»post»]qsub en interactivo[/intlink] y nos hace varias preguntas para preparar el trabajo, uno de los programas para los que está preparado es NWchem.

Monitorización de los cálculos

Para facilitar el seguimiento y/o control de los cálculos, existen las suiguientes herramientas (sólo si ha sido enviado usando send_nwchem o qsub interactivo):

  • remote_vi: Nos enseña con el editor gvim el *.out del cálculo de nwchem.
  • remote_molden: Nos enseña con el molden el *.out del cálculo de nwchem.
  • remote_xmakemol: Para dimámicas. Nos enseña con el xmakemol el *.md.xyz del cálculo de nwchem.
  • remote_qmde: Nos enseña con el xmgrace la evolución de la energía respecto al tiempo de un cálculo de Dinámica Molecular.

El uso de todas estar herramientas es muy similar, hay que ejecutarlas seguido el identificador que el cálculo tiene en el sistema de colas.

Ejemplos

remote_vi 1243.arina
remote_xmakemol 2390.arina
remote_molden 2390.arina
remote_qmde 3432.arina

ECCE

ECCE 4.0.2 (Extensible Computational Chemistry Environment) es una aplicación desarrollada por el mismo grupo que Nwchem (ECCE Homepage). Dispone de una interface grafica que permite preparar inputs para nwchem, gaussian, y otros programas de química cuántica. Para su uso simplemente hay que ejecutar:

ecce &

Os recomendamos ejecutar ECCE en maiz y usando Nomachine NX.

Más información

Manual en línea de NwChem.

~

Cómo mandar Gaussian

Comando send_gauss

El comando send_gauss envía los cálculos con g09.

Recomendamos el uso del comando send_gauss. Este comando preparará script de TORQUE y lo enviará a la cola. El fichero de log (*.log) se mantendrá en el /scratch del nodo de remoto, pero send_gauss envía el trabajo de tal menera que puede ser visualizado con las herramientas remote_vi y remote_molden (ver más abajo).

modo de uso del comando send_gauss es el siguiente:

send_gauss trabajo cola_o_tiempo num_proc [mem] [opciones de TORQUE]

donde:

  • trabajo: Es el nombre del input de gaussian sin la extensión (*.com).
  • cola o tiempo: Se puede indicar la cola a la que se quiere mandar el cálculo o el tiempo en formato (hh:mm:ss).
  • num_proc: El número de procesadores que se quiere usar por nodo, ha de ser igual o menor de 8 o un múltiplo de 8. Es posible añadir propiedades de los nodos, por ejemplo 8:itaniumb
  • mem:  la memoria en GB.
  • [opciones de TORQUE]: Opciones avanzadas que se quieren pasar al gestor de colas TORQUE.

Ejemplos

send_gauss h2o p_slow 8

Enviará el trabajo h2o en  1 nodo y 8 procesadores a la cola p_slow con los valores de memoria predeterminados en este caso 7.2Gb (nproc*900mb).

send_gauss h2o p_slow 16 20

Enviará el trabajo h2o en dos nodos y 8 procesadoresencada uno  a la cola p_slow con 20gb de memoria RAM.

send_gauss h2o 23:00:00 16:xeon 4 ``-m be -M niri@ehu.es -W depend=afterany:4827''

Enviará el trabajo h2o en 2 nodos Xeony 8 procesadoeres en cada uno,  con 4gb de RAM. El tiempo solicitado son 23 horas, y nos enviará un email al inicio y final del cálculo. Por otra parte este trabajo no empezará hasta que termine el trabajo 4827.

Comando qsub interactivo

Si se ejecuta simplemente qsub sin añadir ninguna orden más:

qsub

este entrará en modo interactivo, nos realizará unas preguntas simples, que nos guiará en el proceso para enviar varios tipos de trabajo de un modo sencillo. Más informacián en [intlink id=»233″ type=»post»]qsub interactivo[/intlink].

qsub tradicional

Podemos construir nuestro propio script para Torque. [intlink id=»237″ type=»post» target=»_blank»]En este enlace[/intlink] hay ejemplos adecuados.

Seguimiento del trabajo

Existen las herramietas remote_vi y remote_molden, que permiten ver el fichero .log o mostrar la estructura con Molden. Para ello hay que usar send_gaussian o qsub interactivo. Su uso el el siguiente:

remote_vi 2341
remote_molden 2341

o

remote_vi 2341.arina
remote_molden 2341.arina

donde 2341(.arina) es el identificador del trabajo en la cola.