X

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
NodoProcesadoresNúcleos x ProcesadorTotal NúcleosRAM GBGPUsCola de Trabajo
n12 AMD EPYC 7702 3100 MHz641285120512X1024
n22 AMD EPYC 7643 3900 MHz48962560512X1024
n32 AMD EPYC 9554 3750 MHz641282560512X1024
n42 AMD EPYC 9354 3.25 GHz32642560512X1024
n72 Intel Xeon Gold 5220R 2.20GHz244815367gpus
n84 AMD Opteron 6376 2300 MHz832320full
n92 Intel Xeon Silver 4216 2.10GHz163220484gpus
n112 AMD EPYC 7662 3900 MHz641285120512X1024
n142 Intel Xeon Gold 6226R 2.90GHz16321280full
Totales20336624553611 

Servidor de Almacenamiento

  • Comunicación Ethernet a 10Gbps
  • 14 Discos duros, 1 TB por disco

GPUS

GPUS
MarcaModeloCantidadCUDA CoresTENSOR CoresRT CoresGPU MEMORYEspecificaciones
NvidiaQuadro RTX 8000946085767248 GBPDF
NvidiaQuadro RTX 6000146085767224 GBPDF
NvidiaRTX 6000 ADA Generation11817656814248 GBPDF

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 integrante de la comunidad de la Escuela de Ingeniería o Institutos asociados. 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.
  • Para que usará al clúster, por ejemplo, "Tesis de Magíster"

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

  1. Enviar un correo al director de tecnología quien coordinará una reunión para determinar:
    1. 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.
    2. 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.
  2. 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).
  3. Apoyo en la gestión de la compra.
  4. Integración al clúster.
  5. 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 https://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
Desplazamiento al inicio