¡Esta es una revisión vieja del documento!
Ejemplos de scripts
A continuación se muestran varios ejemplos de scripts que muestran el conjunto básico de intrucciones para el envio de diferentes tipos de trabajos al gestor de colas.
Ejemplo de trabajo secuencial:
#!/bin/bash #PBS -l nodes=1:ppn=1,walltime=1:00:00 #PBS -N ejemplo #PBS -o salida.out #PBS -e salida.err #PBS -m ae -M direccion_correo@usc.es cd $PBS_O_WORKDIR ./executable
Ejemplo de trabajos secuenciales en paralelo:
#!/bin/bash #PBS -l nodes=1:ppn=4,walltime=1:00:00 #PBS -N ejemplo cd $PBS_O_WORKDIR (cd dir1; ./executable1) & (cd dir2; ./executable2) & (cd dir3; ./executable3) & (cd dir4; ./executable4) & wait
Ejemplo de trabajo Java:
Java consume, por defecto, toda la memoria del sistema. En un sistema compartido por diferentes usuarios es necesario limitar la cantidad de memoria asignada a cada proceso, por lo que el tamaño del heap de Java en ctcomp2
está limitado al 25 del límite de memoria de la cola asignada al proceso y, cualquier caso, con un tamaño máximo de 8 GB.
Los usuarios pueden utilizar otros tamaños de heap en sus trabajos si modifican, antes de ejecutar JAVA, el valor de la opción -Xmx de JAVA a través de la variable _JAVA_OPTIONS
. Por ejemplo, si queremos que el heap tenga 16 GB, el comando sería:
export _JAVA_OPTIONS=-Xmx16777216K
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 aumentar el tamaño del heap, pero se recomienda que no sea un valor cercano al límite de memoria de la correspondiente cola.
#!/bin/bash #PBS -l nodes=1:ppn=64,walltime=1:00:00 #PBS -N ej-java cd $PBS_O_WORKDIR module load jdk export _JAVA_OPTIONS=-Xmx16777216K java executable
Ejemplo de trabajo OpenMP:
#!/bin/bash #PBS -l nodes=1:ppn=64,walltime=1:00:00 #PBS -N ej-openmp cd $PBS_O_WORKDIR export OMP_NUM_THREADS=64 ./executable
Ejemplo de trabajo MPI:
#!/bin/bash #PBS -l nodes=8:ppn=64,walltime=1:00:00 #PBS -N ej-mpi cd $PBS_O_WORKDIR module load openmpi mpirun -np 512 ./executable
Ejemplo de trabajo R:
No es posible realizar una sesión R interactiva, por lo que es necesario escribir previamente los comandos en un script.
#!/bin/bash #PBS -l nodes=1:ppn=1,walltime=1:00:00 #PBS -N ej-R cd $PBS_O_WORKDIR module load R R --no-save < test.R
Ejemplo de trabajo MATLAB:
No es posible realizar una sesión MATLAB interactiva, por lo que es necesario escribir previamente los comandos en un script. 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
.
#!/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