Guía de referencia del clúster HPC ctcomp2

# Acceso
ssh -p <port> nome.apelido@ctcomp2.inv.usc.es

# importar
scp -p <port> \
  fich_orixe  \
  nome.apelido@ctcomp2.inv.usc.es:~/fich_destino
scp -p <port> -r \
  dir_orixe      \
  nome.apelido@ctcomp2.inv.usc.es:~/dir_destino

# exportar
scp -p <port>                                  \
  nome.apelido@ctcomp2.inv.usc.es:~/fich_orixe \
  fich_destino
scp -p <port> -r                              \
  nome.apelido@ctcomp2.inv.usc.es:~/dir_orixe \
  dir_destino
# Gestión de módulos
module avail 
module list
module load <module_name>
module unload <module_name>
module purge
# Compilación GCC
gcc      -O exemplo.c   -o exe
g++      -O exemplo.cpp -o exe
gfortran -O exemplo.f   -o exe
# Compilación OpenMP (+GCC)
gcc      -O -fopenmp exemplo.c   -o exe-omp
g++      -O -fopenmp exemplo.cpp -o exe-omp
gfortran -O -fopenmp exemplo.f   -o exe-omp 
# Compilación OpenMPI (+GCC)
module load openmpi
mpicc  -O exemplo.c    -o exe-mpi   
mpicxx -O exemplo.cpp  -o exe-mpi 
mpif77 -O exemplo.f    -o exe-mpi 
# Manejo de la cola de trabajos 
chmod u+x myjob.sh
qsub myjob.sh
qstat
qstat -q
pbsnodes
qdel <job_id>
qsub -q short myjob.sh
qsub -q bigmem myjob_64ppn.sh
qsub -I -q interactive
#!/bin/bash
# --- Ejemplo de configuración PBS --- #
#PBS -l nodes=1:ppn=1,walltime=1:00:00
#PBS -N proba-PBS
#PBS -e mySTD.err
#PBS -o mySTD.out
#PBS -m ae -M nome.apelido@usc.es
cd $PBS_O_WORKDIR
./executable
#!/bin/bash
# --- Ejemplo de ejecución: nodos Intel M910 --- #
#PBS -l nodes=1:ppn=1:intel:xeonl,walltime=1:00:00
cd $PBS_O_WORKDIR
./executable_intel
#!/bin/bash
# --- Ejemplo de ejecución: nodos Intel M620 --- #
#PBS -l nodes=1:ppn=1:intel:xeone5,walltime=1:00:00
cd $PBS_O_WORKDIR
./executable_intel
#!/bin/bash
# --- Ejemplo de ejecución: nodos AMD --- #
#PBS -l nodes=1:ppn=1:amd,walltime=1:00:00
cd $PBS_O_WORKDIR
./executable_amd
#!/bin/bash
# --- Ejemplo trabajo secuencial --- #
#PBS -l nodes=1:ppn=4,walltime=1:00:00
#PBS -N ej-secuencial
cd $PBS_O_WORKDIR
(cd dir1; ./exec1) &
(cd dir2; ./exec2) &
(cd dir3; ./exec3) &
(cd dir4; ./exec4) &
wait
#!/bin/bash
# --- Ejemplo trabajo JAVA --- #
#PBS -l nodes=1:ppn=64,walltime=1:00:00
#PBS -N ej-java
cd $PBS_O_WORKDIR
export _JAVA_OPTIONS=-Xmx16777216K
module load java
java executable
#!/bin/bash
# --- Ejemplo trabajo OpenMP --- #
#PBS -l nodes=1:ppn=64,walltime=1:00:00
#PBS -N ej-openmp
cd $PBS_O_WORKDIR
export OMP_NUM_THREADS=64
./executable 
#!/bin/bash
# --- Ejemplo trabajo MPI --- #
#PBS -l nodes=2:ppn=64,walltime=1:00:00
#PBS -N ej-mpi
cd $PBS_O_WORKDIR
module load openmpi
mpirun -np 128 ./executable
#/bin/bash
# --- Ejemplo trabajo R --- #
#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

MATLAB secuencial:

#!/bin/bash
# --- Ejemplo trabajo MATLAB (SECUENCIAL) --- #
#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 -nosplash -nojvm -singleCompThread
# -r:         indicar el fichero a ejecutar (sin .m)
# (!) 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

MATLAB paralelo, exclusivo nodos AMD (64 threads implícitos):

#!/bin/bash
# --- Ejemplo trabajo MATLAB (PARALELO nodos amd: 64 threads implícitos) --- #
#PBS -l nodes=1:ppn=64:amd,walltime=1:00:00
#PBS -N ej-MATLAB
cd $PBS_O_WORKDIR
module load matlab
matlab -r test -nodisplay -nojvm -nosplash
# -r:         indicar el fichero a ejecutar (sin .m)
# (!) Incluir la orden quit al final del fichero
# -nodisplay: sin display X.
# -nosplash: sin pantalla inicial (OPCIONAL)
# -nojvm: sin entorno java (OPCIONAL)

MATLAB paralelo, exclusivo nodos INTEL (32 threads implícitos):

#!/bin/bash
# --- Ejemplo trabajo MATLAB (PARALELO nodos intel: 32 threads implícitos) --- #
#PBS -l nodes=1:ppn=32:intel,walltime=1:00:00
#PBS -N ej-MATLAB
cd $PBS_O_WORKDIR
module load matlab
matlab -r test -nodisplay -nojvm -nosplash
# -r:         indicar el fichero a ejecutar (sin .m)
# (!) Incluir la orden quit al final del fichero
# -nodisplay: sin display X.
# -nosplash: sin pantalla inicial (OPCIONAL)
# -nojvm: sin entorno java (OPCIONAL)