Diferenzas

Isto amosa as diferenzas entre a revisión seleccionada e a versión actual da páxina.

Enlazar a esta vista de comparación

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
centro:servizos:cluster_de_computacion_hpc_ctcomp2:repositorio [2013/05/15 12:02] – [Tamaño del heap de JAVA] diego.rodriguezcentro:servizos:cluster_de_computacion_hpc_ctcomp2:repositorio [2017/03/07 13:46] – [Instalar/actualizar/desinstalar paquetes Python] jorge.suarez
Liña 35: Liña 35:
 ^ ACML     | [[http://developer.amd.com/tools/cpu-development/amd-core-math-library-acml/]] | ^ ACML     | [[http://developer.amd.com/tools/cpu-development/amd-core-math-library-acml/]] |
 ^ FFTW     | [[http://www.fftw.org/#documentation| Documentación oficial]] | ^ FFTW     | [[http://www.fftw.org/#documentation| Documentación oficial]] |
 +^ WFDB     | [[http://www.physionet.org/physiotools/wug/wug.htm| Documentación oficial]] |
  
 ^ Open MPI | [[http://www.open-mpi.org/doc/]] | ^ Open MPI | [[http://www.open-mpi.org/doc/]] |
Liña 47: Liña 48:
 ^ CLUES      | [[http://www.grycap.upv.es/clues/es/index.php]] | ^ CLUES      | [[http://www.grycap.upv.es/clues/es/index.php]] |
  
 +
 +===== Número de procesos MATLAB =====
 +
 +MATLAB emplea internamente, y de manera transparente al usuario, threads para paralelizar ciertas operaciones, por lo que se puede utilizar reservando varios núcleos computacionales dentro de un mismo nodo. Sin embargo, en las versiones instaladas no es posible controlar esta característica, por lo que MATLAB utiliza todos los recursos del nodo asignado, independientemente de los recursos solicitados. Para evitar posibles cancelaciones debido a un uso indebido de los recursos asignados,  __se recomienda a los usuarios utilizar el paralelismo implícito de MATLAB solo cuando se reserve en exclusividad un nodo del clúster__. En cualquier otro caso, se recomienda solicitar únicamente un núcleo computacional y utilizar la opción ''-singleCompThread'', que desactiva el paralelismo implícito de MATLAB para realizar una ejecución secuencial. En este ejemplo, el nombre del script es ''test.m''.
 +
 +<code>
 +#!/bin/bash
 +#PBS -l nodes=1:ppn=1,walltime=1:00:00
 +#PBS -N ej-MATLAB
 +cd $PBS_O_WORKDIR
 +module load matlab
 +matlab -r test -nodisplay -nojvm -singleCompThread
 +# -r:         indicar el fichero a ejecutar (sin .m)
 +# IMPORTANTE: incluir la orden quit al final del fichero
 +# -nodisplay: sin display X.
 +# -nosplash:  sin pantalla inicial (OPCIONAL)
 +# -nojvm:     sin entorno java (OPCIONAL)
 +# -singleCompThread: ejecuta MATLAB secuencialmente
 +</code>
  
 ===== Tamaño del heap de JAVA ===== ===== Tamaño del heap de JAVA =====
Liña 59: Liña 79:
 Al modificar el tamaño del //heap// el usuario debe asegurarse, **bajo su responsabilidad**, que el conjunto de procesos que se estén ejecutando concurrentemente en su trabajo no sobrepase el límite de memoria establecido en la correspondiente cola, ya que en ese caso el trabajo será cancelado automáticamente. Al modificar el tamaño del //heap// el usuario debe asegurarse, **bajo su responsabilidad**, que el conjunto de procesos que se estén ejecutando concurrentemente en su trabajo no sobrepase el límite de memoria establecido en la correspondiente cola, ya que en ese caso el trabajo será cancelado automáticamente.
  
-Los usuarios que ejecuten en sus trabajos una sola instancia de java (independientemente de los //threads// que ejecute) podrán establecer sin riesgo el tamaño del //heap// en un valor cercano al límite de memoria de la correspondiente cola.+Los usuarios que ejecuten en sus trabajos una sola instancia de java (independientemente de los //threads// que ejecute) podrán aumentar el tamaño del //heap//, pero se recomienda que no sea un valor cercano al límite de memoria de la correspondiente cola. Si se ejecutan varias instancias de java, se recomienda ajustar adecuadamente el tamaño del //heap// para evitar cancelaciones.
  
  
Liña 87: Liña 107:
 ===== Instalar/actualizar/desinstalar paquetes Python ===== ===== Instalar/actualizar/desinstalar paquetes Python =====
  
-En principio, es posible instalar cualquier paquete presente en el [[http://pypi.python.org/pypi|índice de paquetes de python]]. A continuación mostramos un ejemplo de [[inv:python:pip|instalación/actualización/desinstalación]] del paquete ''pywavelets'' en el ''$HOME'' de usuario del clúster ''ctcomp2''. Para evitar potenciales problemas, se recomienda realizar la instalación de paquetes en una __sesión //interactiva// en el ''frontend''__.+En principio, es posible instalar cualquier paquete presente en el [[http://pypi.python.org/pypi|índice de paquetes de python]]. A continuación mostramos un ejemplo de [[inv:python:pip|instalación/actualización/desinstalación]] del paquete ''pywavelets'' en el ''$HOME'' de usuario del clúster ''ctcomp2''. Para evitar potenciales problemas, se recomienda realizar la instalación de paquetes en el ''frontend''. 
 + 
 +<note important>Si obtenemos un error: 
 +<code>Please install a more recent version first, using 
 +'easy_install -U distribute'
 +</code> 
 + 
 +Debemos ejecutar el comando ''easy_install -U --user distribute'', para actualizar en la base de datos en el espacio de usuario. 
 +</note>
    
-==== Instalación ====+== Instalación ==
 Ejecutar el siguiente comando en bash: Ejecutar el siguiente comando en bash:
 <code> <code>
-pip install --install-option="--userpywavelets+pip install --user pywavelets
 </code> </code>
  
-==== Actualización ====+== Actualización ==
 Ejecutar el siguiente comando en bash: Ejecutar el siguiente comando en bash:
 <code> <code>
-pip install --upgrade pywavelets+pip install --upgrade --user pywavelets
 </code> </code>
  
-==== Desinstalación ====+== Desinstalación ==
 Ejecutar el siguiente comando en bash: Ejecutar el siguiente comando en bash:
 <code> <code>
-pip uninstall pywavelets+pip uninstall --user pywavelets
 </code> </code>
-  + 
 + 
 + 
 +===== Instalar paquetes Octave ===== 
 + 
 +En principio, es posible instalar cualquier paquete presente en el [[http://octave.sourceforge.net/packages.php|índice de paquetes de octave]]. A continuación mostramos un ejemplo de instalación del paquete ''image'' en el ''$HOME'' de usuario del clúster ''ctcomp2'', utilizando una __sesión //interactiva// (''qsub -I -q interactive'')__. 
 + 
 +  * Iniciamos una sesión ''octave'':<code> 
 +octave 
 +</code> 
 +  * Definimos el lugar de instalación de los paquetes en el ''$HOME'' de usuario (en este ejemplo, instalaremos los paquetes en el directorio ''/home/local/my.user.name/.octave-pkgs''):<code> 
 +pkg prefix /home/local/my.user.name/.octave-pkgs /home/local/my.user.name/octave 
 +</code> 
 +  * Invocamos al gestor de paquetes de Octave (''dpk'') e instalamos el paquete ''image'' (también instalamos las depencias):<code> 
 +pkg install -local -forge control 
 +pkg install -local -forge general 
 +pkg install -local -forge specfun 
 +pkg install -local -forge signal 
 +pkg install -local -forge image 
 +</code> 
 + 
 +  * Para usar los paquetes instalados en una sesión de Octave, simplemente hai que invocarlos a través del gestor de paquetes de Octave:<code> 
 +pkg load image 
 +</code> 
 + 
 +===== Ejecución de ocean (CADENCE) ===== 
 + 
 +Ocean/Cadence no se puede ejecutar directamente en ''ctcomp2'', aunque sea con la opción ''-nograph'', ya que no es capaz de arrancar las X's. Teoricamente, la opción ''nograph'' precisamente haría que ''ocean'' se pudiese ejecutar sin X, pero el problema es que, con esta opción, ''ocean'' trata de arrancan un sistema X //falso// que tampoco funciona. 
 + 
 +La solución para solventar este inconveniente en ''ctcomp2'' es crear nuestro propio entrono X //falso// antes de executar ''ocean'' (sin la opción ''nograph''). Utilizamos el comando ''xvfb-run'' para crear ese entorno X.  
 + 
 +Por lo tanto, para ejecutar ''script.cdn'', guardando la salida de ''ocean'' en ''fichero.log'', la secuencia de comandos a ejecutar es: 
 + 
 +<code> 
 +module load cadence 
 +source /optct/cadence/2012-2013/lnx86/cadence.bash 
 +xvfb-run -a -n 80 -s "-screen 0 640x480x16" ocean < script.ocn > fichero.log 
 +</code>