wiki:computo:tutorial_slurm
Diferencias
Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previaAmbos lados, revisión siguiente | ||
wiki:computo:tutorial_slurm [2022/01/06 19:49] srgualpa [Ejemplos Script Slurm] | wiki:computo:tutorial_slurm [2022/01/07 20:11] (actual) srgualpa [Ejemplos Script Slurm] | ||
---|---|---|---|
Línea 1457: | Línea 1457: | ||
### Cargar los módulos para la tarea | ### Cargar los módulos para la tarea | ||
# FALTA: Agregar los módulos necesarios | # FALTA: Agregar los módulos necesarios | ||
- | module load gpu cuda/9.1.85 | + | module load gcc |
+ | | ||
### Largar el programa | ### Largar el programa | ||
# FALTA: Cambiar el nombre del programa | # FALTA: Cambiar el nombre del programa | ||
Línea 1503: | Línea 1503: | ||
### Cargar los módulos para la tarea | ### Cargar los módulos para la tarea | ||
# FALTA: Agregar los módulos necesarios | # FALTA: Agregar los módulos necesarios | ||
- | module load clemente ... | + | module load gcc |
+ | module load openmpi | ||
### Largar el programa con los cores detectados | ### Largar el programa con los cores detectados | ||
Línea 1559: | Línea 1560: | ||
### Cargar los módulos para la tarea | ### Cargar los módulos para la tarea | ||
# FALTA: Agregar los módulos necesarios | # FALTA: Agregar los módulos necesarios | ||
- | module load clemente etc... | + | module load gcc |
### Largar el programa | ### Largar el programa | ||
Línea 1573: | Línea 1574: | ||
| | ||
- | | ||
- | | ||
- | | ||
- | |||
- | <button class=" | ||
- | <div class=" | ||
- | < | ||
- | < | ||
- | < | ||
- | < | ||
- | <li class=" | ||
- | <li class=" | ||
- | <li class=" | ||
- | <li class=" | ||
- | </ | ||
- | < | ||
- | </ | ||
- | <file c submit_gpu_job.sh[enable_line_numbers=" | ||
- | #!/bin/bash | ||
- | |||
- | #### NOTA: ESTE SCRIPT ES VIEJO | ||
- | |||
- | ### Las líneas #SBATCH configuran los recursos de la tarea | ||
- | ### (aunque parezcan estar comentadas) | ||
- | |||
- | ### Nombre de la tarea | ||
- | #SBATCH --job-name=nombre | ||
- | |||
- | ### Cantidad de nodos a usar | ||
- | #SBATCH --nodes=1 | ||
- | |||
- | ### GPUs por nodo (menor o igual 2) | ||
- | ### OJO: Todos los procesos en un nodo ven ambas GPU con gpu:2! | ||
- | ### Llamar al programa con / | ||
- | #SBATCH --gres=gpu: | ||
- | |||
- | ### Procesos por nodo | ||
- | #SBATCH --ntasks-per-node=1 | ||
- | |||
- | ### Cores por proceso (OpenMP/ | ||
- | ### Recordar exportar OMP_NUM_THREADS/ | ||
- | #SBATCH --cpus-per-task=1 | ||
- | export OMP_NUM_THREADS=1 | ||
- | |||
- | ### Tiempo de ejecucion. Formato dias-horas: | ||
- | #SBATCH --time 7-0:00 | ||
- | |||
- | ### Environment setup | ||
- | . / | ||
- | |||
- | ### Environment modules | ||
- | module load cuda/5.0 | ||
- | |||
- | ### Ejecutar la tarea | ||
- | ### NOTA: srun configura MVAPICH2 y MPICH con lo puesto arriba, | ||
- | ### no hay que llamar a mpirun. | ||
- | srun algun_programa_gpu | ||
- | |||
- | </ | ||
- | < | ||
- | </ | ||
| | ||
- | <button class=" | ||
- | < | ||
- | < | ||
- | < | ||
- | <li class=" | ||
- | <li class=" | ||
- | <li class=" | ||
- | <li class=" | ||
- | </ | ||
- | < | ||
- | </ | ||
- | <file c submit_mpi_job.sh[enable_line_numbers=" | ||
- | #!/bin/bash | ||
- | |||
- | ### Las líneas #SBATCH configuran los recursos de la tarea | ||
- | ### (aunque parezcan estar comentadas) | ||
- | |||
- | ### Nombre de la tarea | ||
- | #SBATCH --job-name=programa_mpi | ||
- | |||
- | ### Cola a usar (capacity, capability, gpu) | ||
- | #SBATCH --partition=capability | ||
- | |||
- | ### Cantidad de nodos a usar | ||
- | #SBATCH --nodes=1 | ||
- | |||
- | ### Cantidad de procesos a lanzar por nodo | ||
- | ### capacity=16, | ||
- | #SBATCH --ntasks-per-node=18 | ||
- | |||
- | ### Cores por proceso (para MPI+OpenMP) | ||
- | #SBATCH --cpus-per-task=1 | ||
- | export OMP_NUM_THREADS=1 | ||
- | export MKL_NUM_THREADS=1 | ||
- | |||
- | ### GPUs por nodo | ||
- | ### capacity/ | ||
- | #SBATCH --gres=gpu: | ||
- | |||
- | ### Tiempo de ejecucion. Formato dias-horas: | ||
- | #SBATCH --time 7-0:00 | ||
- | |||
- | |||
- | ### Script que se ejecuta al arrancar el trabajo | ||
- | |||
- | ### Cargar el entorno del usuario incluyendo la funcionalidad de modules | ||
- | ### No tocar | ||
- | . / | ||
- | |||
- | ### Cargar los módulos para la tarea | ||
- | # FALTA: Agregar los módulos necesarios | ||
- | module load etcetera | ||
- | |||
- | ### Largar el programa con los cores detectados | ||
- | ### La cantidad de nodos y cores se detecta automáticamente | ||
- | # FALTA: Cambiar el nombre del programa | ||
- | srun programa | ||
- | </ | ||
- | < | ||
- | </ | ||
- | | ||
- | <button class=" | ||
- | < | ||
- | < | ||
- | < | ||
- | <li class=" | ||
- | <li class=" | ||
- | <li class=" | ||
- | <li class=" | ||
- | </ | ||
- | < | ||
- | </ | ||
- | <file c submit_openmp_job.sh[enable_line_numbers=" | ||
- | #!/bin/bash | ||
- | |||
- | ### Las líneas #SBATCH configuran los recursos de la tarea | ||
- | ### (aunque parezcan estar comentadas) | ||
- | |||
- | ### Nombre de la tarea | ||
- | #SBATCH --job-name=programa_openmp | ||
- | |||
- | ### Cola de trabajos a usar | ||
- | ### Es OpenMP, no podemos usar más de un nodo, así que capacity | ||
- | #SBATCH --partition=capacity | ||
- | |||
- | ### Procesos a largar. | ||
- | ### Es OpenMP, o sea que un proceso en un nodo y muchos hilos. | ||
- | #SBATCH --ntasks=1 | ||
- | |||
- | ### Hilos por proceso | ||
- | ### Poner el mismo valor acá que en OMP_NUM_THREADS/ | ||
- | #SBATCH --cpus-per-task=16 | ||
- | |||
- | ### GPUs (0 o 1) | ||
- | #SBATCH --gres=gpu: | ||
- | |||
- | ### Tiempo de ejecucion. Formato dias-horas: | ||
- | ### Traten de acotarlo. | ||
- | #SBATCH --time 7-0:00 | ||
- | |||
- | ### Script que se ejecuta al arrancar el trabajo | ||
- | |||
- | ### Cargar el entorno del usuario incluyendo la funcionalidad de modules | ||
- | ### No tocar | ||
- | . / | ||
- | |||
- | ### Configurar OpenMP/ | ||
- | export OMP_NUM_THREADS=16 | ||
- | export MKL_NUM_THREADS=16 | ||
- | |||
- | ### Cargar los módulos para la tarea | ||
- | # FALTA: Agregar los módulos necesarios | ||
- | module load etcetera | ||
- | |||
- | ### Largar el programa | ||
- | # FALTA: Cambiar el nombre del programa | ||
- | srun programa | ||
- | |||
- | </ | ||
- | < | ||
- | </ | ||
- | | ||
- | | ||
- | | ||
- | |||
- | | ||
- | | ||
- | | ||
- | <button class=" | ||
- | < | ||
- | < | ||
- | < | ||
- | <li class=" | ||
- | <li class=" | ||
- | <li class=" | ||
- | <li class=" | ||
- | </ | ||
- | < | ||
- | </ | ||
- | <file c submit_gamess.sh[enable_line_numbers=" | ||
- | #!/bin/bash | ||
- | |||
- | ### NOTA: | ||
- | ### GAMESS requiere un directorio ~/scr en el home del usuario para correr | ||
- | |||
- | ### Cantidad de cores (menor o igual a 16) | ||
- | #SBATCH --ntasks=16 | ||
- | CORES=16 | ||
- | |||
- | ### Nombre de la tarea | ||
- | #SBATCH --job-name=gamess | ||
- | |||
- | ### Correr en un solo nodo hasta que veamos cómo hacer para lanzar en muchos | ||
- | #SBATCH --nodes=1 | ||
- | |||
- | ### Cores por proceso (OpenMP/ | ||
- | ### GAMESS corre uno solo | ||
- | #SBATCH --cpus-per-task=1 | ||
- | export OMP_NUM_THREADS=1 | ||
- | export MKL_NUM_THREADS=1 | ||
- | |||
- | ### Tiempo de ejecucion. Formato dias-horas: | ||
- | #SBATCH --time 1-0:00 | ||
- | |||
- | ### Environment setup | ||
- | . / | ||
- | |||
- | ### Environment modules | ||
- | module load md/ | ||
- | |||
- | ### Ejecutar la tarea | ||
- | ### NOTA: srun configura MVAPICH2 y MPICH con lo puesto arriba, | ||
- | ### no hay que llamar a mpirun. | ||
- | rungms $1 00 ${CORES} | ||
- | </ | ||
- | < | ||
- | </ | ||
- | | ||
- | | ||
- | | ||
- | <button class=" | ||
- | < | ||
- | < | ||
- | < | ||
- | <li class=" | ||
- | <li class=" | ||
- | <li class=" | ||
- | <li class=" | ||
- | </ | ||
- | < | ||
- | </ | ||
- | <file c submit_gromacs.sh[enable_line_numbers=" | ||
- | #!/bin/bash | ||
- | |||
- | ### Las líneas #SBATCH configuran los recursos de la tarea | ||
- | ### (aunque parezcan estar comentadas) | ||
- | |||
- | ### Usar cola gpu | ||
- | #SBATCH --partition=gpu | ||
- | |||
- | ### Nombre de la tarea | ||
- | #SBATCH --job-name=gromacs | ||
- | |||
- | ### Cantidad de nodos a usar | ||
- | #SBATCH --nodes=2 | ||
- | |||
- | ### Procesos por nodo | ||
- | #SBATCH --ntasks-per-node=1 | ||
- | |||
- | ### GPUs por nodo | ||
- | #SBATCH --gres=gpu: | ||
- | |||
- | ### Cores por nodo | ||
- | #SBATCH --cpus-per-task=20 | ||
- | export OMP_NUM_THREADS=20 | ||
- | export MKL_NUM_THREADS=20 | ||
- | |||
- | ### Tiempo de ejecucion. Formato dias-horas: | ||
- | #SBATCH --time 7-0:00 | ||
- | |||
- | ### Environment setup | ||
- | . / | ||
- | |||
- | ### Environment modules | ||
- | module load md/ | ||
- | |||
- | ### Largar el progrma en cuestion | ||
- | srun mdrun_mpi | ||
- | </ | ||
- | < | ||
- | </ | ||
- | |||
- | | ||
- | | ||
- | <button class=" | ||
- | < | ||
- | < | ||
- | < | ||
- | <li class=" | ||
- | <li class=" | ||
- | <li class=" | ||
- | <li class=" | ||
- | </ | ||
- | < | ||
- | </ | ||
- | <file c submit_lammps.sh[enable_line_numbers=" | ||
- | #!/bin/bash | ||
- | |||
- | ### Las líneas #SBATCH configuran los recursos de la tarea | ||
- | ### (aunque parezcan estar comentadas) | ||
- | |||
- | ### Nombre de la tarea | ||
- | #SBATCH --job-name=lammps | ||
- | |||
- | ### Cola a usar (capacity, capability, gpu) | ||
- | #SBATCH --partition=gpu | ||
- | |||
- | ### Cantidad de nodos a usar | ||
- | #SBATCH --nodes=1 | ||
- | |||
- | ### Cantidad de procesos a lanzar por nodo | ||
- | ### capacity=16, | ||
- | #SBATCH --ntasks-per-node=20 | ||
- | |||
- | ### Cores por proceso | ||
- | ### LAMMPS está compilado con OpenMP, probar combinaciones | ||
- | #SBATCH --cpus-per-task=1 | ||
- | export OMP_NUM_THREADS=1 | ||
- | export MKL_NUM_THREADS=1 | ||
- | |||
- | ### GPUs por nodo | ||
- | ### capacity/ | ||
- | #SBATCH --constraint=kepler | ||
- | #SBATCH --gres=gpu: | ||
- | |||
- | ### Tiempo de ejecucion. Formato dias-horas: | ||
- | #SBATCH --time 7-0:00 | ||
- | |||
- | ### Script que se ejecuta al arrancar el trabajo | ||
- | |||
- | ### Cargar el entorno del usuario incluyendo la funcionalidad de modules | ||
- | ### No tocar | ||
- | . / | ||
- | |||
- | ### Cargar los módulos para la tarea | ||
- | # FALTA: Agregar los módulos necesarios | ||
- | module load md/ | ||
- | |||
- | ### Largar el programa con los cores detectados | ||
- | ### La cantidad de nodos y cores se detecta automáticamente | ||
- | # FALTA: agregar parámetros | ||
- | srun lmp_mendieta (...) | ||
- | </ | ||
- | < | ||
- | </ | ||
- | |||
- | | ||
- | | ||
- | | ||
- | <button class=" | ||
- | < | ||
- | < | ||
- | < | ||
- | <li class=" | ||
- | <li class=" | ||
- | <li class=" | ||
- | <li class=" | ||
- | </ | ||
- | < | ||
- | </ | ||
- | <file c submit.sh[enable_line_numbers=" | ||
- | #!/bin/bash | ||
- | |||
- | ### Las líneas #SBATCH configuran los recursos de la tarea | ||
- | ### (aunque parezcan estar comentadas) | ||
- | |||
- | ### Nombre de la tarea | ||
- | #SBATCH --job-name=test-phi-mpi | ||
- | |||
- | ### Cola a usar | ||
- | #SBATCH --partition=phi | ||
- | |||
- | ### No queremos compartir xeon phis, poca memoria | ||
- | #SBATCH --exclusive | ||
- | |||
- | ### Usar un xeon phi de 57 cores | ||
- | #SBATCH --nodes=1 | ||
- | #SBATCH --ntasks-per-node=57 | ||
- | |||
- | ### Cores por proceso (para MPI+OpenMP) | ||
- | #SBATCH --threads-per-core=4 | ||
- | |||
- | ### Tiempo de ejecucion. Formato dias-horas: | ||
- | #SBATCH --time 7-0:00 | ||
- | </ | ||
- | < | ||
- | <file make Makefile[enable_line_numbers=" | ||
- | | ||
- | CFLAGS=-Wall -Wextra -O2 -mmic -openmp -mkl=parallel | ||
- | |||
- | TARGETS=proctest | ||
- | |||
- | proctest: proctest.o | ||
- | $(CC) $(CFLAGS) -o $@ $< | ||
- | |||
- | .PHONY: clean | ||
- | |||
- | clean: | ||
- | rm -f *.o $(TARGETS) | ||
- | |||
- | </ | ||
- | < | ||
- | <file c proctest.c[enable_line_numbers=" | ||
- | #include < | ||
- | #include < | ||
- | |||
- | #include " | ||
- | |||
- | int main(int argc, char ** argv) { | ||
- | |||
- | MPI_Init(& | ||
- | |||
- | int commsize, commrank; | ||
- | MPI_Comm_size(MPI_COMM_WORLD, | ||
- | MPI_Comm_rank(MPI_COMM_WORLD, | ||
- | |||
- | #pragma omp parallel | ||
- | { | ||
- | int omptid = omp_get_thread_num(); | ||
- | int ompthreads = omp_get_num_threads(); | ||
- | |||
- | #pragma omp critical | ||
- | printf(" | ||
- | } | ||
- | |||
- | MPI_Finalize(); | ||
- | return 0; | ||
- | } | ||
- | |||
- | </ | ||
| | ||
- | < | ||
- | </ | ||
- | |||
- | |||
- | | ||
- | |||
- | | ||
- | <button class=" | ||
- | < | ||
- | < | ||
- | < | ||
- | <li class=" | ||
- | <li class=" | ||
- | <li class=" | ||
- | <li class=" | ||
- | </ | ||
- | < | ||
- | </ | ||
- | <file c submit_omp.sh[enable_line_numbers=" | ||
- | # | ||
- | ### Las líneas #SBATCH configuran los recursos de la tarea | ||
- | ### (aunque parezcan estar comentadas) | ||
- | |||
- | ### Nombre de la tarea | ||
- | #SBATCH --job-name=test-phi-openmp | ||
- | |||
- | ### Cola a usar | ||
- | #SBATCH --partition=phi | ||
- | |||
- | ### No queremos compartir xeon phis, poca memoria | ||
- | #SBATCH --exclusive | ||
- | |||
- | ### Un solo proceso para OpenMP | ||
- | #SBATCH --ntasks=1 | ||
- | |||
- | ### Cores por proceso | ||
- | #SBATCH --cpus-per-task=57 | ||
- | #SBATCH --threads-per-core=4 | ||
- | |||
- | ### Tiempo de ejecucion. Formato dias-horas: | ||
- | #SBATCH --time 7-0:00 | ||
- | |||
- | ### Script que se ejecuta al arrancar el trabajo | ||
- | |||
- | ### Cargar el entorno del usuario | ||
- | ### (en phi: MKL e Intel MPI) | ||
- | ### No tocar | ||
- | . / | ||
- | |||
- | ### No tenemos módulos en los xeon phi | ||
- | ### Hasta 4 hilos por core | ||
- | export OMP_NUM_THREADS=228 | ||
- | export MKL_NUM_THREADS=228 | ||
- | |||
- | ### Largar el programa | ||
- | srun ./proctest | ||
- | </ | ||
- | < | ||
- | <file make Makefile[enable_line_numbers=" | ||
- | CC=icc | ||
- | CFLAGS=-Wall -Wextra -O2 -mmic -openmp -mkl=parallel | ||
- | |||
- | TARGETS=proctest | ||
- | |||
- | proctest: proctest.o | ||
- | $(CC) $(CFLAGS) -o $@ $< | ||
- | |||
- | .PHONY: clean | ||
- | |||
- | clean: | ||
- | rm -f *.o $(TARGETS) | ||
- | </ | ||
- | < | ||
- | |||
- | <file c proctest.c[enable_line_numbers=" | ||
- | #include < | ||
- | #include < | ||
- | |||
- | int main(int argc, char ** argv) { | ||
- | |||
- | #pragma omp parallel | ||
- | { | ||
- | int omptid = omp_get_thread_num(); | ||
- | int ompthreads = omp_get_num_threads(); | ||
- | |||
- | #pragma omp critical | ||
- | printf(" | ||
- | } | ||
- | |||
- | return 0; | ||
- | } | ||
- | |||
- | |||
- | </ | ||
- | < | ||
- | </ | ||
</ | </ | ||
wiki/computo/tutorial_slurm.1641498587.txt.gz · Última modificación: 2022/01/06 19:49 por srgualpa