Se recomienda la lectura la ?guía de usuario del Supercomputador Altamira antes de la realización de las prácticas.
El objetivo de esta práctica es tomar contacto con el uso del Supercomputador Altamira, así como del sistema de colas ?SLURM instalado en él:
[user@localmachine ~]$ ssh user@altamira1.ifca.es
Plantilla:
#!/bin/bash #@ job_name = sleep_%j #@ initialdir = . #@ output = sleep_%j.out #@ error = sleep_%j.err #@ total_tasks = 1 #@ wall_clock_limit = 00:02:00 echo "Nodo: ${SLURM_NODELIST}" echo "Hora de inicio `date`" sleep 30 echo "Hora de fin `date`"
[user@login1 ~]$ mnsubmit sleep_template Submitted batch job 621336
[user@login1 ~]$ mnq JOBID NAME USER STATE TIME TIMELIMIT CPUS NODES NODELIST(REASON) 621336 0.sleep_ user PENDING 0:00 2:00 1 1 (Priority)
Una vez enviado nuestro primer job, ejecutaremos un job de tipo openMP usando el código del programa [ ?http://moodle.unican.es/pluginfile.php/129616/mod_resource/content/0/omp_hello.c HelloWorldOpenMP].
[user@login1 ~]$ module load gcc load gcc/4.6.3 (PATH, MANPATH, LD_LIBRARY_PATH)
[user@login1 ~]$ gcc HelloWorldOpenMP.c -fopenmp -o HelloWorldOpenMP
#!/bin/bash #@ job_name = openmp_%j #@ initialdir = . #@ output = openmp_%j.out #@ error = openmp_%j.err #@ total_tasks = 32 #@ wall_clock_limit = 00:02:00 echo "Numero de procesos: ${SLURM_NPROCS}" echo "Numero de nodos: ${SLURM_JOB_NUM_NODES}" echo "Numero de procesos por nodo: ${SLURM_JOB_CPUS_PER_NODE}" echo "Nodos: ${SLURM_JOB_NODELIST}" ./HelloWorldOpenMPMás información sobre las variables de entorno (${SLRUM_*}) en el ?link.
$ module load gcc load gcc/4.6.3 (PATH, MANPATH, LD_LIBRARY_PATH) $ mnsubmit HelloWorldOpenMP_template Submitted batch job 621342
Repita el envío del job de la práctica 3 modificando el número de threads a ejecutar, pero sin modificar la variable total_tasks. Para ello, utilice la variable de entorno OMP_NUM_THREADS.
#!/bin/bash #@ job_name = openmp_%j #@ initialdir = . #@ output = openmp_%j.out #@ error = openmp_%j.err #@ total_tasks = 2 #@ wall_clock_limit = 00:02:00 export OMP_NUM_THREADS=XX echo "Numero de procesos: ${SLURM_NPROCS}" echo "Numero de nodos: ${SLURM_JOB_NUM_NODES}" echo "Numero de procesos por nodo: ${SLURM_JOB_CPUS_PER_NODE}" echo "Nodos: ${SLURM_JOB_NODELIST}" ./HelloWorldOpenMPDonde XX es el número de threads a ejecutar.