Changes between Initial Version and Version 1 of SMG


Ignore:
Timestamp:
Mar 2, 2016 1:34:51 PM (6 years ago)
Author:
carlos
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • SMG

    v1 v1  
     1= ALTAMIRA =
     2
     3[[NoteBox(note, Se recomienda la lectura la [https://grid.ifca.es/wiki/Supercomputing/Userguide  guía de usuario] del Supercomputador Altamira antes de la realización de las prácticas.)]]
     4
     5== Práctica 1 ==
     6El objetivo de esta práctica es tomar contacto con el uso del Supercomputador Altamira, así como del sistema de colas [https://computing.llnl.gov/linux/slurm/ SLURM] instalado en él:
     7
     8* Conéctese al frontend de Altamira (altamira1.ifca.es) mediante el comando `ssh` (!Linux/Mac OS) o el programa [http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe PyTTY] (Windows). Para ello, previamente cada alumno ha recibido un correo con una cuenta y una clave de acceso:
     9{{{
     10[user@localmachine ~]$ ssh user@altamira1.ifca.es
     11}}}
     12
     13* Desde el frontend, utilizando la plantilla que se adjunta enviar un job. Para lo cual, será necesario utilizar el comando '''mnsubmit''', así como los editores '''vi''' o '''nano'''.
     14 
     15 Plantilla:
     16{{{
     17#!/bin/bash
     18#@ job_name = sleep_%j
     19#@ initialdir = .
     20#@ output = sleep_%j.out
     21#@ error = sleep_%j.err
     22#@ total_tasks = 1
     23#@ wall_clock_limit = 00:02:00
     24 
     25echo "Nodo: ${SLURM_NODELIST}"
     26
     27echo "Hora de inicio `date`"
     28sleep 30
     29echo "Hora de fin `date`"
     30}}}
     31
     32* Envío del job:
     33{{{
     34[user@login1 ~]$ mnsubmit sleep_template
     35Submitted batch job 621336
     36}}}
     37* Para monitorizar el job use el comando '''mnq''':
     38{{{
     39[user@login1 ~]$ mnq
     40  JOBID     NAME     USER    STATE       TIME TIMELIMIT CPUS  NODES NODELIST(REASON)
     41 621336 0.sleep_     user  PENDING       0:00      2:00    1      1 (Priority)
     42
     43}}}
     44* Comprobar el resultado obtenido en los ficheros de '''output'''(sleep_%j.out) y '''error'''(sleep_%j.err).
     45
     46== Práctica 2 ==
     47Una vez enviado nuestro primer job, ejecutaremos un job de tipo openMP usando el código del programa [http://moodle.unican.es/moodle27/pluginfile.php/96708/mod_resource/content/0/HelloWorldOpenMP.c HelloWorldOpenMP].
     48
     49* Haciendo uso del programa '''module''' cargar el compilador ''gcc'':
     50{{{
     51[user@login1 ~]$ module load gcc
     52load gcc/4.6.3 (PATH, MANPATH, LD_LIBRARY_PATH)
     53}}}
     54
     55* Compilar el programa ''HelloWorldOpenMP.c'' y generar un ejecutable con el nombre ''HelloWorldOpenMP'':
     56{{{
     57[user@login1 ~]$ gcc HelloWorldOpenMP.c -fopenmp -o HelloWorldOpenMP
     58}}}
     59
     60* Plantilla a ejecutar en el supercomputador:
     61{{{
     62#!/bin/bash
     63#@ job_name = openmp_%j
     64#@ initialdir = .
     65#@ output = openmp_%j.out
     66#@ error = openmp_%j.err
     67#@ total_tasks = 32
     68#@ wall_clock_limit = 00:02:00
     69 
     70echo "Numero de procesos: ${SLURM_NPROCS}"
     71echo "Numero de nodos: ${SLURM_JOB_NUM_NODES}"
     72echo "Numero de procesos por nodo: ${SLURM_JOB_CPUS_PER_NODE}"
     73echo "Nodos: ${SLURM_JOB_NODELIST}"
     74
     75./HelloWorldOpenMP
     76}}}
     77 Más información sobre las variables de entorno (${SLRUM_*}) en el [http://slurm.schedmd.com/sbatch.html#SECTION_OUTPUT%20ENVIRONMENT%20VARIABLES link].
     78
     79* Envió del job openMP:
     80{{{
     81$ module load gcc
     82load gcc/4.6.3 (PATH, MANPATH, LD_LIBRARY_PATH)
     83$ mnsubmit HelloWorldOpenMP_template
     84Submitted batch job 621342
     85}}}
     86
     87* Una vez finalizado el job, compruebe el resultado obtenido en los ficheros '''output''' (openmp_%j.out) y '''error''' (openmp_%j.err). ¿ El resultado obtenido es el esperado? ¿Por qué?.
     88
     89== Práctica 3 ==
     90Repita 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`.
     91* La plantilla a utilizar en ese caso será:
     92{{{
     93#!/bin/bash
     94#@ job_name = openmp_%j
     95#@ initialdir = .
     96#@ output = openmp_%j.out
     97#@ error = openmp_%j.err
     98#@ total_tasks = 32
     99#@ wall_clock_limit = 00:02:00
     100 
     101export OMP_NUM_THREADS=XX
     102
     103echo "Numero de procesos: ${SLURM_NPROCS}"
     104echo "Numero de nodos: ${SLURM_JOB_NUM_NODES}"
     105echo "Numero de procesos por nodo: ${SLURM_JOB_CPUS_PER_NODE}"
     106echo "Nodos: ${SLURM_JOB_NODELIST}"
     107
     108./HelloWorldOpenMP
     109}}}
     110 Donde '''XX''' es el número de ''threads'' a ejecutar.
     111
     112* Envíe 3 jobs con '''XX''' igual a 8, 16 y 32, y compruebe si los resultados son el esperados.