Pour chaque application installée sur le mésocentre vous pouvez trouver un exemple de script dans la rubrique Logiciels installés
Applications séquentielles
- job_seq.sge
#!/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
- array.sge
#!/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)
- appli_mpi.sge
#!/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)
- appli_openmp.sge
#!/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.
- appli_openmp.sge
#!/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
- appli_gpu.sge
#!/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