Ejemplo de script para corrida paralela con OpenMp:
#$ -N nombre
#
#$ -pe openmp 8
#$ -l h_rt=10:00:00
#$ -cwd
# MPIR_HOME, importo variables de entorno del SGE
#$ -V
##Seteo la cantidad de threads que se va a usar
#$ -v OMP_NUM_THREADS=1 ### Setea la cantidad de threads a 1
# Comandos del usuario
Array de jobs
Los arreglos de job proveen un mecanismo para enviar un conjunto de jobs relacionados. A cada job se le asigna un ID de tarea que puede ser usado dentro del sript para controlar el comportamiento del job.
Los jobs son enviados como un bloque y controlados por un ID de job. Esta forma de enviar jobs es util cuando se intenta enviar a correr un mismo programa muchas veces con diferentes datos de entrada.
En vez de enviar cientos de jobs individuales, se puede enviar un único job que ejecute una tarea para cada input distinto.
Como ejemplo, consideremos la siguiente tarea. Tenemos 50 archivos con datos de entrada (datos.1 a datos.50) para un programa (serie), el script quedaría:
#!/bin/bash
#
# Script para correr array de jobs seriales
#
# Opciones SGE
#$ -l h_rt=10:00:00 # Setea 10 horas de wall clock time
#$ -cwd # Cambia al directorio actual
#$ -V # Exporta las variables de entorno
#$ -t 1-50 # Setea el array de indices
# corre el programa
$HOME/programa < datos.$SGE_TASK_ID > output.$SGE_TASK_ID
El SGE utilizará tantos slots como haya disponibles para correr tantas tareas en forma concurrente como sea posible.
También se pueden enviar arrays de jobs paralelos combinando las opciones t y pe.
|