Clúster
Bienvenido a la página del Clúster de Cómputo de Alto Rendimiento de Ingeniería UC. En este sitio podrá encontrar toda la información pertinente a estructura, procedimientos y uso del clúster en las secciones respectivas.
Este clúster forma parte de los servicios que entrega la Subdirección de Servicios Informáticos, a todos los miembros de la Escuela de Ingeniería UC.
Servidor de Login
- Maquina con 2 procesadores de 10 núcleos cada uno
- 768 GB RAM
Nodos de Cómputo
Nodos de Cómputo | ||||||||
---|---|---|---|---|---|---|---|---|
Nodo | Procesadores | Núcleos x Procesador | Total Núcleos | Hilos x Núcleo | Total Hilos | RAM GB | GPUs | Cola de Trabajo |
n1 | 2 | 64 | 128 | 2 | 256 | 512 | 0 | 512X1024 |
n2 | 2 | 48 | 96 | 2 | 192 | 256 | 0 | 512X1024 |
n3 | 2 | 64 | 128 | 2 | 256 | 256 | 0 | 512X1024 |
n4 | 2 | 8 | 16 | 2 | 32 | 96 | 0 | full |
n7 | 2 | 24 | 48 | 2 | 96 | 1536 | 7 | gpus |
n8 | 4 | 8 | 32 | 2 | 64 | 32 | 0 | full |
n9 | 2 | 16 | 32 | 2 | 64 | 2048 | 4 | gpus |
n11 | 2 | 64 | 128 | 2 | 256 | 512 | 0 | 512X1024 |
n14 | 2 | 16 | 32 | 2 | 64 | 128 | 0 | full |
Totales | 20 | 640 | 1280 | 5376 | 11 |
Servidor de Almacenamiento
- Comunicación Ethernet a 10Gbps
- 14 Discos duros, 1 TB por disco
GPUS
-
Nueve GPUs NVIDIA Quadro RTX 8000
-
Una GPUs NVIDIA Quadro RTX 6000
-
Una GPUs NVIDIA RTX 6000 Ada Generation
- Maquina con 2 procesadores de 10 núcleos cada uno
- 768 GB RAM
- Comunicación Ethernet a 10Gbps
- 14 Discos duros, 1 TB por disco
El objetivo del presente documento es explicar las reglas de uso de recursos del clúster de alto rendimiento (HPC High Performance Computing) de la Escuela de Ingeniería.
El clúster es un recurso tecnológico implementado con aportes de la Escuela de Ingeniería, Institutos asociados y de iniciativas impulsadas por los profesores de la Escuela que se encuentra a disposición de la comunidad de la Escuela e Institutos asociados para finalidades docentes y de investigación principalmente. Otros tipos de uso en tareas de gestión o actividades de extensión pueden ser consideradas previa revisión del caso.
Principios Generales de la Política de Uso del Clúster
La política de uso del clúster busca satisfacer los siguientes principios generales:
- Equidad: Significa que todos los usuarios puedan tener un acceso equitativo a los recursos del clúster. Esto no implica que todos los usuarios estén restringidos a utilizar la misma cantidad de recursos, sino más bien velar por que no ocurran situaciones en que el recurso sea acaparado por pocos usuarios. Para esto la administración del recurso buscará siempre la mejor coordinación posible entre todos los usuarios.
- Flexibilidad: Teniendo la menor cantidad de restricciones de uso posible. Si se colocan restricciones es para velar por el principio de equidad mencionado. Se entiende también por flexibilidad el que los usuarios puedan ejecutar procesos de distinta naturaleza, a veces intensivos en cantidad de CPUs, de tiempo, o ambos, con diversos tipos de software, etc., de acuerdo a las necesidades particulares de una comunidad de usuarios diversa.
- Efectividad: Buscando que el recurso sea utilizado al máximo posible, evitando recursos reservados sin uso a la vez que se procura reducir tiempos de espera en colas.
Quienes pueden usar el clúster
Las actividades docentes y/o de investigación siempre tienen un profesor a cargo, dado esto la solicitud de creación de una cuenta en el clúster debe ser realizada o validada por un profesor de jornada completa. Las cuentas que solicite un profesor quedarán asociadas a un grupo que llevará el nombre de usuario del profesor.
Solicitud de cuenta
Puede tener cuenta en el clúster cualquier integrante de la comunidad de la Escuela de Ingeniería e Institutos asociados que necesite este recurso para fines docentes y/o de investigación. Otros tipos de uso en tareas de gestión o actividades de extensión pueden ser consideradas previa revisión del caso. La solicitud la debe realizar el profesor a cargo del usuario a través de un correo a la mesa de ayuda (7500@ing.puc.cl), indicando los siguientes datos del usuario:
- Nombre y apellido.
- Correo institucional, UC o de otra institución.
- Software que requiere ejecutar el usuario.
Almacenamiento en disco
El uso de almacenamiento no tiene límites en duro pero se solicita no pasar los 100GB, el usuario una vez concluido sus procesos debe eliminar los archivos temporales y sacar de su cuenta los resultados. El control es más bien preventivo realizando revisiones automáticas diarias e informando por correo a los usuarios cuando su uso es excesivo, y mediante alertas preventivas se evita que los discos lleguen a niveles riesgosos de uso.
Respaldos de información
La plataforma del cluster cuenta con discos de respaldo para mantener la operación en caso de que alguna pieza de hardware falle, sin embargo, la responsabilidad de tener un respaldo de la información es de cada usuario. Debe estar consciente de que los componentes del equipo pueden fallar y que la información podría perderse si no ha realizado una copia de ellos en otro lugar, no pudiendo exigir sus datos al personal encargado.
Licencias de software
La incorporación de licencias de software que pueda ejecutarse en el cluster será de responsabilidad del investigador o profesional que lo requiera, teniendo que asumir el costo de ella y la gestión para obtenerla. Está estrictamente prohibida la instalación y ejecución de software que no esté licenciado.
Datos utilizados para investigación
Es posible que se ejecuten operaciones dentro de la plataforma que requieran datos sensibles, como por ejemplo:
- Fichas medicas
- Datos de contacto
- Utilización de información personal (como RUT, etc)
Es de responsabilidad de cada usuario verificar que la utilización de los datos sea legal, y además que la plataforma tenga la seguridad requerida para tratar con esos datos. Cualquier uso indebido será informado a las instituciones correspondientes.
Desarrollo de Software
Todo software que se desarrolle en el cluster de la Escuela de Ingeniería, y que esté presente en la plataforma, es de autoría de los desarrolladores o empresas correspondientes.
Soporte
Para solicitar soporte debe enviar un correo a la Mesa de Ayuda (7500@ing.puc.cl) con su inquietud. El caso será analizado debido a que existen múltiples factores que hacen que un programa no se ejecute, por ejemplo, que el programa del usuario presente errores.
La Mesa de Ayuda prestará soporte sólo cuando el problema sea de la plataforma y no de algún elemento ingresado al sistema por el usuario.
Es importante destacar que el personal de la Subdirección de Servicios Informáticos puede tener acceso a todos los archivos del sistema tal como lo indica la legislación chilena de protección de datos y recursos computacionales. Esto para poder prestar soporte o detectar actividad ilegal en el sistema. Al utilizar el sistema, usted acepta que estas atribuciones del personal encargado.
Colas de trabajo
Actualmente los usuarios no tienen limitaciones para solicitar recursos al usar las colas de trabajo, pero deben tener la precaución de no acaparar todos los recursos, de ocurrir esta situación se detendrán los procesos. Actualmente hay tres colas de trabajo:
- Cola de trabajo “full”: Esta cola de trabajo la pueden utilizar todos los usuarios y cuenta con procesadores INTEL.
- Cola de trabajo “512×1024”: Esta cola de trabajo la pueden utilizar todos los usuarios, pero tiene prioridad para el equipo de trabajo de los profesores que aportaron uno de los dos nodos, cuenta con procesadores AMD.
- Cola de trabajo “gpus”: Esta cola de trabajo la pueden utilizar todos los usuarios, pero tiene prioridad para el equipo de trabajo de los profesores que aportaron el nodo.
Prioridades en las colas de trabajo
Al momento que los trabajos quedan en estado pendiente debido a que no hay más recursos libres en el clúster, se comienza a priorizar la ejecución de estos trabajos. La política que usa el clúster es del tipo multifactor, los factores utilizados son:
- Tamaño del trabajo: Entre más recursos solicite el trabajo menor será la prioridad que se le dará.
- Edad del trabajo: Este es el tiempo que lleva un trabajo esperando para poder ejecutarse, entre mayor sea la cantidad de tiempo esperando mayor será la prioridad.
- Uso efectivo de los recursos solicitados: Si un usuario para trabajos anteriores ha solicitado más recursos de los que efectivamente usó el trabajo, la prioridad del trabajo bajará pero si uso lo que solicitó la prioridad aumentará.
Nodo de Login
No está permitido correr trabajos de gran utilización de recursos en el nodo de login (cluster.ing.uc.cl), ya que este es para lanzar trabajos y realizar pruebas rápidas. Cualquier programa será cancelado si está sobrecargando este nodo.
El objetivo del presente documento es explicar las reglas de incorporación de recursos (hardware o software) al clúster de alto rendimiento (HPC High Performance Computing) que pudieran ser aportados por académicos de la Escuela de Ingeniería e Institutos asociados a la Escuela.
Principios Generales de la Política de Incorporación de Aportes al Clúster
La política de incorporación de aportes al clúster busca satisfacer los siguientes principios generales:
- Equidad: Significa que todos los usuarios puedan tener un acceso equitativo a los recursos del clúster. Esto no implica que todos los usuarios estén restringidos a utilizar la misma cantidad de recursos, sino más bien velar por que no ocurran situaciones en que el recurso sea acaparado por pocos usuarios. Para esto la administración del recurso buscará siempre la mejor coordinación posible entre todos los usuarios.
- Flexibilidad: Teniendo la menor cantidad de restricciones de uso posible. Si se colocan restricciones es para velar por el principio de equidad mencionado. Se entiende también por flexibilidad el que los usuarios puedan ejecutar procesos de distinta naturaleza, a veces intensivos en cantidad de CPUs, de tiempo, o ambos, con diversos tipos de software, etc., de acuerdo a las necesidades particulares de una comunidad de usuarios diversa.
- Efectividad: Buscando que el recurso sea utilizado al máximo posible, evitando recursos reservados sin uso a la vez que se procura reducir tiempos de espera en colas.
- Esfuerzo colectivo: Procurando que los aportes individuales puedan beneficiar a la comunidad de usuarios y que de esta manera todos puedan aprovechar un recurso con muchas más capacidades de cómputo que las que se lograrían de manera individual aislada.
Tipos de Aportes al Clúster
Al clúster se puede aportar hardware, software o licencias.
Hardware
Los aportes que se pueden realizar en esta categoría son:
- Servidores de cómputo: Como mínimo deben contar con dos procesadores de 16 núcleos cada uno y dos hilos cada núcleo, 128 GB de memoria RAM, dos conectores de red de 10Gbps, dos discos de 240 GB en RAID1, fuentes de poder redundante y servicio de reposición de partes y piezas ante falla por un periodo de 3 años mínimo.
- Almacenamiento: Sistema de almacenamiento que soporte ISCSI.
- GPUS
Software
Se puede aportar software con sus respectivas licencias que pueda ser usado en el clúster, es decir que pueda correr en un ambiente HPC.
Licencias
Se puede aportar licencias que aumenten la capacidad de uso de algún software que ya este instalado en el cúster.
Procedimiento de Incorporación de Aportes al Clúster
- Enviar un correo al director de tecnología quien coordinará una reunión para determinar:
- Los requerimientos específicos del aporte al clúster. En esta instancia se debe revisar la factibilidad técnica de incorporar un cierto recurso al clúster en función del presupuesto que se disponga. La factibilidad técnica involucra revisar que el hardware cumpla ciertas especificaciones que permitan su integración al clúster e infraestructura tecnológica existente, considerando aspectos como la disponibilidad de espacio en el data center, capacidad eléctrica, de clima y de red.
- La finalidad y alcances de uso. Los usos pueden tener finalidades docentes, de investigación, gestión o extensión, y alcances que impactan a toda la Escuela, departamentos o iniciativas particulares. De acuerdo a los principios del clúster la prioridad la tienen los proyectos de docencia o investigación, entendiendo que clúster contribuye a las labores fundamentales de la Escuela y la comunidad de usuarios del clúster. Proyectos de gestión o extensión, y otras situaciones especiales deberán ser analizadas caso a caso obedeciendo los principios de la política de incorporación de recursos al clúster.
- Completar el formulario de declaración del aportante con datos que incluyen: nombre del profesor, datos del proyecto, datos de los usuarios, aplicaciones/lenguajes, finalidad de uso (docente, investigación, extensión).
- Apoyo en la gestión de la compra.
- Integración al clúster.
- Envío de carta de reconocimiento del aporte.
Retiro de Aportes
Cumpliendo con el principio de esfuerzo colectivo, los aportes de los investigadores al clúster no podrán retirarse ya que comprometen la plataforma entera y tienen un efecto negativo sobre toda la comunidad de usuarios del clúster.
Modificaciones a la Políticas de Incorporación al Clúster
Revisiones y modificaciones a esta política serán realizadas por el Grupo de Trabajo del HPC, las cuales deberán ser aprobadas por mayoría cualificada de los 2/3, y luego ratificadas por la Dirección de la Escuela de Ingeniería. Los miembros del Grupo de Trabajo del HPC se encuentran publicados en la página web del HPC https://cluster.ing.puc.cl . Cambios aprobados a las políticas serán publicados en la misma página web y comunicados oportunamente a los usuarios.
Explicación de la forma de trabajo
Cada usuario ingresará a mazinger.ing.puc.cl vía SSH, el cual procesará todas las peticiones que le sean enviadas. Este servidor es para que los usuarios prueben su código y luego envíen sus trabajos a los nodos de computo, no es para ejecutar trabajos.
Al enviar un trabajo, este es recibido por un servidor de cabecera, el cual se encarga de distribuir el trabajo en los nodos para que sea resuelto. Posteriormente se podrá ver los resultados dependiendo del tipo de salida que haya definido el usuario.
El clúster usa el gestor de tareas SLURM, por lo que recomendamos leer la documentación básica para el uso de este sistema.
Conexión vía SSH
SSH es un protocolo para una conexión remota segura. En Linux, que es el sistema operativo que usa el clúster, se usa este protocolo para conectarse al servidor de “Login”. La interfaz que se usa es “línea de comando” y hay diferentes clientes SSH según el sistema operativo, en Linux y MAC el cliente es nativo, en el caso de Windows también puede encontrar el comando “ssh” en la terminal del sistema, pero sí requiere algo gráfico puede usar Putty.
Colas de Trabajo
Los trabajos deben ser enviados a una cierta cola de trabajo, esto hace que se pueda ordenar mejor la ejecución de los trabajos de los usuarios. Las colas de trabajo habilitadas para el uso son:
Cola de trabajo “full”
Esta cola cuenta con 6 nodos de cómputo y esta disponible para todos los usuarios.
- Procesadores INTEL
- 132 núcleos de dos hilos cada uno.
- 412 GB RAM
Cola de trabajo “512×1024”
Esta cola cuenta con 3 nodos de cómputo y esta disponible para todos los usuarios.
- Procesadores AMD
- 352 núcleos de dos hilos cada uno.
- 1280 GB RAM.
Cola de trabajo “gpus”
Esta cola cuenta con 1 nodo de cómputo y esta disponible para todos los usuarios pero con prioridad para el equipo de trabajo de los profesores que aportaron este nodo.
- Procesadores INTEL
- 48 núcleos de dos hilos cada uno.
- 1536 GB RAM.
- 7 GPUS (Nvidia Quadro RTX 8000)
Ver recursos disponibles
Antes de enviar un trabajo al clúster se deben verificar los recursos disponibles para configurar correctamente el script, para eso se debe ejecutar:
squeue
Enviar un trabajo
El comando para enviar un trabajo es sbatch, el cual permite colocar un trabajo en una cola. Si bien a sbatch se le pueden pasar todos los parámetros directamente, se recomienda crear un script que permita definir los parámetros para el trabajo, hay ejemplos mas abajo. Posteriormente se podrá enviar el trabajo como:
sbatch submit.sh
Solicitud de CPU
Este es un ejemplo del archivo que se le puede pasar a sbatch. Dentro de él se indican las CPUs que requiere su trabajo. Debe comprender que no por solicitar mas CPUs su trabajo se ejecutara mas rápido, para que un programa use varias CPUs al mismo tiempo debe codificar su programa para que use todos los recursos solicitados, por ejemplo en Python puede usar Multiprocessing, o para C, C++ o Fortran puede usar OpenMP. Este es un ejemplo para un programa que no esta creado para usar multiproceso.
#!/bin/bash # Nombre del trabajo #SBATCH --job-name=Prueba1 # Archivo de salida #SBATCH --output=salida.txt # Cola de trabajo #SBATCH --partition=full # Reporte por correo #SBATCH --mail-type=ALL #SBATCH --mail-user=usuario@ing.puc.cl # Solicitud de cpus #SBATCH --ntasks=1 #SBATCH --cpus-per-task=1 python calculo.py
Si su programa puede usar mas de una CPU en el parámetro “–cpus-per-task” debe indicar la cantidad de CPUs que requiere. Si su programa puede ejecutarse en mas de un nodo de computo en el parámetro “–ntasks” debe indicar la cantidad de instancias que requiere.
Solicitud de GPU
Este es un ejemplo del archivo que se le puede pasar a sbatch para usar una GPU. Al igual que para usar múltiples CPUs, para usar GPUs su programa debe estar codificado para usar este recurso. La cola de trabajo “gpus” cuenta con un nodo el cual tiene 5 GPUs.
#!/bin/bash # Nombre del trabajo #SBATCH --job-name=Prueba1 # Archivo de salida #SBATCH --output=salida.txt # Cola de trabajo #SBATCH --partition=gpus # Solicitud de gpus #SBATCH --gres=gpu:1 # Reporte por correo #SBATCH --mail-type=ALL #SBATCH --mail-user=usuario@ing.puc.cl python calculo.py
Solicitud de Nodos
Si su programa esta creado para usar todas las CPUs que dispone un nodo de computo, este ejemplo solicita dos nodos.
#!/bin/bash # Nombre del trabajo #SBATCH –job-name=Prueba1 # Archivo de salida #SBATCH –output=salida.txt # Cola de trabajo) #SBATCH –partition=full # Reporte por correo #SBATCH –mail-type=ALL #SBATCH –mail-user=usuario@ing.puc.cl # Solicitud de cpus #SBATCH –nodes=2 python calculo.py
Monitoreo de trabajos
Para monitorear se puede utilizar el comando squeue o sinfo. El comando squeue entrega información de los trabajos que hay en ese momento en el clúster. Uno de los campos importantes es “ST”, en ese campo se indica el estado del trabajo, si esta en “R” quiere decir que se esta ejecutando, pero si hay trabajos en estado “PD”, que es pendiente, quiere decir que el clúster tiene utilizados todos sus recursos y que los trabajos que se envíen quedaran esperando. Para estos trabajos en estado pendiente o en espera se comienza a aplicar la priorización multifactor que se explica en las “Políticas de Uso“. La salida estándar del comando squeue es la siguiente:
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON) 30070 full Trabajo1 usuario1 R 1:07:37 1 n10 30062 full Trabajo2 usuario1 R 3:00:36 1 n10 30061 full Trabajo3 usuario1 R 3:00:39 1 n8 30037 full Trabajo4 usuario1 R 7:41:46 1 n6 30029 full Trabajo5 usuario1 R 7:42:06 1 n12 30016 full T24 usuario4 R 14:59:06 1 n4 29941 full Trabajo8 usuario2 R 19:43:42 1 n2 29746 full T12.1 usuario3 R 1-23:27:50 1 n8 29657 full T12.1 usuario3 R 3-00:05:19 1 n9 29411 full J123-1 usuario8 R 6-02:49:29 1 n2 29193 full J123-2 usuario8 R 8-00:13:19 1 n15
También se puede formatear la salida para que entregue la información de la forma que se requiera:
squeue -o "%.10u %.10i %.10P %.20j %.11M %.10T %.4C %N" -S -t
USER JOBID PARTITION NAME TIME STATE CPUS NODELIST usuario1 30063 full Trabajo1 1:43:09 RUNNING 32 n9 usuario5 30062 full Trabajo5 3:10:53 RUNNING 16 n10 usuario5 30018 full Trabajo5.1 7:52:53 RUNNING 24 n15 usuario3 30017 full Trabajo3 13:53:33 RUNNING 8 n8 usuario8 29403 full Trabajo8 6-03:00:23 RUNNING 16 n15 usuario8 29193 full Trabajo8.1 8-00:23:36 RUNNING 16 n15
El comando sinfo entrega información de los nodos de computo, su salida estándar es la siguiente:
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST full* up infinite 8 mix n[2-4,6,8-10,12] full* up infinite 1 alloc n15 512x1024 up infinite 2 idle n[1,11] gpus up infinite 1 idle n7
También se puede formatear la salida para que entregue la información de la forma que se requiera:
sinfo -N -o "%.10N %.10O %.10e %.20C"
NODELIST CPU_LOAD FREE_MEM CPUS(A/I/O/T) n1 0.01 463832 0/256/0/256 n2 20.28 77392 14/18/0/32 n3 24.94 27538 6/26/0/32 n4 5.26 36229 20/12/0/32 n6 2.93 17183 4/28/0/32 n7 0.09 194103 0/96/0/96 n8 139.47 10430 57/7/0/64 n9 82.33 16673 38/2/0/40 n10 23.81 7659 22/10/0/32 n11 0.01 492040 0/256/0/256 n12 20.69 11915 24/8/0/32 n15 49.76 63109 32/0/0/32
Eliminar trabajos
Si por algún motivo desea eliminar un trabajo, lo puede realizar con el comando scancel. Por ejemplo para eliminar el trabajo que aparece en el ejemplo anterior se debe ejecutar:
scancel 23
Salida de trabajo
Las salidas de los trabajos se almacenaran en el archivo que se indique con el parámetro “–output”, además en los ejemplos se indican los parámetros para que llegue información por correo.
Python
Para el lenguaje de programación Python la política es que cada usuario instale Anconda en su cuenta y administre su entrono con los paquetes que requiera.
Instalar Anaconda
Anaconda se instala por defecto en la raíz de su cuenta en el directorio “anaconda3”, todos los paquetes que requiera se instalaran dentro de ese directorio por lo que no requiere de ningún permiso especial.
Para instalar anaconda primero debe ingresar a su cuenta en el clúster y ejecutar lo siguiente en la línea de comandos de linux:
$ wget https://repo.anaconda.com/archive/Anaconda3-2021.05-Linux-x86_64.sh $ chmod 755 Anaconda3-2021.05-Linux-x86_64.sh $ ./Anaconda3-2021.05-Linux-x86_64.sh
Al final de la instalación consulta si quiere activar anaconda en cuanto ingrese a su cuenta, se recomienda responder “yes”.
Do you wish the installer to initialize Anaconda3 by running conda init? [yes|no] [no] >>> yes
Esta activación automática después se puede deshabilitar con el comando.
conda config --set auto_activate_base false
Si respondió “yes” a la consulta, para que tome efecto debe salir de su cuenta y volver a ingresar. Para verificar puede ejecutar el comando “which python”, lo que indicara que el comando esta dentro del directorio “anaconda3”.
(base) [usuario1@cluster ~]$ which python ~/anaconda3/bin/python
Versiones de Anaconda
Las versiones de Anaconda corresponden a una versión de Python específica, para encontrar todos archivos de instalación debe ingresar al archivo de instaladores.
- Anaconda3-2019.10 -> Python 3.7.4
- Anaconda3-2020.02 -> Python 3.7.6
- Anaconda3-2020.07 -> Python 3.8.3
- Anaconda3-2021.05 -> Python 3.8.5
Instalar paquetes en su entorno Anaconda
Anaconda cuenta con el comando “conda” para gestionar los paquetes. Anaconda ya viene con varios paquetes instalados. Algunas tareas comunes son: Listar los paquetes instalados.
conda list
Buscar paquetes disponibles para instalar.
conda search nombredelpaquete
Instalar un paquete.
conda install nombredelpaquete
MATLAB
El clúster cuenta con la versión de Matlab R2021a Update 4 con todos sus tolboxes y con licencias ilimitadas. La ejecución de programas Matlab en el clúster no tiene despliegue gráfico, usted debe subir a su cuenta su archivo con el código de Matlab y luego enviarlo al clúster.
Cargar MATLAB
Para usar MATLAB en su cuenta del clúster debe ejecutar el siguiente comando:
$ module load MATLAB/R2021a
Ver la versión y Toolboxes disponibles
Para ver la versión de Matlab y los tolboxes disponibles debe ejecutar los siguientes comandos dentro de su cuenta:
$ module load MATLAB/R2021a $ matlab -nodisplay -nojvm -batch "ver"
Enviar un trabajo MATLAB al Clúster
Una vez que tenga el archivo con el código de Matlab en su cuenta puede enviar el trabajo al clúster. En los dos ejemplos a continuación la salida del programa quedara en el archivo “salida.txt”.
Si su código no ejecutara tareas en paralelo (Parallel Computing Toolbox) solo debe solicitar dos cpus, y el archivo de configuración debería ser así:
#!/bin/bash # Nombre del trabajo #SBATCH --job-name=Matlab-Test # Archivo de salida #SBATCH --output=salida.txt # Partición (Cola de trabajo) #SBATCH --partition=512x1024 # Solicitud de cpus #SBATCH --ntasks=1 #SBATCH --cpus-per-task=2 #SBATCH --mail-user=user1@ing.puc.cl #SBATCH --mail-type=ALL module load MATLAB/R2021a srun matlab -nodisplay -singleCompThread < ejemplo.m
Si su código ejecutara tareas en paralelo usando el “Parallel Computing Toolbox”, debe solicitar la cantidad de cpus que especifique su código, por ejemplo si a la función “parpool” le indica que levante 12 workers, la configuración debiese ser así:
#!/bin/bash # Nombre del trabajo #SBATCH --job-name=Matlab-Test # Archivo de salida #SBATCH --output=salida.txt # Partición (Cola de trabajo) #SBATCH --partition=512x1024 # Solicitud de cpus #SBATCH --ntasks=1 #SBATCH --cpus-per-task=12 #SBATCH --mail-user=user1@ing.puc.cl #SBATCH --mail-type=ALL module load MATLAB/R2021a srun matlab -nodisplay < ejemplo.m
Capacitación
El convenio campus-wide license (CWL) con Mathworks permite acceder a los cursos de Matlab que tiene Mathworks en linea. Para esto primero debe crear su cuenta en Mathworks siguiendo las instrucciones que hay en el sitio de la Dirección de Informática de la UC, o puede seguir las instrucciones de este procedimiento. Luego debe ingresar al sitio de la Academia Matlab.
GUROBI
El clúster cuenta con licencias para Gurobi 10.0.1, acá se indica como instalar el paquete Gurobi de Python.
Instalar el paquete GUROBI de Python
Primero se debe instalar la ultima versión de anaconda, y luego ejecutar lo siguiente:
$ conda install gurobi
Si no tiene instalada la última versión de Anaconda y el comando para instalar le indica que no encuentra el paquete de Gurobi, entonces debe ejecutar lo siguiente:
$ conda config --add channels http://conda.anaconda.org/gurobi $ conda install gurobi
Archivo de Licencia
El clúster tiene configurada la variable de ambiente GRB_LICENSE_FILE, la que indica donde esta el archivo de licencia y con lo cual el código debiese ejecutarse, si no es así ejecute lo siguiente:
$ cd $ cp $GRB_LICENSE_FILE .
TensorFlow
El clúster cuenta con varias versiones de CUDA y el driver de NVIDA 510.39.01. Se debe instalar “tensorflow-gpu” para usar las GPUs, si solo se instala “tensorflow” el proceso solo se ejecutara en CPUs. Se listaran las configuraciones que se requieren para usar cada una de estas versiones.
CUDA 10.1
La versión predeterminada en el servidor de GPUs es CUDA 10.1. Primero se debe instalar Miniconda, esta versión trae Python 3.8.
$ cd $ wget https://repo.anaconda.com/miniconda/Miniconda3-py38_4.12.0-Linux-x86_64.sh $ chmod 755 Miniconda3-py38_4.12.0-Linux-x86_64.sh $ ./Miniconda3-py38_4.12.0-Linux-x86_64.sh
Una vez instalado Miniconda se debe instalar tensorflow-gpu versión 2.2.0.
$ conda install tensorflow-gpu=2.2.0
CUDA 11.0
Primero se debe cargar el módulo.
$ module load cuda/11.0
Luego se debe instalar Miniconda, esta versión trae Python 3.8.
$ cd $ wget https://repo.anaconda.com/miniconda/Miniconda3-py38_4.12.0-Linux-x86_64.sh $ chmod 755 Miniconda3-py38_4.12.0-Linux-x86_64.sh $ ./Miniconda3-py38_4.12.0-Linux-x86_64.sh
Una vez instalado Miniconda se debe instalar tensorflow-gpu versión 2.4.1.
$ conda install tensorflow-gpu=2.4.1
CUDA 11.2
Primero se debe cargar el módulo.
$ module load cuda/11.2
Luego se debe instalar Miniconda, esta versión trae Python 3.9.
$ cd $ wget https://repo.anaconda.com/miniconda/Miniconda3-py39_4.12.0-Linux-x86_64.sh $ chmod 755 Miniconda3-py39_4.12.0-Linux-x86_64.sh $ ./Miniconda3-py39_4.12.0-Linux-x86_64.sh
Una vez instalado Miniconda se debe activar el repositorio “conda-forge” e instalar “tensorflow-gpu” versión 2.6.0.
$ conda config --add channels conda-forge $ conda install tensorflow-gpu=2.6.0
Fenics
FEniCS 2019 es una versión heredada, su última versión 2019.1.0 se libero en abril del 2019.
$ cd $ wget https://repo.anaconda.com/miniconda/Miniconda3-py39_4.12.0-Linux-x86_64.sh $ chmod 755 Miniconda3-py39_4.12.0-Linux-x86_64.sh $ ./Miniconda3-py39_4.12.0-Linux-x86_64.sh $ conda install mamba $ mamba install fenics