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