Guia de Usuario
Para ingresar al cluster Abacus-I se utiliza SecureShell (SSH) en los dos nodos de servicio disponibles. De esta manera, a través de la terminal, tanto en en clientes Linux como MAC, puede ejecutarse el comando:
$ ssh usuario@148.247.115.10
En este caso, se utiliza la direccion ip del del nodo de servicio "service0" para ingresar al cluster. Sin embargo, es posible utilizar tambien el nombre de dominio del nodo, es decir:
$ s0.edomex.cinvestav.mx
De la misma forma, para ingresar al cluster a traves del nodo de servicio "service1" es posible utilizar la siguiente direccion ip:
$ ssh usuario@148.247.115.11
Y el nombre de dominio de este nodo se describe como:
$ s1.edomex.cinvestav.mx
Finalemente, para el caso de clientes Windows es posible utilizar aplicaciones tales como PUTTY.
Administración de recursos
El scheduler utilizado en el cluster es SLURM. SLURM administra recursos tales como CPU, sockets, threads, RAM, tiempo, GPU's, etc.
Es importante mencionar que los nodos de CPU y GPU estan divididos en dos particiones: ICE y GPU, que pueden mostrarse mediante el comando sinfo. Este comando además, muestra los nodos en estado disponibles (idle), los nodos que estan siendo utilizados por otro trabajo (alloc) y los nodos que no estan disponibles para los usuarios (down).
$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST all up infinite 2 down* r2i0n2,service30 all up infinite 1 mix r2i1n7 all up infinite 173 alloc r1i0n[0-17],r1i1n[0-15],r1i2n[0-17],r1i3n[0-14],r1i4n[0- 17],r1i5n[0-15],r1i6n[0-17],r1i7n[0-14],r2i0n[0-1,3-17],r2i1n[0-6,8-15],r2i2n[0-6] all up infinite 141 idle r2i2n[7-17],r2i3n[0-14],r2i4n[0-1,3-17],r2i5n[0-15],r2i6n [0-17],r2i7n[0-14],service[2-29,31-51] all up infinite 1 down r2i4n2 ice* up infinite 1 down* r2i0n2 ice* up infinite 1 mix r2i1n7 ice* up infinite 173 alloc r1i0n[0-17],r1i1n[0-15],r1i2n[0-17],r1i3n[0-14],r1i4n[0- 17],r1i5n[0-15],r1i6n[0-17],r1i7n[0-14],r2i0n[0-1,3-17],r2i1n[0-6,8-15],r2i2n[0-6] ice* up infinite 92 idle r2i2n[7-17],r2i3n[0-14],r2i4n[0-1,3-17],r2i5n[0-15],r2i6n [0-17],r2i7n[0-14] ice* up infinite 1 down r2i4n2 gpu up infinite 1 down* service30 gpu up infinite 49 idle service[2-29,31-51]
Asimismo, este scheduler utiliza comandos tales como SBATCH, SRUN y SEXEC en favor de encolar trabajos en el cluster. Ejemplo:
$ sbatch < example.slurm
Ademas, es importante mecionar que en el momomento que se crea la cuenta en el cluster, un script de slurm es presentado dentro del directorio home del usuario, este script contiene la siguiente informacion
#!/bin/bash # DEFINE EL NUMERO DE NODOS #SBATCH -N 1 # DEFINE EL NUMERO DE PROCESADORES "THREADS" #SBATCH -n 14 # DEFINE LA PARTICION DONDE CORRERAN LOS TRABAJOS "ice PARA CPU" "gpu PARA GPU" #SBATCH --partition=ice # DEFINE EL DIRECTORIO DE TRABAJO #SBACTH -D /lustre/home/Cinvestav/Computacion/matrices/larivera/ # DEFINE EL TIEMPO DE EJECUCION "INDISPENSABLE DEFINIR days-hours:minutes:seconds" #SBATCH --time=6-00:00:00 # NOMBRE DEL ARCHIVO DE SALIDA DE ERROR #SBATCH –error=myjob%J.err # nOMBRE DEL ARCHIVO DE SALIDA ESTANDAR #SBATCH –output=myjob%J.out
## AQUI SE DEFINEN LOS COMANDOS NECESARIOS PARA LANZAR TU TRABAJO
mpicc job.c -o myjob mpirun -n 14 myjob
En favor de conocer el estado del trabajo enviado al cluster se utiliza el comando squeue; por ejemplo:
$ squeue JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON) 4220 ice sbatch larivera R 1:40:06 1 r1i0n0 4221 ice sbatch larivera R 1:40:06 1 r1i0n0 4222 ice sbatch larivera R 1:40:06 1 r1i0n0 4223 ice sbatch larivera R 1:40:06 1 r1i0n0 4224 ice sbatch larivera R 1:40:06 1 r1i0n1 4225 ice sbatch larivera R 1:40:06 1 r1i0n1
Como puede observarse, la salida del comando muestra el JOBID, la partición(cola de ejecucion), el usuario que envio el trabajo, el estado del trabajo(en este caso R, es decir, ejecutandose), el tiempo que lleva en ese estado y, el nodo en el que esta corriendo o la razon por la que se encuentra en un estado diferente a R.
Para detener un trabajo en ejecución o en estado de espera, se utiliza el comando scancel, seguido del JOBID; por ejemplo:
$ scancel 4220
Ademas, cada usuario presenta diferentes requisitos de acuerdo con las aplicaciones y versiones. De esta manera, en favor de que puedan existir diferentes versiones de aplicaciones, se utiliza Environment Modules, el cual se describe en favor de administrar el tipo de compiladores,(ICC(intel) y GCC(gnu)), las versiones (CUDA 6.0,CUDA 6.5 y CUDA 7.0) y las aplicaciones y bibliotecas.
En caso de conocer las aplicaciones instaladas en Abacus-I puede ejecutarse el comando:
$ module avail
La salida de esta comando, mostrara las aplicaciones disponibles dentro del cluster. Asimismo, en favor de conocer si esta presente un modulo en especifico, puede ser de utilidad el comando:
$ module list
Finalmente, para cargar una aplicación puede ejecutarse el comando:
$ module load NOMBRE DE LA APLICACION
En caso de nececitar soporte técnico, por favor visita la pagina de soporte de Abacus-I, en la cual es posible presentar la descripción del problema o duda que se presente. Es importante mencionar que, unicamente se revisarán casos de usuarios registrados en el sitio web; en caso de nececitar ayuda con el regsitro, puede consultarse la Guia de Soporte.