35 nodos (128 GB RAM c/u) |
Head Node: Intel Xeon E5-2650 v3 - 2 CPU x 10 cores |
24 Nodos de cálculo: Intel Xeon E5-2650 v3 - 2 CPU x 10 cores |
7 Nodos de cálculo: Intel Xeon E5-2650 v4 - 2 CPU x 12 cores |
1 Nodos Xeon Phi: Intel Xeon E5-2650 v3 - 2 CPU x 10 cores | Placa CoProcesadora: Xeon Phi 7120P - 61 cores - 16 GB RAM |
5 Nodos GPU: Intel Xeon E5-2650 v3 - 2 CPU x 10 cores | Placa GPU: nVidia Tesla K40 - 2880 cores - 12 GB RAM |
1 Nodos de almacenamiento: Intel Xeon E5-2670 v3 - 1 CPU x 12 cores | Almacenamiento: 144 TB |
+ |
10 Nodos de cálculo: AMD Epyc 7401 - 2 CPU x 24 cores | 256 GB RAM | Red Ethernet |
44 Nodos de cálculo: Intel Xeon Gold 6226R - 2 CPU X 16 cores | 192 GB RAM | Red Infiniband |
Pirayú tiene una potencia combinada de 85 TFLOPS, lo que significa que puede realizar aproximadamente 85 billones de operaciones de punto flotante por segundo.
Los teraflops (TFLOPS) son una medida estándar de rendimiento que indica la capacidad de procesamiento de una computadora.
Todo desarrollo científico-tecnológico generado con equipamiento del Consorcio Pirayu debería incluir una referencia al mismo. A continuación un ejemplo de cómo citar el cluster pirayu en un paper o trabajo:
sbatch
y srun
. Se recomienda el uso del primer comando, ya que permite una mejor configuración a pesar de tener que usar un archivo de configuración.sbatch [opciones] script
#!/bin/bash
#SBATCH --job-name=prueba4 # nombre para identificar el trabajo. Por defecto es el nombre del script
#SBATCH --ntasks=10 # cantidad de cores pedidos
# la linea siguiente es ignorada por Slurm porque empieza con ##
##SBATCH --ntasks-per-node=1 # cantidad de cores por nodo, para que distribuya entre varios nodos
#SBATCH --output=myjob.output # la salida y error estandar van a este archivo. Si no es especifca es slurm-%j.out (donde %j es el Job ID)
#SBATCH --error=myjob.error # si se especifica, la salida de error va por separado a este archivo
# aqui comienzan los comandos
mpirun /u/alquien/programa/programa_mpi
--ntasks-per-node=N
, con N igual a la cantidad de tareas si es menor a 20 ó 24 (el trabajo entra en un nodo), o usar N=20 (ó N=24, según el tipo de nodo elegido) cuando la cantidad de tareas excede ese valor.
El tiempo máximo permitido para un trabajo son 15 días, si no se especifica se asignan por defecto 4 días. Cumplido el plazo, el trabajo será cancelado con un error de TIMEOUT
. Para trabajos cortos (pocas horas/días) se recomienda indicar el tiempo porque puede permitir al planificador de Slurm insertarlo en un hueco de recursos.sbatch trabajo.sh
Submitted batch job 101
squeue -l
se puede ver el estado:
JOBID PARTITION NAME USER STATE TIME TIME_LIMI NODES NODELIST(REASON)
101 work prueba4 alguien PENDING 0:00 UNLIMITED 1 (Resources)
100 work mpi-slur alguien RUNNING 0:44 UNLIMITED 5 compute-0-[2-7]
prueba4
ha quedado en espera (PENDING
) hasta que haya nodos suficientes/adecuados (Resources
) para que se ejecute.SBATCH
):sbatch --ntasks=4 --constraint=RAM16 --job-name=parte2 trabajo.sh
--job-name=prueba4 # nombre para identificar el trabajo. Por defecto es el nombre del script
--ntasks=N # solicita N cores, por defecto se asignan consecutivamente dentro de un nodo. Si N excede la cantidad de cores continúa en otro nodo.
--cpus-per-task=C # por cada tarea solicita C cores, utilizando en total C*N cores. Es útil para código híbrido MPI+OpenMP: lanza N procesos MPI reservando C cores para cada una.
--ntasks-per-node=TPN # asigna a lo sumo TPN tareas por nodo hasta completar las ntasks, sin ocupar el resto de cores del nodo. Por ejemplo, si N=20 y TPN=10 se ocuparán 10 cores en 2 nodos.
--nodes=P # solicita P nodos completos. Tener en cuenta lanzar la cantidad adecuada de procesos para que el nodo no quede subtulizado.
--mem-per-cpu=M # asigna M megabytes de memoria por cada ntask. Si no se especifica, por defecto es 6440 MB (aprox 6.3 GB). Tener en cuenta que la tarea será cancelada si excede la cantidad solicitada.
--output=trabajo-%j.salida.txt # redirige la salida del script al archivo especificado.
--error=trabajo-%j.error.txt # redirige la salida de error del script al archivo especificado.
--mail-user=alguien@mail.com.ar --mail-type=end # envía un correo cuando el trabajo finaliza correctamente o por algún error.
--no-requeue # no permite que el trabajo vuelva a ejecutarse luego de un problema en los nodos u otra interrupción. Es útil si el código/aplicación utilizado no tiene capacidad de continuar desde el último estado guardado.
sbatch --dependency=afterany:110 segunda_parte.sh
--dependency
son:
afterany:job_id[:job_id...]
job_id
haya finalizado.afternotok:job_id[:job_id...]
job_id
haya finalizado con algún estado de error (código de sálida distinto de cero, fallo de nodo, timeout, etc.)afterok:job_id[:job_id...]
job_id
haya finalizado correctamente.--constraint=v3-20cores o --constraint=v4-24cores
--gres=gpu --ntasks=N # usar nodos dentro de la partición "gpu" y la placa GPU por cada nodo pedido. Asigna además N cores por nodo pedido, máximo 2 cores.
--gres=mic # usar nodo dentro de la partición "gpu" y la placa Xeon Phi. Asigna además un core en el nodo. Al disponer sólo de una placa no se puede solicitar más de un nodo.
squeue -l # lista los trabajos en ejecución y espera
sinfo # muestra estado de los nodos
scancel JOB_ID # cancela un trabajo
slurm j JOB_ID # muestra detalles de un trabajo
Ver en tiempo real los recursos y el rendimiento de Pirayu a través de las herramientas Ganglia y Grafana.
c3admin@santafe-conicet.gov.ar
hpc-cimec@googlegroups.com (Lista de usuarios)
+54-342-4511594/95 int 7025/7026/7027
Edificio CIMEC - Predio CONICET Santa Fe "Dr. Alberto Cassano" - Colectora Ruta Nac Nro 168, Km 0, Paraje El Pozo - (3000) Santa Fe - Argentina