Pour chaque application installée sur le mésocentre vous pouvez trouver un exemple de script dans la rubrique [[logiciels_installes]]
====== Applications séquentielles ======
#!/bin/bash
#$ -N test_sge
#$ -o $JOB_NAME.$JOB_ID.out
#$ -e $JOB_NAME.$JOB_ID.err
time ./monProgrammeCompile
====== Applications parallèles ======
===== Tableau de tâches =====
#!/bin/bash
#$ -q all.q ## adapter selon cluster
#$ -V
#$ -cwd
#$ -N test_sge
#$ -t 1-100 -tc 50
#$ -o $JOB_NAME.$JOB_ID.out
#$ -e $JOB_NAME.$JOB_ID.err
./appli input$SGE_TASK_ID output$SGE_TASK_ID
===== MPI (mémoire distribuée) =====
#!/bin/bash
#$ -q parallel.q
#$ -pe mpi 32
#$ -V
#$ -N test_sge
#$ -o $JOB_NAME.$JOB_ID.out
#$ -e $JOB_NAME.$JOB_ID.err
#### on charge le module open mpi
module load mpi/openmpi/icc/1.7.5
## lancement de l'application
mpirun -np $NSLOTS ./appli_mpi
===== OpenMP (mémoire partagée) =====
#!/bin/bash
#$ -N test_sge
#$ -pe openmp 8 ## on demande 8 coeurs
#$ -o $JOB_NAME.$JOB_ID.out
export OMP_NUM_THREADS=$NSLOTS
## lancement de l'application
./appli input
===== Hybrid MPI/OpenMP =====
Par exemple, nous souhaitons utiliser 2 process MPI sur chaque noeud. Chaque process lancent 16 threads.
#!/bin/bash
#$ -o $JOB_NAME.$JOB_ID.out
#$ -N test_sge
#$ -pe mpi 32 ## on demande 32 coeurs au total
export OMP_NUM_THREADS=16
module load mpi/openmpi/icc/2.1.1
## lancement de l'application avec mpirun
mpirun --map-by ppr:1:node -bind-to none ./application
* ''--map-by ppr:1:node'' --> On each node, launch one process, since we request 32 cores, we will have 2 nodes with 16 free cores on each
* ''-bind-to none'' --> disable corebinding, else all threads goes to 1 socket
===== Tesla GPU =====
#!/bin/bash
#$ -N test_sge
#$ -o $JOB_NAME.$JOB_ID.out
#$ -q tesla.q ## by default 1 GPU will be allocated
## lancement de l'application
module load gpu/cuda
./appli input