<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://wiki.nlhpc.cl/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jmorales</id>
	<title>NLHPC - Contribuciones del usuario [es]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.nlhpc.cl/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jmorales"/>
	<link rel="alternate" type="text/html" href="https://wiki.nlhpc.cl/Especial:Contribuciones/Jmorales"/>
	<updated>2026-05-29T16:36:41Z</updated>
	<subtitle>Contribuciones del usuario</subtitle>
	<generator>MediaWiki 1.39.3</generator>
	<entry>
		<id>https://wiki.nlhpc.cl/index.php?title=SISTEMA_GESTOR_DE_RECURSOS&amp;diff=779</id>
		<title>SISTEMA GESTOR DE RECURSOS</title>
		<link rel="alternate" type="text/html" href="https://wiki.nlhpc.cl/index.php?title=SISTEMA_GESTOR_DE_RECURSOS&amp;diff=779"/>
		<updated>2024-05-03T13:58:02Z</updated>

		<summary type="html">&lt;p&gt;Jmorales: /* Particiones SLURM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== SLURM Workload Manager ==&lt;br /&gt;
Es un sistema de programación de trabajos y gestión de clústeres de código abierto, tolerante a fallas y altamente escalable para clústeres Linux grandes y pequeños.&lt;br /&gt;
&lt;br /&gt;
Como administrador de carga de trabajo de clúster, Slurm tiene tres funciones clave. Primero, asigna acceso exclusivo y / o no exclusivo a los recursos (nodos de cómputo) a los usuarios durante un período de tiempo para que puedan realizar el trabajo. En segundo lugar, proporciona un marco para iniciar, ejecutar y monitorear el trabajo (normalmente un trabajo paralelo) en el conjunto de nodos asignados. Finalmente, arbitra la contención de recursos mediante la gestión de una cola de trabajo pendiente.&lt;br /&gt;
&lt;br /&gt;
SLURM es el gestor de colas instalado en muchos de los súper computadores del [https://www.top500.org/ TOP500], y también en el clúster del NLHPC. Si Ud. quiere lanzar tareas dentro de Leftaru, debe hacerlo a través de Slurm.&lt;br /&gt;
&lt;br /&gt;
== Conceptos clave ==&lt;br /&gt;
SLURM gestiona trabajos de usuario que tienen las siguientes características clave:&lt;br /&gt;
&lt;br /&gt;
* Conjunto de recursos solicitados:&lt;br /&gt;
** Número de recursos informáticos: nodos (incluidas todas sus CPUs y núcleos) o CPUs (incluidos todos sus núcleos) o solo núcleos&lt;br /&gt;
** Cantidad de memoria: por nodo o por CPU (lógica)&lt;br /&gt;
** Tiempo necesario para que las tareas del usuario completen su trabajo&lt;br /&gt;
* Una partición de nodo solicitada (cola de trabajos)&lt;br /&gt;
* Un nivel de calidad de servicio (QoS) solicitado que otorga a los usuarios accesos específicos&lt;br /&gt;
* Una cuenta solicitada con recursos limitados&lt;br /&gt;
&lt;br /&gt;
De manera predeterminada, los usuarios envían trabajos a una partición particular (marcada como tal para todos los usuarios) y bajo una cuenta particular (preestablecida por usuario).&lt;br /&gt;
&lt;br /&gt;
== Particiones SLURM ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 60%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nombre Particion&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nodos&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;CPUs&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;RAM&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Descripción&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;main&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;27&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;256&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;768GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;general&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;48&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;44&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;187GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;largemem&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;9&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;44&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;765GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;v100&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;44&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;187GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;4 GPUs Nvidia Tesla V100.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;mi100&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;128&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;502GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2 GPUs AMD Instinct MI100.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;debug&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;48&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;768GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Destinados a pruebas de máximo 30 minutos.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Introducción a los comandos slurm ==&lt;br /&gt;
&amp;lt;table class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 60%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Comando SLURM&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Descripción&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;srun&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ejecutar un comando en nodos de cómputo asignados.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;sbatch&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;presentar un script de trabajo&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;squeue&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Mostrar estado de los trabajos en la cola.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;scancel&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;eliminar un trabajo.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;sinfo&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Muestra el estado de los nodos de cómputo.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
Estos son los comandos básicos utilizados para realizar la mayoría de las operaciones básicas con SLURM.&lt;br /&gt;
&lt;br /&gt;
=== Estado de nodos ===&lt;br /&gt;
Para consultar el uso de nuestra infraestructura y qué particiones están más libres, le recomendamos el comando sinfo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# sinfo&lt;br /&gt;
PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST&lt;br /&gt;
all        up    infinite    16     mix   cn[001,005-006,010,034-035,037,041,045,050,057,108,121],sn[012,016,037]&lt;br /&gt;
all        up    infinite    95     alloc cn[011-033,038-044,046-049,071-120],cnf[001-004],sn[001-011,038-041,043-044]&lt;br /&gt;
all        up    infinite    33     idle  fn[001-009],gn[001-002],sn[018-035,045-048]&lt;br /&gt;
main*      up    infinite    20     alloc mn[001-011,014-022]&lt;br /&gt;
main*      up    infinite    7      idle [012-013,023-027]&lt;br /&gt;
debug      up    infinite    4      idle  leftraru[1-2]&lt;br /&gt;
general    up    infinite    4      mix   sn[012,016,037,042]&lt;br /&gt;
general    up    infinite    22     alloc sn[001-011,013-015,017,036,038-041,043-044]&lt;br /&gt;
general    up    infinite    22     idle  sn[018-035,045-048]&lt;br /&gt;
largemem   up    infinite    9      idle  fn[001-009]&lt;br /&gt;
v100       up    infinite    2      idle  gn[001-002]&lt;br /&gt;
mi100      up    infinite    1      idle  gna001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fijándose en el texto resaltado de la salida del comando sinfo, se puede comprobar que en la partición main hay 20 nodos que están completamente ocupados (estado alloc), 7 nodos que están libres (idle); por otro lado, en la partición general hay 22 nodos completamente ocupados, 4 parcialmente ocupados y 22 libres. Dado este escenario, está claro que debería de lanzar sus ejecuciones en los nodos de la partición general, por las razones anteriormente expuestas.&lt;br /&gt;
&lt;br /&gt;
Para lanzar en la partición general, debe tener en cuenta que tiene que indicar en su script que se use dicha partición en vez de, probablemente, main. Por supuesto, en esta partición cambian las características técnicas, se pasan a tener 44 cores por nodo (en vez de 256 en main) y una capacidad RAM de 187GB (en vez de 768GB en main). Puede ver más información de las particiones en este link(agregar link), donde podrá revisar que con la inclusión de Guacolda hemos añadido nodos con hasta 765GB de memoria RAM y nodos con GPUs Nvidia Tesla V100 y AMD Instinct MI100 .&lt;br /&gt;
&lt;br /&gt;
Para ver los nodos disponibles y poder determinar en que partición lanzar los trabajos se recomienda utilizar el siguiente comando.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;[prueba@leftraru1 ~]$ sinfo -o &amp;quot;%10P %6D %10t %10m %c&amp;quot; -t idle| egrep &amp;quot;PARTITION|main|general|largemem|v100&amp;quot;&lt;br /&gt;
PARTITION  NODES  STATE      MEMORY     CPUS&lt;br /&gt;
main*       27    idle       768000      256&lt;br /&gt;
general     2     idle       187000      44&lt;br /&gt;
largemem    7     idle       765000      44&lt;br /&gt;
v100        1     idle       187000      44 &lt;br /&gt;
mi100       1     idle       515047      128 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
El comando anterior muestra que main tiene 27 nodos libres, en este caso es recomendado lanzar en en main para evitar que el trabajo quede en cola por falta de recursos en otros nodos.&lt;br /&gt;
&lt;br /&gt;
Otro Ejemplo, se muestra sólo una partición específica&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;[prueba@leftraru1 ~]$ sinfo -p main&lt;br /&gt;
PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST&lt;br /&gt;
main*        up   infinite     15    mix mn[001-008,014-020]&lt;br /&gt;
main*        up   infinite     12   idle mn[009-013,021-027]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Comprobación del estado de tareas ===&lt;br /&gt;
squeue - Muestra el estatus de los trabajos&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;squeue                  # tus trabajos&lt;br /&gt;
squeue -u &amp;amp;lt;username&amp;amp;gt;    # trabajos por usuario &amp;amp;lt;username&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
squeue: Comprobar estados de los trabajos&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;&amp;quot; class=&amp;quot;mw-highlight mw-content-ltr&amp;quot; dir=&amp;quot;ltr&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  JOBID        PARTITION     NAME     USER    ST       TIME  	NODES 	NODELIST(REASON)&lt;br /&gt;
13951858_1     general	     test1    test1    R   1-18:35:14      2    cn[009-010]&lt;br /&gt;
13951857_2     general       test2    test1    R   1-18:36:11      2    cn[099-100]&lt;br /&gt;
13956453       gpu           test3    test3    R   1-03:42:08      1    cn039&lt;br /&gt;
13956449       largemem      test4    test4    R   1-05:42:08      1    cn044&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puede utilizar squeue para saber el estado de una o varias de sus tareas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ squeue -o &amp;quot;%.15i %.6P %.8j %.20S %.11M %.11L %.20V %.10Q %.4C %.2D %.6m&amp;quot; -S -t,-Q&lt;br /&gt;
 JOBID   PARTIT     NAME      START_TIME          TIME      TIME_LEFT     SUBMIT_TIME       PRIORITY CPUS NO MIN_ME&lt;br /&gt;
10837561 general   TEST1   2018-06-18T18:51:01    19:00:31  2-04:59:29  2018-06-18T18:51:01  119972    1  1  1000M&lt;br /&gt;
10838562 general   TEST2   2018-06-19T11:30:47    2:20:45   2-21:39:15  2018-06-19T11:30:46  119946    1  1  1000M&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
para mas opciones puede revisar con el comando [https://slurm.schedmd.com/squeue.html man squeue] las opciones restantes.&lt;br /&gt;
&lt;br /&gt;
=== Códigos de ESTADO de los trabajos ===&lt;br /&gt;
&lt;br /&gt;
Los trabajos suelen pasar por varios estados durante su ejecución. Los estados típicos son PENDIENTE, EN EJECUCIÓN, SUSPENDIDO, FINALIZANDO y TERMINADO. A continuación se explica cada estado.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;BF&#039;&#039;&#039; BOOT_FAIL&lt;br /&gt;
    Trabajo finalizado debido a un fallo de arranque, normalmente debido a un fallo de hardware (por ejemplo, no se puede arrancar el nodo o bloque y el trabajo no se puede volver a poner en cola). &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CA&#039;&#039;&#039; CANCELADO&lt;br /&gt;
    El trabajo ha sido cancelado explícitamente por el usuario o el administrador del sistema. El trabajo puede haberse iniciado o no. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CD&#039;&#039;&#039; TERMINADO&lt;br /&gt;
    El trabajo ha terminado todos los procesos en todos los nodos con un código de salida de cero. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CF&#039;&#039;&#039; CONFIGURANDO&lt;br /&gt;
    Al trabajo se le han asignado recursos, pero están esperando a que estén listos para su uso (por ejemplo, arrancando). &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CG&#039;&#039;&#039; COMPLETANDO&lt;br /&gt;
    El trabajo está en proceso de finalización. Algunos procesos en algunos nodos pueden estar aún activos. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DL&#039;&#039;&#039; FECHA LÍMITE&lt;br /&gt;
    El trabajo ha finalizado en la fecha límite. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;F&#039;&#039;&#039; FALLÓ&lt;br /&gt;
    Trabajo finalizado con un código de salida distinto de cero u otra condición de fallo. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NF&#039;&#039;&#039; NODO_FAIL&lt;br /&gt;
    Trabajo finalizado debido al fallo de uno o más nodos asignados. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;OOM&#039;&#039;&#039; OUT_OF_MEMORY&lt;br /&gt;
    El trabajo ha experimentado un error de memoria insuficiente. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PD&#039;&#039;&#039; PENDIENTE&lt;br /&gt;
    El trabajo está pendiente de asignación de recursos. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PR&#039;&#039;&#039; PREEMPTED&lt;br /&gt;
    El trabajo ha finalizado debido a una espera. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;R&#039;&#039;&#039; EN MARCHA&lt;br /&gt;
    El trabajo tiene actualmente una asignación. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RD&#039;&#039;&#039; RESV_DEL_HOLD&lt;br /&gt;
    El trabajo se está reteniendo después de que se eliminara la reserva solicitada. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RF&#039;&#039;&#039; REQUEUE_FED&lt;br /&gt;
    El trabajo está siendo solicitado por una federación. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RH&#039;&#039;&#039; REQUEUE_HOLD&lt;br /&gt;
    Se está volviendo a poner en cola un trabajo retenido. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RQ&#039;&#039;&#039; REQUEUED&lt;br /&gt;
    Se está poniendo en cola un trabajo que se está completando. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RS&#039;&#039;&#039; CAMBIO DE TAMAÑO&lt;br /&gt;
    El trabajo está a punto de cambiar de tamaño. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RV&#039;&#039;&#039; REVOCADO&lt;br /&gt;
    El trabajo se ha retirado del clúster debido a que otro clúster ha iniciado el trabajo. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SI&#039;&#039;&#039; SEÑALANDO&lt;br /&gt;
    El trabajo está siendo señalizado. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SE&#039;&#039;&#039; SPECIAL_EXIT&lt;br /&gt;
    El trabajo se ha puesto en cola en un estado especial. Este estado puede ser establecido por los usuarios, normalmente en EpilogSlurmctld, si el trabajo ha terminado con un valor de salida particular. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SO&#039;&#039;&#039; STAGE_OUT&lt;br /&gt;
    El trabajo está preparando los archivos. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ST&#039;&#039;&#039; PARADO&lt;br /&gt;
    El trabajo tiene una asignación, pero la ejecución se ha detenido con la señal SIGSTOP. Los CPUS han sido retenidos por este trabajo. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;S&#039;&#039;&#039; SUSPENDIDO&lt;br /&gt;
    El trabajo tiene una asignación, pero se ha suspendido la ejecución y se han liberado CPUs para otros trabajos. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TO&#039;&#039;&#039; TIMEOUT&lt;br /&gt;
    El trabajo ha finalizado al alcanzar su límite de tiempo.&lt;br /&gt;
&lt;br /&gt;
=== Cancelar un trabajo ===&lt;br /&gt;
Con scancel se puede cancelar un trabajo en ejecución&lt;br /&gt;
&amp;lt;pre&amp;gt;scancel &amp;amp;lt;jobID&amp;amp;gt;         # Matar proceso &amp;amp;lt;jobID&amp;amp;gt;. (puede obtener el ID del job con &amp;quot;squeue&amp;quot;)&lt;br /&gt;
scancel -u &amp;amp;lt;username&amp;amp;gt;   # Matar proceso por usuario &amp;amp;lt;username&amp;amp;gt;. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;[prueba@leftraru1 ~]$ squeue -u prueba&lt;br /&gt;
 JOBID  PARTITION    NAME     USER    ST   TIME  NODES  NODELIST(REASON)&lt;br /&gt;
 45594    main       TEST    prueba   R    0:59   3     mn[001-003]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;[prueba@leftraru1 ~]$ scancel 45594&lt;br /&gt;
[prueba@leftraru1 ~]$ squeue -u prueba&lt;br /&gt;
JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)&lt;br /&gt;
[prueba@leftraru1 ~]$&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ver estado de trabajos ===&lt;br /&gt;
Para revisar el detalle de las opciones de un trabajo: scontrol show job&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ scontrol show job 10837561&lt;br /&gt;
JobId=10837561 JobName=TEST1&lt;br /&gt;
   UserId=usuario(1000) GroupId=group(1000) MCS_label=N/A&lt;br /&gt;
   Priority=1100 Nice=0 Account=account QOS=120&lt;br /&gt;
   JobState=RUNNING Reason=None Dependency=(null)&lt;br /&gt;
   Requeue=0 Restarts=0 BatchFlag=1 Reboot=0 ExitCode=0:0&lt;br /&gt;
   DerivedExitCode=0:0&lt;br /&gt;
   RunTime=19:03:08 TimeLimit=3-00:00:00 TimeMin=N/A&lt;br /&gt;
   SubmitTime=2018-06-18T18:51:01 EligibleTime=2018-06-18T18:51:01&lt;br /&gt;
   StartTime=2018-06-18T18:51:01 EndTime=2018-06-21T18:51:01 Deadline=N/A&lt;br /&gt;
   PreemptTime=None SuspendTime=None SecsPreSuspend=0&lt;br /&gt;
   Partition=main AllocNode:Sid=leftraru2:5471&lt;br /&gt;
   ReqNodeList=(null) ExcNodeList=(null)&lt;br /&gt;
   NodeList=cn021&lt;br /&gt;
   BatchHost=cn021&lt;br /&gt;
   NumNodes=1 NumCPUs=1 NumTasks=1 CPUs/Task=1 ReqB:S:C:T=0:0:*:*&lt;br /&gt;
   TRES=cpu=1,mem=1000M,node=1&lt;br /&gt;
   Socks/Node=* NtasksPerN:B:S:C=1:0:*:* CoreSpec=*&lt;br /&gt;
     Nodes=cn021 CPU_IDs=1 Mem=1000 GRES_IDX=&lt;br /&gt;
   MinCPUsNode=1 MinMemoryCPU=1000M MinTmpDiskNode=0&lt;br /&gt;
   Features=(null) DelayBoot=00:00:00&lt;br /&gt;
   Gres=(null) Reservation=(null)&lt;br /&gt;
   OverSubscribe=OK Contiguous=0 Licenses=matlab Network=(null)&lt;br /&gt;
   Command=/home/usuario/script.sh&lt;br /&gt;
   WorkDir=/home/usuario/&lt;br /&gt;
   StdErr=/home/usuario/10837561_%x.err&lt;br /&gt;
   StdIn=/dev/null&lt;br /&gt;
   StdOut=/home/usuario/10837561_%x.out&lt;br /&gt;
   Power=&lt;br /&gt;
   BatchScript=&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para ver el script asociado a un trabajo: scontrol write batch_script &amp;lt;job_id&amp;gt; -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ scontrol write batch_script 10837561 -&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -J nombre_del_trabajo&lt;br /&gt;
#SBATCH -p main&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
#SBATCH --ntasks-per-node=1&lt;br /&gt;
#SBATCH --mail-user=usaurio@correo.cl&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH -o nombre_del_trabajo%j_%x.out&lt;br /&gt;
#SBATCH -e nombre_del_trabajo%j_%x.err&lt;br /&gt;
#SBATCH --license=matlab &lt;br /&gt;
 &lt;br /&gt;
ml MATLAB/2017a&lt;br /&gt;
&lt;br /&gt;
matlab -nodisplay -nosplash -nodesktop &amp;lt; programa.m&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ejecutando trabajos ==&lt;br /&gt;
Actualmente contamos con 2 metodos de enviar trabajos bajo SLURM: &#039;&#039;&#039;sbatch&#039;&#039;&#039; and &#039;&#039;&#039;srun&#039;&#039;&#039;. A veces puede ser ventajoso ejecutar un solo comando en el clúster como prueba o realizar rápidamente una operación con recursos adicionales. &#039;srun&#039; permite a los usuarios hacer esto, y comparte las mismas variables que &#039;sbatch&#039; . STDOUT y STDERR para un trabajo &#039;srun&#039; serán redirigidos a la pantalla del usuario. Ctrl-C cancelará un trabajo srun. &#039;&#039;&#039;sbatch&#039;&#039;&#039; enviará un script de trabajo para que lo ejecute el clúster. Los scripts de trabajo bajo SLURM son simplemente scripts de shell (* .sh) con un conjunto de solicitudes de recursos en la parte superior del script.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Uso básico de srun:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
srun &amp;lt;algúnComando&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de salida (ejecutando el comando &amp;quot;hostname&amp;quot; para saber en que nodo se está ejecutando):&lt;br /&gt;
&amp;lt;pre&amp;gt; $ srun hostname&lt;br /&gt;
  cn003&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para enviar un script de trabajo a SLURM:&lt;br /&gt;
&amp;lt;pre&amp;gt;sbatch nombreScript.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example output:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sbatch test-job.sh&lt;br /&gt;
Submitted batch job 1169&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Variables Slurm ===&lt;br /&gt;
Las variables en esta sección son obligatorias, y SLURM las determina para determinar dónde y cuándo se ejecutarán sus trabajos. Si no asigna un valor para estos, el planificador asignará a sus trabajos el valor predeterminado. Si no solicita específicamente recursos para un trabajo, se le asignará un conjunto de recursos predeterminados. Para obtener una lista de todas las variables disponibles, consulte la documentación de SLURM en http://slurm.schedmd.com/sbatch.html. Las variables de este artículo estaban cubiertas porque eran las más relevantes para los casos de uso típicos.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Comando SLURM&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Descripción&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;--mem-per-cpu=&amp;amp;lt;megabytes&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Memoria requerida para el trabajo por CPU (en MegaBytes). El valor predeterminado es 1024 MB.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-p &amp;amp;lt;partition&amp;amp;gt;, --partition=&amp;amp;lt;partition&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Enviar un trabajo a una partición específica.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-n, --ntasks=&amp;amp;lt;cantidad de tareas&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Número de tareas que serán asignadas para el trabajo.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-c &amp;amp;lt;cpus&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Esta es la cantidad de CPU que necesita su trabajo. Tenga en cuenta que SLURM es relativamente generoso con las CPU, y el valor especificado aquí es el número &amp;quot;mínimo&amp;quot; de CPU que se asignará a su trabajo. Si hay CPU adicionales disponibles en un nodo más allá de lo solicitado, su trabajo recibirá esas CPU hasta que otros trabajos las necesiten. El valor predeterminado es 1 CPU. Intentar usar más CPU de las que se le asignaron dará como resultado que sus procesos adicionales se turnen en la misma CPU (ralentizando su trabajo).&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-J &amp;amp;lt;name&amp;amp;gt;, --jobname=&amp;amp;lt;name&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Especifica un nombre a tu trabajo.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;--mail-type=BEGIN,END,FAIL,ALL&amp;lt;b&amp;gt; and &amp;lt;/b&amp;gt;--mail-user=&amp;amp;lt;emailAddress&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Enviar por correo electrónico cuando su trabajo comienza / termina / falla. Puede especificar varios valores para esto (separados por comas) si es necesario.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-o &amp;amp;lt;STDOUT_log&amp;amp;gt;, --output=&amp;amp;lt;STDOUT_log&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Redirija la salida a los archivos de registro que especifique. Por defecto, ambos, STDOUT and STDERR son enviados a este archivo. Puedes especificar %j como parte del nombre de archivo de registro para indicar la ID del trabajo (como ejemplo, &amp;quot;#SBATCH -o ouptut_%j.o&amp;quot; redirigiría la salida a &amp;quot;output_123456.o&amp;quot;).&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-e &amp;amp;lt;STDERR_log&amp;amp;gt;, --error=&amp;amp;lt;STDERR_log&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Redireccionar STDERR a un archivo separado. Funciona exactamente igual que &amp;quot;-o&amp;quot;.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-t &amp;amp;lt;days-hours:minutes:seconds&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Walltime para tu trabajo. La duración del Walltime es el tiempo que espera que su trabajo se ejecute.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-a, --array=&amp;amp;lt;índices&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Envía una lista (arreglo) de trabajos identicos. Solo aplica para sbatch.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los scripts de trabajo especifican los recursos solicitados y otras consideraciones especiales con comentarios especiales &amp;quot;#SBATCH&amp;quot; en la parte superior de un script de trabajo. Aunque muchas de estas opciones son opcionales, las varibles que se ocupan de solicitudes de recursos (CPU, memoria y tiempo) son obligatorias. Todas las variables deben agregarse a sus scripts de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#SBATCH &amp;lt;variable&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Para especificar un nombre al job, por ejemplo, debe agregar lo siguiente a su secuencia de comandos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#SBATCH --job-name=nombreDeTrabajo&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Enviar un script===&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 #SBATCH -J example&lt;br /&gt;
 #SBATCH -p general&lt;br /&gt;
 #SBATCH -n 1&lt;br /&gt;
 #SBATCH --output=example_%j.out&lt;br /&gt;
 #SBATCH --error=example_%j.err&lt;br /&gt;
 #SBATCH --mail-user=user@example.com&lt;br /&gt;
 #SBATCH --mail-type=ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Como debe comenzar un script en Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre del trabajo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -J example&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre la partición donde desea ejecutar el Job:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -p general&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Número de tareas:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de salida:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -o example_%j.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de error:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -e example_%j.err&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Correo para notificaciones:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-user=user@example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Enviar correo en todos casos (verificar opciones arriba):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Programar tarea (uso de scrontab) ===&lt;br /&gt;
&#039;&#039;&#039;scrontab&#039;&#039;&#039; es una implementación del clásico planificador de tareas de linux &#039;&#039;&#039;crontab&#039;&#039;&#039; donde se guarda un listado de comandos a ejecutar en un tiempo determinado por el usuario.&lt;br /&gt;
&lt;br /&gt;
Para acceder a scrontab utilice el siguiente comando:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[prueba@leftraru1 ~]$ scrontab -e&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto le permitirá editar su archivo scrontab, asignando recursos como también el momento en que desea ejecutar su tarea. La estructura base a utilizar es la siguiente:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SCRON -J mi_tarea&lt;br /&gt;
#SCRON -p main&lt;br /&gt;
#SCRON -n 1&lt;br /&gt;
#SCRON -c 1&lt;br /&gt;
#SCRON --mem-per-cpu=2300&lt;br /&gt;
#SCRON --mail-user=foo@bar.com&lt;br /&gt;
#SCRON --mail-type=ALL&lt;br /&gt;
#SCRON -o mi_tarea_%j.out&lt;br /&gt;
#SCRON -e mi_tarea_%j.err&lt;br /&gt;
# Example of job definition:&lt;br /&gt;
# .---------------- minute (0 - 59)&lt;br /&gt;
# |  .------------- hour (0 - 23)&lt;br /&gt;
# |  |  .---------- day of month (1 - 31)&lt;br /&gt;
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...&lt;br /&gt;
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat&lt;br /&gt;
# |  |  |  |  |&lt;br /&gt;
# *  *  *  *  *     command to be executed&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;minute&#039;&#039;&#039; - Corresponde al minuto en que se va a ejecutar el script, valor de 0 a 59.&lt;br /&gt;
* &#039;&#039;&#039;hour&#039;&#039;&#039; - Hora de ejecución, formato 24 horas, valor de 0 a 23, donde 0 son las 12:00 AM.&lt;br /&gt;
* &#039;&#039;&#039;day of month&#039;&#039;&#039; - Día del mes, la tarea se puede ejecutar cada x día, valor de 1 a 31.&lt;br /&gt;
* &#039;&#039;&#039;month&#039;&#039;&#039; - La tarea se puede ejecutar cada x mes, valor de 1 a 12.&lt;br /&gt;
* &#039;&#039;&#039;day of week&#039;&#039;&#039; - Día de la semana, valor de 0 a 6, donde 0 es Domingo.&lt;br /&gt;
* &#039;&#039;&#039;command to be executed&#039;&#039;&#039; - Script a ejecutar por el usuario.&lt;br /&gt;
 &lt;br /&gt;
Ejemplo envío de trabajo slurm:&lt;br /&gt;
&lt;br /&gt;
Para la asignación de recursos, utilizaremos la directriz &#039;&#039;&#039;#SCRON&#039;&#039;&#039;, que utiliza los mismos parámetros usados por &#039;&#039;&#039;#SBATCH&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Luego de asignar los recursos debemos especificar el tiempo, en este caso la tarea será ejecutada todos los días cada 20 minutos, luego debemos indicar el script enviado por el usuario y guardamos los cambios en el archivo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
*/20 * * * * /home/prueba/ejemplo/script.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es importante destacar que el script a lanzar &#039;&#039;&#039;/home/prueba/ejemplo/script.sh&#039;&#039;&#039; debe tener permisos de ejecución.&lt;br /&gt;
&lt;br /&gt;
Para revisar el listado de tareas existentes en nuestro scrontab, ejecutamos el comando:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[prueba@leftraru1 ~]$ scrontab -l&lt;br /&gt;
*/20 * * * * /home/prueba/ejemplo/script.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para borrar el contenido de nuestro scrontab:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[prueba@leftraru1 ~]$ scrontab -r&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Información a considerar:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Generar archivos de salida correctamente&lt;br /&gt;
** Para que el archivo error y out de tu script se generen en el directorio solicitado, ejemplo, /home/prueba/ejemplo/ en tu script debe estar presente el comando cd “/home/prueba/ejemplo”, esto hará que scrontab se posicione dentro del directorio de salida.&lt;br /&gt;
* Es distinto el tiempo de programar el envío de una tarea (scrontab) a que una tarea inicie en el clúster (running), ya que esto dependerá de los recursos libres que existan en ese momento en el clúster.&lt;br /&gt;
* Para revisar las tareas programadas debe ejecutar en cualquier nodo login el comando &#039;&#039;&#039;scrontab -l&#039;&#039;&#039; o revisar con el comando &#039;&#039;&#039;squeue&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[prueba@leftraru1 ~]$ squeue&lt;br /&gt;
24293471     main /home/eg  prueba PD       0:00      1 (BeginTime)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Checkpointing ==&lt;br /&gt;
Es la acción de guardar el estado de un proceso en ejecución en un archivo de imagen de punto de control. Este proceso se puede reiniciar más tarde desde el archivo del punto de control, continuando la ejecución desde donde se detuvo, en la misma computadora o en una diferente.&lt;br /&gt;
&lt;br /&gt;
=== ¿Por qué utilizarlo? ===&lt;br /&gt;
* Permite ejecuciones de tarea largas que superen el tiempo de ejecución permitido en el cluster (30 días)&lt;br /&gt;
* Estar preparados ante fallas del sistema que nos puedan hacer perder resultados de nuestras simulaciones&lt;br /&gt;
&lt;br /&gt;
=== Utilización ===&lt;br /&gt;
Lo primero que debemos hacer en nuestro script es cargar el módulo de Mana:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ml mana/3.0.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Este módulo provee 3 ejecutables que necesitaremos:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;mana_coordinator:&#039;&#039;&#039; Coordina los checkpoints entre los distintos procesos&lt;br /&gt;
* &#039;&#039;&#039;mana_launch:&#039;&#039;&#039; Inicia un proceso con checkpoint&lt;br /&gt;
* &#039;&#039;&#039;mana_restart:&#039;&#039;&#039; Reinicia la ejecución desde una imagen del checkpoint&lt;br /&gt;
&lt;br /&gt;
Necesitaremos 2 scripts para trabajar con checkpoints: Inicio y reinicio&lt;br /&gt;
&lt;br /&gt;
=== Script de inicio (inicio.sh) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
##---------------SLURM Parameters - NLHPC ----------------&lt;br /&gt;
#SBATCH -J Testcheckpoint&lt;br /&gt;
#SBATCH -p general&lt;br /&gt;
#SBATCH -n 44&lt;br /&gt;
#SBATCH --ntasks-per-node=44&lt;br /&gt;
#SBATCH --mem-per-cpu=4363&lt;br /&gt;
#SBATCH --mail-user=test@nlhpc.cl&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH -o Testcheckpoint_%j.out&lt;br /&gt;
#SBATCH -e Testcheckpoint_%j.err&lt;br /&gt;
&lt;br /&gt;
# ----------------Modules----------------------------&lt;br /&gt;
ml mana/3.0.0&lt;br /&gt;
# ----------------Command--------------------------&lt;br /&gt;
#Checkpointing cada 1 hora&lt;br /&gt;
mana_cooridinator -i3600&lt;br /&gt;
#Ejecutamos nuestra tarea con checkpointing&lt;br /&gt;
srun mana_launch ./ejecutable&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Script de reinicio (reinicio.sh) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
##---------------SLURM Parameters - NLHPC ----------------&lt;br /&gt;
#SBATCH -J Testcheckpoint&lt;br /&gt;
#SBATCH -p general&lt;br /&gt;
#SBATCH -n 44&lt;br /&gt;
#SBATCH --ntasks-per-node=44&lt;br /&gt;
#SBATCH --mem-per-cpu=4363&lt;br /&gt;
#SBATCH --mail-user=test@nlhpc.cl&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH -o Testcheckpoint_%j.out&lt;br /&gt;
#SBATCH -e Testcheckpoint_%j.err&lt;br /&gt;
&lt;br /&gt;
# ----------------Modules----------------------------&lt;br /&gt;
ml mana/3.0.0&lt;br /&gt;
# ----------------Command--------------------------&lt;br /&gt;
#Checkpointing cada 1 hora&lt;br /&gt;
mana_cooridinator -i3600&lt;br /&gt;
#Reiniciar nuestra tarea desde los archivos de checkpoint&lt;br /&gt;
srun mana_restart&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para correr estos scripts se puede hacer utilizando la funcionalidad de dependencias de SLURM:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[test@leftraru2 test]$ sbatch inicio.sh&lt;br /&gt;
Submitted batch job 23574685&lt;br /&gt;
[test@leftraru2 test]$ sbatch --dependency=afterok:23574685 reinicio.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Trabajos ==&lt;br /&gt;
=== Trabajos paralelos ===&lt;br /&gt;
Muchos de los trabajos que se ejecutan en un clúster de producción implicarán más de un procesador (CPU, núcleo). Dichos trabajos paralelos deben solicitar la cantidad de recursos necesarios a través de opciones adicionales. Los más comunes son:&lt;br /&gt;
&lt;br /&gt;
Para diferentes tipos de trabajos paralelos, se especificarán diferentes opciones. Los trabajos paralelos más comunes son trabajos de MPI (memoria distribuida), trabajos de subprocesos múltiples (memoria compartida) y los llamados híbridos que son una combinación de los dos. Analicemos por separado con un n ejemplo para cada uno.&lt;br /&gt;
&lt;br /&gt;
=== Ejecución de programas con MPI ===&lt;br /&gt;
MPI (interfaz de paso de mensajes) es la API de comunicación estándar para trabajos paralelos de memoria distribuida capaz de implementarse en un clúster. Para programar dicho trabajo, es necesario especificar la cantidad de nodos del clúster que se utilizarán y la cantidad de procesos (tareas) que se ejecutarán en cada nodo.&lt;br /&gt;
&lt;br /&gt;
El siguiente es un ejemplo de ejecución de un programa compilado con Open MPI:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 #SBATCH -J example_mpi&lt;br /&gt;
 #SBATCH -p general&lt;br /&gt;
 #SBATCH -n 264&lt;br /&gt;
 #SBATCH --ntasks-per-node=44&lt;br /&gt;
 #SBATCH --output=example_%j.out&lt;br /&gt;
 #SBATCH --error=example_%j.err&lt;br /&gt;
 #SBATCH --mail-user=user@example.com&lt;br /&gt;
 #SBATCH --mail-type=ALL&lt;br /&gt;
 &lt;br /&gt;
 srun ./mpi_test&lt;br /&gt;
A continuacion se explica línea por líneael script.&lt;br /&gt;
&lt;br /&gt;
Como empieza un shell script en Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre del Job:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -J example_mpi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre la particion donde se desea ejecutar el trabajo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -p general&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Número de tareas. Debe de ser un número múltiplo del número de CPUs máximo que tenga un node de la partición donde se lanza:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -n 264&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Con esto se fuerza a que se lancen 44 tareas MPI en cada uno de los nodos, ocupando de este modo nodos completos. En este caso 6 nodos completos:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --ntasks-per-node=44&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de salida:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -o example_%j.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de error:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -e example_%j.err&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Correo para notificaciones:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-user=user@example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Envía correo en todos los casos:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Programa para ejecutar:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
srun ./mpi_test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nota&#039;&#039;&#039;: no se carga específicamente el módulo &amp;quot;mpi&amp;quot; ya que se carga siempre por defecto.&lt;br /&gt;
&lt;br /&gt;
Para enviarlo al clúster debe ejecutar el comando: &#039;&#039;sbatch script.sh&#039;&#039;. El ejemplo anterior ejecutará una tarea OpenMPI con 264 procesos reservando 264 cores para ello.&lt;br /&gt;
&lt;br /&gt;
=== Trabajos multiproceso OpenMP ===&lt;br /&gt;
Los trabajos paralelos diseñados para ejecutarse en un sistema multi-core (shared-memory) suelen ser &amp;quot;multi-threaded&amp;quot;. La programación de un job de este tipo requiere especificar el número de núcleos que se utilizan para acomodar los subprocesos.&lt;br /&gt;
&lt;br /&gt;
OpenMP es el conjunto común de variables de compilación para facilitar el desarrollo de programas multi-threaded. Un script típico de SLURM para un programa de este tipo se ve así:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 #SBATCH -J OMPtest&lt;br /&gt;
 #SBATCH -p general&lt;br /&gt;
 #SBATCH -n 1&lt;br /&gt;
 #SBATCH -c 44&lt;br /&gt;
 #SBATCH --ntasks-per-node=44&lt;br /&gt;
 #SBATCH --mem-per-cpu=1024&lt;br /&gt;
 #SBATCH -o example_%j.out&lt;br /&gt;
 #SBATCH -e example_%j.err&lt;br /&gt;
 #SBATCH --mail-user=user@example.com&lt;br /&gt;
 #SBATCH --mail-type=ALL&lt;br /&gt;
&lt;br /&gt;
 OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK time ./omp-program&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Como debe comenzar un script en Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre del Job:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -J OMPtest&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre la particion donde desea ejecutar el Job:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -p general&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Número de trabajos:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Número de tareas:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -c 44&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Con esto se fuerza a que se agrupen las 44 tareas en un nodo (en OpenMP no hay comunicación entre nodos, por lo que todas las tareas deben estar en el mismo nodo o no funcionaría):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --ntasks-per-node=44&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Memoria por core (MBytes):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem-per-cpu=1024&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de salida:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -o example_%j.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de error:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -e example_%j.err&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Correo para notificaciones:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-user=user@example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Enviar correo en todos los casos:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Programa para ejecutar:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK time ./omp-program &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cuando se utiliza un programa OpenMP, el número de subprocesos (y, por lo tanto, el número requerido de núcleos) se especifica a través de la variable de entorno OMP_NUM_THREADS que, por lo tanto, aparece en el script frente a la llamada al programa. Lo estamos configurando en la variable interna SLURM_CPUS_PER_TASK que se establece a través de la opción &amp;quot;-c&amp;quot; (a 44 en nuestro ejemplo, que sería el número total de cores de un nodo de la partición &amp;quot;general&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
La opción &amp;quot;-n&amp;quot; se mantiene en 1 para indicar un único trabajo principal que tiene 44 tareas. Para asegurarnos que todas las tareas se ejecutan en el mismo nodo, se añade la opción &amp;quot;--ntasks-per-node&amp;quot; con el máximo número de cores que tiene un nodo de la partición donde se está lanzando el trabajo.&lt;br /&gt;
&lt;br /&gt;
=== Ejecución de tareas en GPUs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -J ejemplo_gpus&lt;br /&gt;
#SBATCH -p v100&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
#SBATCH -o ejemplo_%j.out&lt;br /&gt;
#SBATCH -e ejemplo_%j.err&lt;br /&gt;
#SBATCH --mail-user=correo@gmail.com&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH --mem-per-cpu=4300&lt;br /&gt;
#SBATCH --gres=gpu:1&lt;br /&gt;
&lt;br /&gt;
./programa&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Inicio de un bash script en Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre del trabajo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -J ejemplo_gpus&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre la partición donde se ejecuta el trabajo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --partition=v100&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Número de tareas:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de salida:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -o ejemplo_%j.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de error:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -e ejemplo_%j.err&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Correo para notificaciones:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-user=user@example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Enviar correo en todos los casos:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Memoria por CPU (MB):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem-per-cpu=4365&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cantidad utilizada de GPUs. El parámetro gpu:1 indica la cantidad de tarjetas a utilizar (cada nodo tiene 2 GPUs):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --gres=gpu:1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Programa para ejecutar:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./programa&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Job Arrays ===&lt;br /&gt;
Cuando se ejecutan cientos o miles de simulaciones que utilizan la misma cantidad de recursos, puede ser una ventaja ejecutar estas simulaciones como un &amp;quot;job array&amp;quot;. Los job array le permiten enviar miles de dichos trabajos (llamados &amp;quot;job steps&amp;quot;) con un solo script. A cada simulación se le asignará un valor único para la variable de entorno SLURM_ARRAY_TASK_ID. Puede usar esta variable para leer parámetros para pasos individuales de una línea dada de un archivo.&lt;br /&gt;
&lt;br /&gt;
=== Caso de uso de un Script Job Array (Gaussian) ===&lt;br /&gt;
Tenemos usuarios que actualmente envían varias simulaciones al clúster que son similares en cuanto al uso de recursos, pero, la diferencia es que solo cambia la entrada que le entregan al programa. Para esta situación, recomendamos hacer uso de un script Job Array.&lt;br /&gt;
&lt;br /&gt;
En este ejemplo crearemos un script job array para el software Gaussian, el cual, realizará 63 simulaciones, cada una de estas utilizará 8 cores y podrá alcanzar un uso máximo de 8 Gb de memoria ram. Para este caso utilizaremos la partición slims donde cada nodo tiene 46 Gb de memoria ram y 20 cores.&lt;br /&gt;
&lt;br /&gt;
Script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# ----------------SLURM Parameters----------------&lt;br /&gt;
#SBATCH -J prueba&lt;br /&gt;
#SBATCH -p slims&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
#SBATCH -c 8&lt;br /&gt;
#SBATCH --mem-per-cpu=1000&lt;br /&gt;
#SBATCH --mail-user=prueba@nlhpc.cl&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH --array=1-63&lt;br /&gt;
#SBATCH -o prueba_%A_%a.out&lt;br /&gt;
#SBATCH -e prueba_%A_%a.err&lt;br /&gt;
#-----------------Toolchain---------------------------&lt;br /&gt;
ml purge&lt;br /&gt;
ml intel/2019b&lt;br /&gt;
# ----------------Módulos-----------------------------&lt;br /&gt;
ml g16/B.01&lt;br /&gt;
# ----------------Comandos--------------------------&lt;br /&gt;
file=$(ls Child_10_*.com | sed -n ${SLURM_ARRAY_TASK_ID}p)&lt;br /&gt;
srun g16 $file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
Descripción de comandos utilizados en script:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Inicio de un bash script en Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre de la simulación:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -J prueba&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre la partición donde se ejecuta la simulación:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -p slims&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Número de tareas (1 tarea va a ejecutar 63 simulaciones):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Core’s por tareas (cada tarea utilizará un máximo 8 cores):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -c 8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Memoria ram por cpu (cada tarea utilizará un máximo 8 Gb de ram):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH –mem-per-cpu=1000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Correo para activar el envío de notificaciones:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-user=prueba@nlhpc.cl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Permitir envío de notificaciones:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se generan 63 simulaciones diferentes:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --array=1-63&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de salida: (ejemplo: prueba_18455017_1.out)&lt;br /&gt;
&lt;br /&gt;
* %A corresponde al Job ID de nuestra tarea que le asignará Slurm → 18455017.&lt;br /&gt;
* %a corresponde a la simulación X de nuestra tarea que le asignará Slurm → 1.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -o prueba_%A_%a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de errores: (ejemplo: prueba_18455017_1.err)&lt;br /&gt;
&lt;br /&gt;
* %A corresponde al Job ID de nuestra tarea que le asignará Slurm → 18455017.&lt;br /&gt;
* %a corresponde a la simulación X de nuestra tarea que le asignará Slurm → 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -e prueba_%A_%a.err&lt;br /&gt;
Toolchain: en este apartado, limpiaremos nuestro entorno de software no deseados y luego escogemos la herramienta informática con la cual está compilado el software Gaussian (nosotros utilizamos el compilador Intel/2019b).&lt;br /&gt;
&lt;br /&gt;
#-----------------Toolchain---------------------------&lt;br /&gt;
ml purge&lt;br /&gt;
ml intel/2019b&lt;br /&gt;
Módulos: cargamos el software Gaussian versión 16/B.0.&lt;br /&gt;
&lt;br /&gt;
# ----------------Módulos-----------------------------&lt;br /&gt;
ml g16/B.01&lt;br /&gt;
Comandos: aquí definimos los comandos a ejecutar.&lt;br /&gt;
&lt;br /&gt;
# ----------------Comandos--------------------------&lt;br /&gt;
file=$(ls Child_10_*.com | sed -n ${SLURM_ARRAY_TASK_ID}p)&lt;br /&gt;
srun g16 $file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
file= variable que va a listar los archivos de entrada que comiencen por Child_10_ y terminen en .com&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Child.png|no]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sed -n ${SLURM_ARRAY_TASK_ID}p) ← Sed imprimirá las líneas de cada archivo de entrada y la variable $SLURM_ARRAY_TASK_ID asumirá estas entradas como matriz de simulación en nuestro job array, en este ejemplo tenemos 63 archivos de entrada.&lt;br /&gt;
&lt;br /&gt;
Para más detalles sobre los archivos stdin, stdout y stderr de una simulación % A será reemplazado por el valor de SLURM_ARRAY_JOB_ID que es el Job ID de nuestra tarea y %a será reemplazado por el valor de SLURM_ARRAY_TASK_ID que corresponde a la simulación X de nuestra tarea.&lt;br /&gt;
&lt;br /&gt;
Srun g16 $file: ejecutará el comando gaussian g16 interpretando la variable $file en los nodos de cómputo asignados.&lt;br /&gt;
&lt;br /&gt;
Enviar el script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[prueba@leftraru1 ~]$ sbatch prueba.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ejecución de una tarea que ocupa mucha RAM por CPU ===&lt;br /&gt;
Debemos tener en cuenta que la RAM que SLURM reserva por defecto son 1000 MB. Un típico error de cancelación de tarea por falta de memoria es el siguiente:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/tmp/slurmd/job136839939/slurm_script: line 15: 23547 Killed                  ./programa.sh&lt;br /&gt;
slurmstepd: error: Detected 1 oom-kill event(s) in step 136839939.batch cgroup. Some of your processes &lt;br /&gt;
may have been killed by the cgroup out-of-memory handler.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Si su tarea ocupa más de la memoria por defecto, puede utilizar el siguiente parámetro:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem-per-cpu=2300 #Máxima RAM por CPU&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Esto hará que SLURM reserve más RAM por CPU para sus tareas.&lt;br /&gt;
&lt;br /&gt;
Tenga en cuenta que nuestros nodos tienen 46 GB de memoria RAM (Partición slims), 187 GB (Partición general) y 765 GB (Partición largemem) por nodo. [https://wiki.nlhpc.cl/Hardware_Disponible Más información].&lt;br /&gt;
&lt;br /&gt;
Otra forma de reservar memoria es utilizando el siguiente parámetro:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem=2300&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
En este caso SLURM realizará una reserva de memoria de 2300 MB pero por la totalidad del trabajo.&lt;br /&gt;
&lt;br /&gt;
Los parámetros anteriores al igual que el número de CPUs que se van a usar, hay que afinarlos lo mejor posible. Para ello lo que se puede hacer es hacer pruebas en los nodos logins, sin lanzar en las colas, y así estudiar el uso de RAM y CPU por parte de sus procesos.&lt;br /&gt;
&lt;br /&gt;
=== Ejecución de una tarea con Dependencias ===&lt;br /&gt;
Las dependencias de trabajos se utilizan para aplazar el inicio de un trabajo hasta que se satisfagan las dependencias especificadas. Se especifican con la opción --dependency en el siguiente formato:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch --dependency=&amp;lt;type:job_id[:job_id][,type:job_id[:job_id]]&amp;gt; ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Los tipos de dependencias son las siguientes:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;after&#039;&#039;&#039;:jobid[:jobid...] - el trabajo puede empezar después de que los trabajos especificados comiencen&lt;br /&gt;
* &#039;&#039;&#039;afterany&#039;&#039;&#039;:jobid[:jobid...] - el trabajo puede empezar después de que los trabajos especificados terminen&lt;br /&gt;
* &#039;&#039;&#039;afternotok&#039;&#039;&#039;:jobid[:jobid...] - el trabajo puede empezar después que los trabajos especificados terminan fallidamente&lt;br /&gt;
* &#039;&#039;&#039;afterok&#039;&#039;&#039;:jobid[:jobid...] - el trabajo puede empezar después que los trabajos especificados terminan exitósamente&lt;br /&gt;
&lt;br /&gt;
La manera más simple de usar una dependencia del tipo afterok:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[prueba@leftraru1 ~]$ sbatch job1.sh&lt;br /&gt;
Submitted batch job 21363626&lt;br /&gt;
[prueba@leftraru1 ~]$ sbatch --dependency=afterok:21363626 job2.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora cuando job1.sh termine correctamente, el job2.sh entrará en ejecución. Si job1.sh termina fallidamente, job2.sh no entrará en ejecución nunca pero sí quedará en cola (debe cancelarse manualmente el trabajo).&lt;br /&gt;
&lt;br /&gt;
== Prioridad de tarea ==&lt;br /&gt;
Cómo ver la prioridad del trabajo. Los factores que determinan la prioridad del trabajo, incluyendo la fórmula y pesos.&lt;br /&gt;
&lt;br /&gt;
=== Factores que determinan prioridad de tarea ===&lt;br /&gt;
&amp;lt;table class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 60%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Comando SLURM&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Descripción&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Edad&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;la cantidad de tiempo que el trabajo ha estado esperando en la cola.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Tamaño de la tarea&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;número de nodos solicitados por el trabajo.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Partición&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;prioridad para una partición determinada.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Prioridad Baja&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Mientras más tareas se ejecuten en el cluster, menor será la prioridad.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Prioridad Alta&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Mientras menos tareas se ejecuten en el clúster, más alta es la prioridad.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Prioridad de tarea ==&lt;br /&gt;
Cómo ver la prioridad del trabajo. Los factores que determinan la prioridad del trabajo, incluyendo la fórmula y pesos.&lt;br /&gt;
&lt;br /&gt;
=== Factores que determinan prioridad de tarea ===&lt;br /&gt;
* Edad - la cantidad de tiempo que el trabajo ha estado esperando en la cola&lt;br /&gt;
* Tamaño Oficio - número de nodos solicitados por el trabajo&lt;br /&gt;
* Partición - prioridad para una partición determinada&lt;br /&gt;
* Contribución de prioridades basada en los recursos informáticos utilizados por los miembros de un grupo de investigación en los últimos 30 días - Fairshare.&lt;br /&gt;
* Mientras más tareas se ejecuten en el cluster, menor será la prioridad.&lt;br /&gt;
* Mientras menos tareas se ejecuten en el clúster, más alta es la prioridad.&lt;br /&gt;
Fórmula Prioridad de tarea&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Job_priority =&lt;br /&gt;
  (PriorityWeightAge) * (age_factor) +&lt;br /&gt;
  (PriorityWeightFairshare) * (fair-share_factor) +&lt;br /&gt;
  (PriorityWeightJobSize) * (job_size_factor) +&lt;br /&gt;
  (PriorityWeightPartition) * (partition_factor) +&lt;br /&gt;
  (PriorityWeightQOS) * (QOS_factor)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Visualización de sus Tareas ==&lt;br /&gt;
Si Ud. necesita visualizar información acerca de sus tareas de forma interactiva, puede utilizar el comando smap:&lt;br /&gt;
&lt;br /&gt;
smap -i 3&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Smap.png|no|700px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De esta forma, tendrá una actualización cada 3 segundos de sus tareas en ejecución incluyendo los nodos en los cuales se encuentran ejecutándose.&lt;br /&gt;
&lt;br /&gt;
== Bibliografía ==&lt;br /&gt;
[http://slurm.schedmd.com/documentation.html Manual Oficial de Slurm]&lt;br /&gt;
&lt;br /&gt;
[https://slurm.schedmd.com/scrontab.html Documentación scrontab]&lt;/div&gt;</summary>
		<author><name>Jmorales</name></author>
	</entry>
	<entry>
		<id>https://wiki.nlhpc.cl/index.php?title=Uso_Filesystem_Local&amp;diff=778</id>
		<title>Uso Filesystem Local</title>
		<link rel="alternate" type="text/html" href="https://wiki.nlhpc.cl/index.php?title=Uso_Filesystem_Local&amp;diff=778"/>
		<updated>2024-05-03T13:50:02Z</updated>

		<summary type="html">&lt;p&gt;Jmorales: /* Pasos a seguir */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introducción ==&lt;br /&gt;
&lt;br /&gt;
El siguiente procedimiento indica los pasos necesarios para poder utilizar el &#039;&#039;&#039;filesystem local&#039;&#039;&#039; y ejecutar tareas mediante el uso de SLURM.&lt;br /&gt;
&lt;br /&gt;
Este uso está pensado para aplicaciones como &#039;&#039;&#039;Siesta&#039;&#039;&#039;, &#039;&#039;&#039;Orca&#039;&#039;&#039;, &#039;&#039;&#039;Gaussian&#039;&#039;&#039; entre otras.&lt;br /&gt;
&lt;br /&gt;
== Pasos a seguir ==&lt;br /&gt;
&lt;br /&gt;
Para considerar el uso del &#039;&#039;&#039;filesystem local&#039;&#039;&#039;, es necesario comprender qué debemos hacer:&lt;br /&gt;
&lt;br /&gt;
# Copiar nuestros archivos desde nuestra carpeta personal a un directorio local&lt;br /&gt;
# Ejecutar nuestra simulación&lt;br /&gt;
# Copiar los resultados del directorio local a nuestra carpeta personal&lt;br /&gt;
&lt;br /&gt;
Con esto en mente, se puede realizar un script similar a: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -J ejemplo&lt;br /&gt;
#SBATCH -p main&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
#SBATCH -c 1&lt;br /&gt;
#SBATCH --mem-per-cpu=2300&lt;br /&gt;
#SBATCH --mail-user=foo@example.com&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH -o ejemplo_%j.out&lt;br /&gt;
#SBATCH -e ejemplo_%j.err&lt;br /&gt;
&lt;br /&gt;
# Carga de módulos necesarios&lt;br /&gt;
ml MODULO&lt;br /&gt;
&lt;br /&gt;
# Creación de carpeta local&lt;br /&gt;
LOCAL_DIR=&amp;quot;/tmp/${SLURM_JOB_ID}&amp;quot;&lt;br /&gt;
mkdir $LOCAL_DIR&lt;br /&gt;
&lt;br /&gt;
# Copiamos nuestros archivos o carpeta al directorio creado &lt;br /&gt;
cp -r $HOME/mis_archivos/ $LOCAL_DIR&lt;br /&gt;
cd $LOCAL_DIR/mis_archivos&lt;br /&gt;
&lt;br /&gt;
# Ejecutamos nuestra simulación&lt;br /&gt;
srun aplicación mi_input &amp;gt; mi_output&lt;br /&gt;
&lt;br /&gt;
# Copiamos los resultados obtenidos a nuestra carpeta de origen&lt;br /&gt;
cp -r mi_output $LOCAL_DIR/mis_archivos&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En el ejemplo anterior, se ejecuta una tarea bajo la partición &#039;&#039;&#039;main&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
El comando &#039;&#039;&#039;ml MODULO&#039;&#039;&#039; hace referencia a que &#039;&#039;&#039;&#039;&#039;debe cargar los módulos que usted necesite&#039;&#039;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Posterior a eso, se creará una carpeta bajo &#039;&#039;&#039;/tmp&#039;&#039;&#039; que tendrá como nombre el &#039;&#039;&#039;Job ID&#039;&#039;&#039; de su tarea, y se copiará la carpeta &#039;&#039;&#039;mis_archivos&#039;&#039;&#039; a la nueva carpeta creada.&lt;br /&gt;
&lt;br /&gt;
Y se finaliza accediendo a la carpeta copiada en el &#039;&#039;&#039;filesystem&#039;&#039;&#039; local.&lt;br /&gt;
&lt;br /&gt;
Posterior a eso, se ejecutará la aplicación según el módulo cargado (en este ejemplo llamado &#039;&#039;&#039;srun aplicación&#039;&#039;&#039;), el cual almacenará el resultado obtenido en el archivo &#039;&#039;&#039;mi_output&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Una vez que haya finalizado la tarea, es importante que el usuario almacene en su carpeta &#039;&#039;&#039;personal&#039;&#039;&#039; los resultados obtenidos, para eso se copia el archivo obtenido a su carpeta personal.&lt;br /&gt;
&lt;br /&gt;
Es de suma importancia el último paso, ya que de no copiar los resultados estos se perderán. &lt;br /&gt;
&lt;br /&gt;
Una vez que la tarea haya finalizado, [[SISTEMA_GESTOR_DE_RECURSOS|SLURM]] eliminará las carpetas y el contenido de &#039;&#039;&#039;/tmp&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Consideraciones ==&lt;br /&gt;
&lt;br /&gt;
El lector debe considerar qué el &#039;&#039;script&#039;&#039; presentado en la sección anterior es un ejemplo y deberá realizar las modificaciones necesarias para:&lt;br /&gt;
&lt;br /&gt;
* Crear una carpeta con la variable $SLURM_JOB_ID permite que no exista conflicto de nombres con otras posibles carpetas ya existentes&lt;br /&gt;
* Cargar los módulos y librerías específicas a su necesidad&lt;br /&gt;
* Puede copiar archivos y/o carpetas de manera particular y/o recursiva según corresponda&lt;br /&gt;
* Ejecutar la aplicación que requiera, indicando el/los comando/s necesarios según el módulo cargado anteriormente&lt;br /&gt;
* Deberá copiar &#039;&#039;de regreso&#039;&#039; los resultados obtenidos a su carpeta personal para evitar pérdida de datos obtenidos&lt;br /&gt;
&lt;br /&gt;
== Enlaces ==&lt;br /&gt;
&lt;br /&gt;
Puede ver ejemplos del uso de este procedimiento en otras páginas de la wiki como por ejemplo:&lt;br /&gt;
&lt;br /&gt;
* [[Siesta]]&lt;br /&gt;
* [[MATLAB_Distrib_Computing]]&lt;/div&gt;</summary>
		<author><name>Jmorales</name></author>
	</entry>
	<entry>
		<id>https://wiki.nlhpc.cl/index.php?title=Jupyter_bajo_Conda&amp;diff=777</id>
		<title>Jupyter bajo Conda</title>
		<link rel="alternate" type="text/html" href="https://wiki.nlhpc.cl/index.php?title=Jupyter_bajo_Conda&amp;diff=777"/>
		<updated>2024-05-03T13:49:15Z</updated>

		<summary type="html">&lt;p&gt;Jmorales: /* Identificación de nodo en el que nos encontremos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introducción =&lt;br /&gt;
&lt;br /&gt;
El siguiente procedimiento le permitirá instalar Jupyter Notebook en un entorno Conda, para eventualmente acceder desde su computadora local y utilizarlo.&lt;br /&gt;
&lt;br /&gt;
Recomendamos la lectura de la página de la Wiki sobre Conda en el siguiente [https://wiki.nlhpc.cl/Uso_de_conda enlace] donde aprenderá a utilizar los módulos necesarios, crear entornos virtuales e instalar software.&lt;br /&gt;
&lt;br /&gt;
= Creación de entorno virtual de Conda e instalación de Jupyter =&lt;br /&gt;
&lt;br /&gt;
Crearemos un entorno virtual y posterior a eso instalaremos Jupyter de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
 [dbowman@leftraru1 ~]$ conda create -n mi_entorno_con_jupyter&lt;br /&gt;
 Collecting package metadata (current_repodata.json): done&lt;br /&gt;
 Solving environment: done&lt;br /&gt;
 ## Package Plan ##&lt;br /&gt;
  environment location: /home/eosorio/.conda/envs/mi_entorno_con_jupyter&lt;br /&gt;
 Proceed ([y]/n)? &lt;br /&gt;
 Preparing transaction: done&lt;br /&gt;
 Verifying transaction: done&lt;br /&gt;
 Executing transaction: done&lt;br /&gt;
&lt;br /&gt;
Luego activaremos nuestro entorno virtual con:&lt;br /&gt;
&lt;br /&gt;
 [dbowman@leftraru1 ~]$ conda activate mi_entorno_con_jupyter&lt;br /&gt;
&lt;br /&gt;
E instalaremos jupyter ejecutando:&lt;br /&gt;
&lt;br /&gt;
 [dbowman@leftraru1 ~]$ conda install -y jupyter&lt;br /&gt;
&lt;br /&gt;
Si todo resulta de manera exitosa veremos un resultado similar a:&lt;br /&gt;
&lt;br /&gt;
 Downloading and Extracting Packages&lt;br /&gt;
 jsonpointer-2.0      | 9 KB      | ######################################### | 100% &lt;br /&gt;
 jedi-0.19.0          | 825 KB    | ######################################### | 100% &lt;br /&gt;
 webcolors-1.13       | 18 KB     | ######################################### | 100% &lt;br /&gt;
 isoduration-20.11.0  | 17 KB     | ######################################### | 100% &lt;br /&gt;
 jupyterlab_server-2. | 59 KB     | ######################################### | 100% &lt;br /&gt;
 async-lru-2.0.4      | 15 KB     | ######################################### | 100% &lt;br /&gt;
 uri-template-1.3.0   | 23 KB     | ######################################### | 100% &lt;br /&gt;
 ipywidgets-8.1.0     | 111 KB    | ######################################### | 100% &lt;br /&gt;
 fqdn-1.5.1           | 14 KB     | ######################################### | 100% &lt;br /&gt;
 arrow-1.2.3          | 92 KB     | ######################################### | 100% &lt;br /&gt;
 sip-6.7.11           | 569 KB    | ######################################### | 100% &lt;br /&gt;
 openssl-3.1.2        | 2.5 MB    | ######################################### | 100% &lt;br /&gt;
 jsonschema-with-form | 7 KB      | ######################################### | 100% &lt;br /&gt;
 jupyter_events-0.7.0 | 21 KB     | ######################################### | 100% &lt;br /&gt;
 notebook-7.0.1       | 3.1 MB    | ######################################### | 100% &lt;br /&gt;
 Preparing transaction: done&lt;br /&gt;
 Verifying transaction: done&lt;br /&gt;
 Executing transaction: done&lt;br /&gt;
&lt;br /&gt;
= Ejecución de Jupyter =&lt;br /&gt;
&lt;br /&gt;
A continuación deberemos realizar dos pasos:&lt;br /&gt;
&lt;br /&gt;
# Identificar el nodo en el que nos encontramos&lt;br /&gt;
# Ejecutar jupyter&lt;br /&gt;
&lt;br /&gt;
== Identificación de nodo en el que nos encontremos ==&lt;br /&gt;
&lt;br /&gt;
Para identificar el nodo en el que nos encontremos ejecutaremos:&lt;br /&gt;
&lt;br /&gt;
 [dbowman@leftraru1 ~]$ hostname&lt;br /&gt;
 leftraru2&lt;br /&gt;
&lt;br /&gt;
La respuesta será uno de los nodos de acceso correspondientes a leftraru1 o leftraru2.&lt;br /&gt;
&lt;br /&gt;
En nuestro ejemplo obtuvimos &amp;lt;code&amp;gt;leftraru2&amp;lt;/code&amp;gt;, dato que utilizaremos prontamente.&lt;br /&gt;
&lt;br /&gt;
== Ejecutar Jupyter ==&lt;br /&gt;
&lt;br /&gt;
En este paso ejecutaremos Jupyter indicando un puerto específico para posteriormente poder conectarnos desde nuestra computadora local.&lt;br /&gt;
&lt;br /&gt;
El comando a utilizar es:&lt;br /&gt;
&lt;br /&gt;
 [dbowman@leftraru1 ~]$ jupyter-notebook --no-browser --port 2346&lt;br /&gt;
&lt;br /&gt;
Obtendremos mucha información, pero nos deberemos fijar en la información similar a:&lt;br /&gt;
&lt;br /&gt;
 [C 2023-08-02 17:09:07.819 ServerApp] &lt;br /&gt;
    To access the server, open this file in a browser:&lt;br /&gt;
        file:///home/dbowman/.local/share/jupyter/runtime/jpserver-60187-open.html&lt;br /&gt;
    Or copy and paste one of these URLs:&lt;br /&gt;
        http://localhost:2346/tree?token=918029e46e54957ac797882f1&lt;br /&gt;
        http://127.0.0.1:2346/tree?token=918029e46e54957ac797882f1&lt;br /&gt;
&lt;br /&gt;
Deberemos tener en cuenta la información &amp;lt;code&amp;gt;http://localhost:2346/tree?token=918029e46e54957ac797882f1&amp;lt;/code&amp;gt; para nuestros próximos pasos.&lt;br /&gt;
&lt;br /&gt;
= Accediendo a Jupyter desde nuestra computadora local =&lt;br /&gt;
&lt;br /&gt;
Los siguientes pasos son realizados en una terminal &#039;&#039;&#039;desde&#039;&#039;&#039; nuestra computadora local.&lt;br /&gt;
&lt;br /&gt;
Los datos que necesitaremos son:&lt;br /&gt;
&lt;br /&gt;
* Nombre de host en donde ejecutamos los pasos anteriores &lt;br /&gt;
* URL de acceso al ejecutar Jupyter en el cluster&lt;br /&gt;
&lt;br /&gt;
Estos datos fueron obtenidos desde la sección anterior, lo que nos permitirá:&lt;br /&gt;
&lt;br /&gt;
# Crear un túnel de acceso&lt;br /&gt;
# Acceder a Jupyter&lt;br /&gt;
&lt;br /&gt;
== Creación de túnel de acceso ==&lt;br /&gt;
&lt;br /&gt;
En pasos previos obtuvimos que el nombre de host &amp;lt;code&amp;gt;leftraru2&amp;lt;/code&amp;gt;, con lo que podremos ejecutar desde nuestra computadora local un túnel SSH de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
 [david@HAL ~]$ ssh -NL 2346:localhost:2346 -l dbowman leftraru2.nlhpc.cl&lt;br /&gt;
&lt;br /&gt;
Se le solicitará su contraseña del cluster y si la autenticación es exitosa, se creará un túnel desde nuestra computadora al cluster bajo nuestro usuario y el host donde hemos estado trabajando.&lt;br /&gt;
&lt;br /&gt;
En el caso de haber obtenido otro nombre de host, por ejemplo &amp;lt;code&amp;gt;leftraru2&amp;lt;/code&amp;gt;, deberemos indicar dicho nombre de host en el comando ejecutado.&lt;br /&gt;
&lt;br /&gt;
== Accediendo a Jupyter ==&lt;br /&gt;
&lt;br /&gt;
Una vez que hemos lanzado el túnel, deberemos acceder mediante nuestro navegador preferido a la URL obtenida previamente.&lt;br /&gt;
&lt;br /&gt;
En nuestro caso bastará abrir: &#039;&#039;&#039;&amp;lt;code&amp;gt;http://localhost:2346/tree?token=918029e46e54957ac797882f1&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Y ya podrá acceder a utilizar Jupyter desde su navegador.&lt;br /&gt;
&lt;br /&gt;
= Lanzando tareas de Jupyter en los nodos de cómputo =&lt;br /&gt;
&lt;br /&gt;
Debemos tener en consideración que el uso de Jupyter suele realizarse mayormente de manera interactiva, lo que requerirá los cuatro pasos anteriores que hemos realizado:&lt;br /&gt;
&lt;br /&gt;
# Identificación de host en el cluster&lt;br /&gt;
# Ejecutar Jupyter y tomar nota de URL de acceso&lt;br /&gt;
# Crear túnel SSH desde nuestra computadora al cluster&lt;br /&gt;
# Acceder a Jupyter&lt;br /&gt;
&lt;br /&gt;
También es importante notar que estamos usando un entorno virtual, por lo que para ejecutar deberemos considerar lo siguiente:&lt;br /&gt;
&lt;br /&gt;
* Reservar recursos&lt;br /&gt;
* Activar entorno de conda utilizado&lt;br /&gt;
* Lanzar tarea a los nodos de cómputo&lt;br /&gt;
** Esta tarea se ejecutará pero no podrá ser utilizada de manera interactiva&lt;br /&gt;
&lt;br /&gt;
Entonces, si queremos lanzar nuestro archivo &amp;lt;code&amp;gt;HolaJupyter.ipynb&amp;lt;/code&amp;gt; creado en nuestro &#039;&#039;&#039;notebook&#039;&#039;&#039;, podremos crear un  script similar a:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 #---------------Script SBATCH - NLHPC ----------------&lt;br /&gt;
 #SBATCH -J jupyter-desde-sbatch&lt;br /&gt;
 #SBATCH -p main&lt;br /&gt;
 #SBATCH -n 1&lt;br /&gt;
 #SBATCH -c 1&lt;br /&gt;
 #SBATCH --mem-per-cpu=2300&lt;br /&gt;
 #SBATCH --mail-user=dbowman@hal.com&lt;br /&gt;
 #SBATCH --mail-type=ALL&lt;br /&gt;
 #SBATCH -o jupyter-desde-sbatch_%j.out&lt;br /&gt;
 source /home/dbowman/.bashrc&lt;br /&gt;
 eval &amp;quot;$(/home/lmod/software/Core/Miniconda3/4.5.12/bin/conda shell.bash hook)&amp;quot;&lt;br /&gt;
 conda activate mi_entorno_con_jupyter&lt;br /&gt;
 jupyter nbconvert --to notebook --execute HolaJupyter.ipynb --output=jupyter-output.ipynb&lt;br /&gt;
&lt;br /&gt;
Esto nos entregará información en el archivo de salida de la tarea &amp;lt;code&amp;gt;jupyter-desde-sbatch_234234.out&amp;lt;/code&amp;gt; similar a:&lt;br /&gt;
 [NbConvertApp] Converting notebook HolaJupyter.ipynb to notebook&lt;br /&gt;
 0.00s - Debugger warning: It seems that frozen modules are being used, which may&lt;br /&gt;
 0.00s - make the debugger miss breakpoints. Please pass -Xfrozen_modules=off&lt;br /&gt;
 0.00s - to python to disable frozen modules.&lt;br /&gt;
 0.00s - Note: Debugging will proceed. Set PYDEVD_DISABLE_FILE_VALIDATION=1 to disable this validation.&lt;br /&gt;
 0.00s - Debugger warning: It seems that frozen modules are being used, which may&lt;br /&gt;
 0.00s - make the debugger miss breakpoints. Please pass -Xfrozen_modules=off&lt;br /&gt;
 0.00s - to python to disable frozen modules.&lt;br /&gt;
 0.00s - Note: Debugging will proceed. Set PYDEVD_DISABLE_FILE_VALIDATION=1 to disable this validation.&lt;br /&gt;
 [NbConvertApp] Writing 1187 bytes to jupyter-output.ipynb&lt;br /&gt;
&lt;br /&gt;
Y el archivo de salida llamado &amp;lt;code&amp;gt;jupyter-output.ipynb&amp;lt;/code&amp;gt; tendrá un contenido similar a:&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;cells&amp;quot;: [&lt;br /&gt;
  {&lt;br /&gt;
   &amp;quot;cell_type&amp;quot;: &amp;quot;code&amp;quot;,&lt;br /&gt;
   &amp;quot;execution_count&amp;quot;: 1,&lt;br /&gt;
   &amp;quot;id&amp;quot;: &amp;quot;7832632e-7aeb-48d5-97f5-4aed8644fb0b&amp;quot;,&lt;br /&gt;
   &amp;quot;metadata&amp;quot;: {&lt;br /&gt;
    &amp;quot;execution&amp;quot;: {&lt;br /&gt;
     &amp;quot;iopub.execute_input&amp;quot;: &amp;quot;2023-08-02T22:06:21.689494Z&amp;quot;,&lt;br /&gt;
     &amp;quot;iopub.status.busy&amp;quot;: &amp;quot;2023-08-02T22:06:21.689137Z&amp;quot;,&lt;br /&gt;
     &amp;quot;iopub.status.idle&amp;quot;: &amp;quot;2023-08-02T22:06:21.701830Z&amp;quot;,&lt;br /&gt;
     &amp;quot;shell.execute_reply&amp;quot;: &amp;quot;2023-08-02T22:06:21.700906Z&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
   },&lt;br /&gt;
   &amp;quot;outputs&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
     &amp;quot;name&amp;quot;: &amp;quot;stdout&amp;quot;,&lt;br /&gt;
     &amp;quot;output_type&amp;quot;: &amp;quot;stream&amp;quot;,&lt;br /&gt;
     &amp;quot;text&amp;quot;: [&lt;br /&gt;
      &amp;quot;Hola Jupyter!\n&amp;quot;&lt;br /&gt;
     ]&lt;br /&gt;
    }&lt;br /&gt;
   ],&lt;br /&gt;
   &amp;quot;source&amp;quot;: [&lt;br /&gt;
    &amp;quot;print(\&amp;quot;Hola Jupyter!\&amp;quot;)&amp;quot;&lt;br /&gt;
   ]&lt;br /&gt;
  },&lt;br /&gt;
 ...&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
= Conclusión =&lt;br /&gt;
&lt;br /&gt;
El uso de Jupyter puede resultar de gran ayuda, y en conjunto con la potencia de los nodos de cómputo se transforma en una herramienta útil y flexible.&lt;br /&gt;
&lt;br /&gt;
Se tiene una curva de aprendizaje inicial poco sencilla al requerir de varios pasos, pero una vez dominado, podrá repetir sus pasos una y otra vez según sus requerimientos.&lt;br /&gt;
&lt;br /&gt;
= Más información =&lt;br /&gt;
&lt;br /&gt;
Puede leer sobre Conda en el siguiente [https://wiki.nlhpc.cl/Uso_de_conda enlace].&lt;br /&gt;
&lt;br /&gt;
Puede leer sobre Jupyter en la página web oficial en el siguiente [https://docs.jupyter.org/en/latest/ enlace].&lt;/div&gt;</summary>
		<author><name>Jmorales</name></author>
	</entry>
	<entry>
		<id>https://wiki.nlhpc.cl/index.php?title=Jupyter_bajo_Conda&amp;diff=776</id>
		<title>Jupyter bajo Conda</title>
		<link rel="alternate" type="text/html" href="https://wiki.nlhpc.cl/index.php?title=Jupyter_bajo_Conda&amp;diff=776"/>
		<updated>2024-05-03T13:48:44Z</updated>

		<summary type="html">&lt;p&gt;Jmorales: /* Creación de túnel de acceso */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introducción =&lt;br /&gt;
&lt;br /&gt;
El siguiente procedimiento le permitirá instalar Jupyter Notebook en un entorno Conda, para eventualmente acceder desde su computadora local y utilizarlo.&lt;br /&gt;
&lt;br /&gt;
Recomendamos la lectura de la página de la Wiki sobre Conda en el siguiente [https://wiki.nlhpc.cl/Uso_de_conda enlace] donde aprenderá a utilizar los módulos necesarios, crear entornos virtuales e instalar software.&lt;br /&gt;
&lt;br /&gt;
= Creación de entorno virtual de Conda e instalación de Jupyter =&lt;br /&gt;
&lt;br /&gt;
Crearemos un entorno virtual y posterior a eso instalaremos Jupyter de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
 [dbowman@leftraru1 ~]$ conda create -n mi_entorno_con_jupyter&lt;br /&gt;
 Collecting package metadata (current_repodata.json): done&lt;br /&gt;
 Solving environment: done&lt;br /&gt;
 ## Package Plan ##&lt;br /&gt;
  environment location: /home/eosorio/.conda/envs/mi_entorno_con_jupyter&lt;br /&gt;
 Proceed ([y]/n)? &lt;br /&gt;
 Preparing transaction: done&lt;br /&gt;
 Verifying transaction: done&lt;br /&gt;
 Executing transaction: done&lt;br /&gt;
&lt;br /&gt;
Luego activaremos nuestro entorno virtual con:&lt;br /&gt;
&lt;br /&gt;
 [dbowman@leftraru1 ~]$ conda activate mi_entorno_con_jupyter&lt;br /&gt;
&lt;br /&gt;
E instalaremos jupyter ejecutando:&lt;br /&gt;
&lt;br /&gt;
 [dbowman@leftraru1 ~]$ conda install -y jupyter&lt;br /&gt;
&lt;br /&gt;
Si todo resulta de manera exitosa veremos un resultado similar a:&lt;br /&gt;
&lt;br /&gt;
 Downloading and Extracting Packages&lt;br /&gt;
 jsonpointer-2.0      | 9 KB      | ######################################### | 100% &lt;br /&gt;
 jedi-0.19.0          | 825 KB    | ######################################### | 100% &lt;br /&gt;
 webcolors-1.13       | 18 KB     | ######################################### | 100% &lt;br /&gt;
 isoduration-20.11.0  | 17 KB     | ######################################### | 100% &lt;br /&gt;
 jupyterlab_server-2. | 59 KB     | ######################################### | 100% &lt;br /&gt;
 async-lru-2.0.4      | 15 KB     | ######################################### | 100% &lt;br /&gt;
 uri-template-1.3.0   | 23 KB     | ######################################### | 100% &lt;br /&gt;
 ipywidgets-8.1.0     | 111 KB    | ######################################### | 100% &lt;br /&gt;
 fqdn-1.5.1           | 14 KB     | ######################################### | 100% &lt;br /&gt;
 arrow-1.2.3          | 92 KB     | ######################################### | 100% &lt;br /&gt;
 sip-6.7.11           | 569 KB    | ######################################### | 100% &lt;br /&gt;
 openssl-3.1.2        | 2.5 MB    | ######################################### | 100% &lt;br /&gt;
 jsonschema-with-form | 7 KB      | ######################################### | 100% &lt;br /&gt;
 jupyter_events-0.7.0 | 21 KB     | ######################################### | 100% &lt;br /&gt;
 notebook-7.0.1       | 3.1 MB    | ######################################### | 100% &lt;br /&gt;
 Preparing transaction: done&lt;br /&gt;
 Verifying transaction: done&lt;br /&gt;
 Executing transaction: done&lt;br /&gt;
&lt;br /&gt;
= Ejecución de Jupyter =&lt;br /&gt;
&lt;br /&gt;
A continuación deberemos realizar dos pasos:&lt;br /&gt;
&lt;br /&gt;
# Identificar el nodo en el que nos encontramos&lt;br /&gt;
# Ejecutar jupyter&lt;br /&gt;
&lt;br /&gt;
== Identificación de nodo en el que nos encontremos ==&lt;br /&gt;
&lt;br /&gt;
Para identificar el nodo en el que nos encontremos ejecutaremos:&lt;br /&gt;
&lt;br /&gt;
 [dbowman@leftraru1 ~]$ hostname&lt;br /&gt;
 leftraru2&lt;br /&gt;
&lt;br /&gt;
La respuesta será uno de los nodos de acceso correspondientes a leftraru1, 2, 3 o 4.&lt;br /&gt;
&lt;br /&gt;
En nuestro ejemplo obtuvimos &amp;lt;code&amp;gt;leftraru2&amp;lt;/code&amp;gt;, dato que utilizaremos prontamente.&lt;br /&gt;
&lt;br /&gt;
== Ejecutar Jupyter ==&lt;br /&gt;
&lt;br /&gt;
En este paso ejecutaremos Jupyter indicando un puerto específico para posteriormente poder conectarnos desde nuestra computadora local.&lt;br /&gt;
&lt;br /&gt;
El comando a utilizar es:&lt;br /&gt;
&lt;br /&gt;
 [dbowman@leftraru1 ~]$ jupyter-notebook --no-browser --port 2346&lt;br /&gt;
&lt;br /&gt;
Obtendremos mucha información, pero nos deberemos fijar en la información similar a:&lt;br /&gt;
&lt;br /&gt;
 [C 2023-08-02 17:09:07.819 ServerApp] &lt;br /&gt;
    To access the server, open this file in a browser:&lt;br /&gt;
        file:///home/dbowman/.local/share/jupyter/runtime/jpserver-60187-open.html&lt;br /&gt;
    Or copy and paste one of these URLs:&lt;br /&gt;
        http://localhost:2346/tree?token=918029e46e54957ac797882f1&lt;br /&gt;
        http://127.0.0.1:2346/tree?token=918029e46e54957ac797882f1&lt;br /&gt;
&lt;br /&gt;
Deberemos tener en cuenta la información &amp;lt;code&amp;gt;http://localhost:2346/tree?token=918029e46e54957ac797882f1&amp;lt;/code&amp;gt; para nuestros próximos pasos.&lt;br /&gt;
&lt;br /&gt;
= Accediendo a Jupyter desde nuestra computadora local =&lt;br /&gt;
&lt;br /&gt;
Los siguientes pasos son realizados en una terminal &#039;&#039;&#039;desde&#039;&#039;&#039; nuestra computadora local.&lt;br /&gt;
&lt;br /&gt;
Los datos que necesitaremos son:&lt;br /&gt;
&lt;br /&gt;
* Nombre de host en donde ejecutamos los pasos anteriores &lt;br /&gt;
* URL de acceso al ejecutar Jupyter en el cluster&lt;br /&gt;
&lt;br /&gt;
Estos datos fueron obtenidos desde la sección anterior, lo que nos permitirá:&lt;br /&gt;
&lt;br /&gt;
# Crear un túnel de acceso&lt;br /&gt;
# Acceder a Jupyter&lt;br /&gt;
&lt;br /&gt;
== Creación de túnel de acceso ==&lt;br /&gt;
&lt;br /&gt;
En pasos previos obtuvimos que el nombre de host &amp;lt;code&amp;gt;leftraru2&amp;lt;/code&amp;gt;, con lo que podremos ejecutar desde nuestra computadora local un túnel SSH de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
 [david@HAL ~]$ ssh -NL 2346:localhost:2346 -l dbowman leftraru2.nlhpc.cl&lt;br /&gt;
&lt;br /&gt;
Se le solicitará su contraseña del cluster y si la autenticación es exitosa, se creará un túnel desde nuestra computadora al cluster bajo nuestro usuario y el host donde hemos estado trabajando.&lt;br /&gt;
&lt;br /&gt;
En el caso de haber obtenido otro nombre de host, por ejemplo &amp;lt;code&amp;gt;leftraru2&amp;lt;/code&amp;gt;, deberemos indicar dicho nombre de host en el comando ejecutado.&lt;br /&gt;
&lt;br /&gt;
== Accediendo a Jupyter ==&lt;br /&gt;
&lt;br /&gt;
Una vez que hemos lanzado el túnel, deberemos acceder mediante nuestro navegador preferido a la URL obtenida previamente.&lt;br /&gt;
&lt;br /&gt;
En nuestro caso bastará abrir: &#039;&#039;&#039;&amp;lt;code&amp;gt;http://localhost:2346/tree?token=918029e46e54957ac797882f1&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Y ya podrá acceder a utilizar Jupyter desde su navegador.&lt;br /&gt;
&lt;br /&gt;
= Lanzando tareas de Jupyter en los nodos de cómputo =&lt;br /&gt;
&lt;br /&gt;
Debemos tener en consideración que el uso de Jupyter suele realizarse mayormente de manera interactiva, lo que requerirá los cuatro pasos anteriores que hemos realizado:&lt;br /&gt;
&lt;br /&gt;
# Identificación de host en el cluster&lt;br /&gt;
# Ejecutar Jupyter y tomar nota de URL de acceso&lt;br /&gt;
# Crear túnel SSH desde nuestra computadora al cluster&lt;br /&gt;
# Acceder a Jupyter&lt;br /&gt;
&lt;br /&gt;
También es importante notar que estamos usando un entorno virtual, por lo que para ejecutar deberemos considerar lo siguiente:&lt;br /&gt;
&lt;br /&gt;
* Reservar recursos&lt;br /&gt;
* Activar entorno de conda utilizado&lt;br /&gt;
* Lanzar tarea a los nodos de cómputo&lt;br /&gt;
** Esta tarea se ejecutará pero no podrá ser utilizada de manera interactiva&lt;br /&gt;
&lt;br /&gt;
Entonces, si queremos lanzar nuestro archivo &amp;lt;code&amp;gt;HolaJupyter.ipynb&amp;lt;/code&amp;gt; creado en nuestro &#039;&#039;&#039;notebook&#039;&#039;&#039;, podremos crear un  script similar a:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 #---------------Script SBATCH - NLHPC ----------------&lt;br /&gt;
 #SBATCH -J jupyter-desde-sbatch&lt;br /&gt;
 #SBATCH -p main&lt;br /&gt;
 #SBATCH -n 1&lt;br /&gt;
 #SBATCH -c 1&lt;br /&gt;
 #SBATCH --mem-per-cpu=2300&lt;br /&gt;
 #SBATCH --mail-user=dbowman@hal.com&lt;br /&gt;
 #SBATCH --mail-type=ALL&lt;br /&gt;
 #SBATCH -o jupyter-desde-sbatch_%j.out&lt;br /&gt;
 source /home/dbowman/.bashrc&lt;br /&gt;
 eval &amp;quot;$(/home/lmod/software/Core/Miniconda3/4.5.12/bin/conda shell.bash hook)&amp;quot;&lt;br /&gt;
 conda activate mi_entorno_con_jupyter&lt;br /&gt;
 jupyter nbconvert --to notebook --execute HolaJupyter.ipynb --output=jupyter-output.ipynb&lt;br /&gt;
&lt;br /&gt;
Esto nos entregará información en el archivo de salida de la tarea &amp;lt;code&amp;gt;jupyter-desde-sbatch_234234.out&amp;lt;/code&amp;gt; similar a:&lt;br /&gt;
 [NbConvertApp] Converting notebook HolaJupyter.ipynb to notebook&lt;br /&gt;
 0.00s - Debugger warning: It seems that frozen modules are being used, which may&lt;br /&gt;
 0.00s - make the debugger miss breakpoints. Please pass -Xfrozen_modules=off&lt;br /&gt;
 0.00s - to python to disable frozen modules.&lt;br /&gt;
 0.00s - Note: Debugging will proceed. Set PYDEVD_DISABLE_FILE_VALIDATION=1 to disable this validation.&lt;br /&gt;
 0.00s - Debugger warning: It seems that frozen modules are being used, which may&lt;br /&gt;
 0.00s - make the debugger miss breakpoints. Please pass -Xfrozen_modules=off&lt;br /&gt;
 0.00s - to python to disable frozen modules.&lt;br /&gt;
 0.00s - Note: Debugging will proceed. Set PYDEVD_DISABLE_FILE_VALIDATION=1 to disable this validation.&lt;br /&gt;
 [NbConvertApp] Writing 1187 bytes to jupyter-output.ipynb&lt;br /&gt;
&lt;br /&gt;
Y el archivo de salida llamado &amp;lt;code&amp;gt;jupyter-output.ipynb&amp;lt;/code&amp;gt; tendrá un contenido similar a:&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;cells&amp;quot;: [&lt;br /&gt;
  {&lt;br /&gt;
   &amp;quot;cell_type&amp;quot;: &amp;quot;code&amp;quot;,&lt;br /&gt;
   &amp;quot;execution_count&amp;quot;: 1,&lt;br /&gt;
   &amp;quot;id&amp;quot;: &amp;quot;7832632e-7aeb-48d5-97f5-4aed8644fb0b&amp;quot;,&lt;br /&gt;
   &amp;quot;metadata&amp;quot;: {&lt;br /&gt;
    &amp;quot;execution&amp;quot;: {&lt;br /&gt;
     &amp;quot;iopub.execute_input&amp;quot;: &amp;quot;2023-08-02T22:06:21.689494Z&amp;quot;,&lt;br /&gt;
     &amp;quot;iopub.status.busy&amp;quot;: &amp;quot;2023-08-02T22:06:21.689137Z&amp;quot;,&lt;br /&gt;
     &amp;quot;iopub.status.idle&amp;quot;: &amp;quot;2023-08-02T22:06:21.701830Z&amp;quot;,&lt;br /&gt;
     &amp;quot;shell.execute_reply&amp;quot;: &amp;quot;2023-08-02T22:06:21.700906Z&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
   },&lt;br /&gt;
   &amp;quot;outputs&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
     &amp;quot;name&amp;quot;: &amp;quot;stdout&amp;quot;,&lt;br /&gt;
     &amp;quot;output_type&amp;quot;: &amp;quot;stream&amp;quot;,&lt;br /&gt;
     &amp;quot;text&amp;quot;: [&lt;br /&gt;
      &amp;quot;Hola Jupyter!\n&amp;quot;&lt;br /&gt;
     ]&lt;br /&gt;
    }&lt;br /&gt;
   ],&lt;br /&gt;
   &amp;quot;source&amp;quot;: [&lt;br /&gt;
    &amp;quot;print(\&amp;quot;Hola Jupyter!\&amp;quot;)&amp;quot;&lt;br /&gt;
   ]&lt;br /&gt;
  },&lt;br /&gt;
 ...&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
= Conclusión =&lt;br /&gt;
&lt;br /&gt;
El uso de Jupyter puede resultar de gran ayuda, y en conjunto con la potencia de los nodos de cómputo se transforma en una herramienta útil y flexible.&lt;br /&gt;
&lt;br /&gt;
Se tiene una curva de aprendizaje inicial poco sencilla al requerir de varios pasos, pero una vez dominado, podrá repetir sus pasos una y otra vez según sus requerimientos.&lt;br /&gt;
&lt;br /&gt;
= Más información =&lt;br /&gt;
&lt;br /&gt;
Puede leer sobre Conda en el siguiente [https://wiki.nlhpc.cl/Uso_de_conda enlace].&lt;br /&gt;
&lt;br /&gt;
Puede leer sobre Jupyter en la página web oficial en el siguiente [https://docs.jupyter.org/en/latest/ enlace].&lt;/div&gt;</summary>
		<author><name>Jmorales</name></author>
	</entry>
	<entry>
		<id>https://wiki.nlhpc.cl/index.php?title=Siesta&amp;diff=775</id>
		<title>Siesta</title>
		<link rel="alternate" type="text/html" href="https://wiki.nlhpc.cl/index.php?title=Siesta&amp;diff=775"/>
		<updated>2024-05-02T21:59:20Z</updated>

		<summary type="html">&lt;p&gt;Jmorales: /* Ejemplo de Lanzador */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== ¿Qué es? ==&lt;br /&gt;
SIESTA (Spanish Initiative for Electronic Simulations with Thousands of Atoms) es un método original y una implementación de software para efectuar cálculos de estructura electrónica y simulaciones de dinámica molecular ab initio para moléculas y sólidos.&lt;br /&gt;
&lt;br /&gt;
== Modulos ==&lt;br /&gt;
Se encuentra disponible en:&lt;br /&gt;
&lt;br /&gt;
=== [https://wiki.nlhpc.cl/Environment_Modules Environment Modules] ===&lt;br /&gt;
* siesta/3.2&lt;br /&gt;
* siesta/4.0&lt;br /&gt;
* siesta/trunk-462&lt;br /&gt;
* siesta/trunk-663&lt;br /&gt;
== Ejemplo de Lanzador ==&lt;br /&gt;
Ejemplo de SBATCH para enviar al cluster:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --job-name=&amp;quot;siesta&amp;quot;&lt;br /&gt;
#SBATCH --partition=&amp;quot;general&amp;quot;&lt;br /&gt;
#SBATCH --nodes=6 # lo máximo seria 6, lo mínimo 1&lt;br /&gt;
#SBATCH --ntasks-per-node=20 # ocuparía 120 cores en total&lt;br /&gt;
#SBATCH --mem-per-cpu=4363&lt;br /&gt;
#SBATCH --output=%x_%j.out&lt;br /&gt;
#SBATCH --error=%x_%j.err&lt;br /&gt;
#SBATCH --exclude=cnf[001-004]&lt;br /&gt;
&lt;br /&gt;
module load siesta/trunk-663&lt;br /&gt;
export OMP_NUM_THREADS=1&lt;br /&gt;
&lt;br /&gt;
DTMP=&amp;quot;/tmp/${SLURM_JOB_ID}&amp;quot;  # recomendamos siempre trabajar en el /tmp del nodo local (al menos 200G disponibles en general)&lt;br /&gt;
mkdir $DTMP # creamos el directorio&lt;br /&gt;
cp ejemplo.fdf *psf *DM $DTMP # copiamos los archivos fuente hacia /tmp&lt;br /&gt;
cd $DTMP # entramos al directorio&lt;br /&gt;
srun siesta &amp;lt; ejemplo.fdf # la salida del programa queda en el archivo de log&lt;br /&gt;
cp * $HOME/siesta/ # copiamos a nuestro $HOME los resultados&lt;br /&gt;
cd $HOME/siesta/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Al terminar la ejecución [https://wiki.nlhpc.cl/SISTEMA_GESTOR_DE_RECURSOS#SLURM_Workload_Manager Slurm] elimina todos los archivos del usuario en /tmp&lt;br /&gt;
&lt;br /&gt;
== Referencias ==&lt;br /&gt;
* [https://cfd.direct/openfoam/linux-guide/ Siesta Web Page]&lt;br /&gt;
* [https://wiki.rc.usf.edu/index.php/SIESTA#Submitting_Jobs Submitting Jobs]&lt;br /&gt;
* [http://hpc.mediawiki.hull.ac.uk/Applications/Siesta hpc.mediawiki.hull.ac.uk/Applications/Siesta]&lt;/div&gt;</summary>
		<author><name>Jmorales</name></author>
	</entry>
	<entry>
		<id>https://wiki.nlhpc.cl/index.php?title=Monitoreo&amp;diff=774</id>
		<title>Monitoreo</title>
		<link rel="alternate" type="text/html" href="https://wiki.nlhpc.cl/index.php?title=Monitoreo&amp;diff=774"/>
		<updated>2024-05-02T21:58:42Z</updated>

		<summary type="html">&lt;p&gt;Jmorales: /* ¿Como listo las tareas? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== ¿Como listo las tareas? ==&lt;br /&gt;
Ejecuto el comando [https://slurm.schedmd.com/squeue.html squeue] para conocer por ejemplo el estado, tiempo de ejecución e identificador de los trabajos [https://wiki.nlhpc.cl/SISTEMA_GESTOR_DE_RECURSOS SLURM]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[usuario@leftraru1 ~]$ squeue -o &amp;quot;%.15i %.6P %.8j %.20S %.11M %.11L %.20V %.2t %.10q %.4C %.2D %.7W %N &amp;quot; -S -t,-Q&lt;br /&gt;
&lt;br /&gt;
JOBID    PARTIT   NAME    START_TIME           TIME       TIME_LEFT  SUBMIT_TIME         ST  QOS CPUS NO LICENSE NODELIST &lt;br /&gt;
12863561  general   test04  2024-02-08T13:57:53  1-20:25:20 1-03:34:40 2018-07-08T13:57:26  R  120  5   1  (null)  cn000 &lt;br /&gt;
12864082  general   test02  2024-02-09T10:44:15    23:38:58 2-00:21:02 2018-07-09T10:43:51  R  120  10  1  (null)  cn001 &lt;br /&gt;
12865333  general   test01  2024-02-10T17:16:38        0:00 3-00:00:00 2018-07-10T09:30:22  PD 120  10  1  (null)  &lt;br /&gt;
12865334  general   test06  2024-02-10T17:49:42        0:00 3-00:00:00 2018-07-10T09:38:13  PD 120  10  1  (null)  &lt;br /&gt;
12865335  general   test09  2024-02-11T07:42:16        0:00 3-00:00:00 2018-07-10T09:28:05  PD 120  20  1  (null)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ¿Como monitoreo los recursos utilizados por mi tarea? ==&lt;br /&gt;
=== Conectándose al nodo ===&lt;br /&gt;
Siempre y cuando tengamos tareas corriendo en un nodo, podemos entrar en este vía SSH.&lt;br /&gt;
&lt;br /&gt;
==== * uptime ====&lt;br /&gt;
Para conocer la carga del nodo, cuantos procesos por core existen actualmente.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[usuario@leftraru1 ~]# ssh cn109&lt;br /&gt;
usuario@cn000 s password:&lt;br /&gt;
[usuario@cn000 ~]# uptime&lt;br /&gt;
10:40:59 up 27 days, 16:46,  1 user,  load average: 17.04, 13.76, 13.09&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== * User Stats ====&lt;br /&gt;
Este script permite revisar:&lt;br /&gt;
&lt;br /&gt;
===== La memoria por core (en kb) =====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[usuario@cn000 ~]$ /home/apps/nlhpc/bin/user_stats.sh mem&lt;br /&gt;
00 371695616&lt;br /&gt;
01 373268480&lt;br /&gt;
02 367038464&lt;br /&gt;
03 363290624&lt;br /&gt;
04 367382528&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Cantidad de procesos por core =====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[usuario@cn000 ~]$ /home/apps/nlhpc/bin/user_stats.sh load&lt;br /&gt;
00 1&lt;br /&gt;
01 2&lt;br /&gt;
02 1&lt;br /&gt;
03 1&lt;br /&gt;
04 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== * htop ====&lt;br /&gt;
Es un visor de procesos en linux, basado en ncurses.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[usuario@cn109 ~]# htop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Htop.png|no|htop]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
=== A través de Ganglia ===&lt;br /&gt;
Ganglia es un sistema de monitoreo distribuido para sistemas HPC, por cada uno de los nodos de cómputo de las diferentes particiones están disponibles los gráficos de memoria, carga, porcentaje de cpu usada, tráfico, etc.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Ganglia.png|no|300px]]&lt;br /&gt;
&lt;br /&gt;
=== A través de [http://dashboard.nlhpc.cl/ Dashboard] ===&lt;br /&gt;
Panel de visualización del estado de los nodos. Muestra una vista rápida del estado de los nodos (de login y de cómputo) y uso general del cluster, ademas de encontrar el listado de tareas en ejecución, pendientes, históricos.&lt;br /&gt;
&lt;br /&gt;
=== En el correo de notificación ===&lt;br /&gt;
Al terminar una tarea se adjuntan las siguientes gráficas:&lt;br /&gt;
&lt;br /&gt;
==== Porcentaje de uso por core ====&lt;br /&gt;
[[Archivo:Correo CPU.png|no]]&lt;br /&gt;
&lt;br /&gt;
==== Memoria utilizada por core ====&lt;br /&gt;
[[Archivo:Correo MEMxCPU.png|no]]&lt;br /&gt;
&lt;br /&gt;
==== Archivo report.log ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
job_id=12668XXX user=usuario mail=None start_time=2018-07-09T06:51:34 running_time=3:53:28 cores_total=10 nodes_raw=cn094 alarm_cpu=True alarm_memory=False watch|avg|std|ptotal=10800|30|20|50 ptcw=70 command=/home/usuario/tarea.sh nodes={&#039;cn094&#039;: {&#039;mem&#039;: &#039;10000&#039;, &#039;cpu&#039;: [0, 2, 3, 4, 5, 6, 7, 8, 9, 10]}} alarm_count=1 last_time=1531147611 iter=2 job_cancel=None modules=[]&lt;br /&gt;
n=cn094&lt;br /&gt;
&lt;br /&gt;
  mem max:3586 resv:10000&lt;br /&gt;
  cpu=10 avg=91.00 std=45.77 / all avg=0.00 std=0.00&lt;br /&gt;
  cpu= 0 avg=98.19 std=44.53 / all avg=0.00 std=0.00&lt;br /&gt;
* cpu= 3 avg=0.56 std=0.50 / all avg=0.47 std=0.50&lt;br /&gt;
* cpu= 2 avg=0.86 std=0.35 / all avg=0.66 std=0.47&lt;br /&gt;
* cpu= 5 avg=0.64 std=0.48 / all avg=0.49 std=0.50&lt;br /&gt;
* cpu= 4 avg=0.53 std=0.50 / all avg=0.40 std=0.49&lt;br /&gt;
  cpu= 7 avg=82.11 std=48.93 / all avg=0.00 std=0.00&lt;br /&gt;
* cpu= 6 avg=0.56 std=0.50 / all avg=0.45 std=0.50&lt;br /&gt;
* cpu= 9 avg=0.47 std=0.50 / all avg=0.36 std=0.48&lt;br /&gt;
* cpu= 8 avg=0.72 std=0.45 / all avg=0.79 std=0.41&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* En mem max:&#039;&#039;&#039;3586&#039;&#039;&#039; resv:10000 se destaca que el máximo de memoria utilizada por la tarea ha sido de 3568M&lt;br /&gt;
* Por cada una de los cores se despliega: el uso promedio de cada core, la desviación estándar en las últimas 3 horas / del total de tiempo de ejecución.&lt;/div&gt;</summary>
		<author><name>Jmorales</name></author>
	</entry>
	<entry>
		<id>https://wiki.nlhpc.cl/index.php?title=SISTEMA_GESTOR_DE_RECURSOS&amp;diff=769</id>
		<title>SISTEMA GESTOR DE RECURSOS</title>
		<link rel="alternate" type="text/html" href="https://wiki.nlhpc.cl/index.php?title=SISTEMA_GESTOR_DE_RECURSOS&amp;diff=769"/>
		<updated>2024-04-29T22:02:04Z</updated>

		<summary type="html">&lt;p&gt;Jmorales: /* Programar tarea (uso de scrontab) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== SLURM Workload Manager ==&lt;br /&gt;
Es un sistema de programación de trabajos y gestión de clústeres de código abierto, tolerante a fallas y altamente escalable para clústeres Linux grandes y pequeños.&lt;br /&gt;
&lt;br /&gt;
Como administrador de carga de trabajo de clúster, Slurm tiene tres funciones clave. Primero, asigna acceso exclusivo y / o no exclusivo a los recursos (nodos de cómputo) a los usuarios durante un período de tiempo para que puedan realizar el trabajo. En segundo lugar, proporciona un marco para iniciar, ejecutar y monitorear el trabajo (normalmente un trabajo paralelo) en el conjunto de nodos asignados. Finalmente, arbitra la contención de recursos mediante la gestión de una cola de trabajo pendiente.&lt;br /&gt;
&lt;br /&gt;
SLURM es el gestor de colas instalado en muchos de los súper computadores del [https://www.top500.org/ TOP500], y también en el clúster del NLHPC. Si Ud. quiere lanzar tareas dentro de Leftaru, debe hacerlo a través de Slurm.&lt;br /&gt;
&lt;br /&gt;
== Conceptos clave ==&lt;br /&gt;
SLURM gestiona trabajos de usuario que tienen las siguientes características clave:&lt;br /&gt;
&lt;br /&gt;
* Conjunto de recursos solicitados:&lt;br /&gt;
** Número de recursos informáticos: nodos (incluidas todas sus CPUs y núcleos) o CPUs (incluidos todos sus núcleos) o solo núcleos&lt;br /&gt;
** Cantidad de memoria: por nodo o por CPU (lógica)&lt;br /&gt;
** Tiempo necesario para que las tareas del usuario completen su trabajo&lt;br /&gt;
* Una partición de nodo solicitada (cola de trabajos)&lt;br /&gt;
* Un nivel de calidad de servicio (QoS) solicitado que otorga a los usuarios accesos específicos&lt;br /&gt;
* Una cuenta solicitada con recursos limitados&lt;br /&gt;
&lt;br /&gt;
De manera predeterminada, los usuarios envían trabajos a una partición particular (marcada como tal para todos los usuarios) y bajo una cuenta particular (preestablecida por usuario).&lt;br /&gt;
&lt;br /&gt;
== Particiones SLURM ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 60%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nombre Particion&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nodos&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;CPUs&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;RAM&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Descripción&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;main&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;27&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;256&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;768GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;general&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;48&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;44&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;187GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;largemem&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;9&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;44&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;765GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;v100&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;44&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;187GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;4 GPUs Nvidia Tesla V100.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;mi100&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;128&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;502GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2 GPUs AMD Instinct MI100.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;debug&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;4&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;20&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;59GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Destinados a pruebas de máximo 30 minutos.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Introducción a los comandos slurm ==&lt;br /&gt;
&amp;lt;table class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 60%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Comando SLURM&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Descripción&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;srun&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ejecutar un comando en nodos de cómputo asignados.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;sbatch&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;presentar un script de trabajo&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;squeue&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Mostrar estado de los trabajos en la cola.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;scancel&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;eliminar un trabajo.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;sinfo&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Muestra el estado de los nodos de cómputo.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
Estos son los comandos básicos utilizados para realizar la mayoría de las operaciones básicas con SLURM.&lt;br /&gt;
&lt;br /&gt;
=== Estado de nodos ===&lt;br /&gt;
Para consultar el uso de nuestra infraestructura y qué particiones están más libres, le recomendamos el comando sinfo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# sinfo&lt;br /&gt;
PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST&lt;br /&gt;
all        up    infinite    16     mix   cn[001,005-006,010,034-035,037,041,045,050,057,108,121],sn[012,016,037]&lt;br /&gt;
all        up    infinite    95     alloc cn[011-033,038-044,046-049,071-120],cnf[001-004],sn[001-011,038-041,043-044]&lt;br /&gt;
all        up    infinite    33     idle  fn[001-009],gn[001-002],sn[018-035,045-048]&lt;br /&gt;
main*      up    infinite    20     alloc mn[001-011,014-022]&lt;br /&gt;
main*      up    infinite    7      idle [012-013,023-027]&lt;br /&gt;
debug      up    infinite    4      idle  leftraru[1-2]&lt;br /&gt;
general    up    infinite    4      mix   sn[012,016,037,042]&lt;br /&gt;
general    up    infinite    22     alloc sn[001-011,013-015,017,036,038-041,043-044]&lt;br /&gt;
general    up    infinite    22     idle  sn[018-035,045-048]&lt;br /&gt;
largemem   up    infinite    9      idle  fn[001-009]&lt;br /&gt;
v100       up    infinite    2      idle  gn[001-002]&lt;br /&gt;
mi100      up    infinite    1      idle  gna001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fijándose en el texto resaltado de la salida del comando sinfo, se puede comprobar que en la partición main hay 20 nodos que están completamente ocupados (estado alloc), 7 nodos que están libres (idle); por otro lado, en la partición general hay 22 nodos completamente ocupados, 4 parcialmente ocupados y 22 libres. Dado este escenario, está claro que debería de lanzar sus ejecuciones en los nodos de la partición general, por las razones anteriormente expuestas.&lt;br /&gt;
&lt;br /&gt;
Para lanzar en la partición general, debe tener en cuenta que tiene que indicar en su script que se use dicha partición en vez de, probablemente, main. Por supuesto, en esta partición cambian las características técnicas, se pasan a tener 44 cores por nodo (en vez de 256 en main) y una capacidad RAM de 187GB (en vez de 768GB en main). Puede ver más información de las particiones en este link(agregar link), donde podrá revisar que con la inclusión de Guacolda hemos añadido nodos con hasta 765GB de memoria RAM y nodos con GPUs Nvidia Tesla V100 y AMD Instinct MI100 .&lt;br /&gt;
&lt;br /&gt;
Para ver los nodos disponibles y poder determinar en que partición lanzar los trabajos se recomienda utilizar el siguiente comando.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;[prueba@leftraru1 ~]$ sinfo -o &amp;quot;%10P %6D %10t %10m %c&amp;quot; -t idle| egrep &amp;quot;PARTITION|main|general|largemem|v100&amp;quot;&lt;br /&gt;
PARTITION  NODES  STATE      MEMORY     CPUS&lt;br /&gt;
main*       27    idle       768000      256&lt;br /&gt;
general     2     idle       187000      44&lt;br /&gt;
largemem    7     idle       765000      44&lt;br /&gt;
v100        1     idle       187000      44 &lt;br /&gt;
mi100       1     idle       515047      128 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
El comando anterior muestra que main tiene 27 nodos libres, en este caso es recomendado lanzar en en main para evitar que el trabajo quede en cola por falta de recursos en otros nodos.&lt;br /&gt;
&lt;br /&gt;
Otro Ejemplo, se muestra sólo una partición específica&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;[prueba@leftraru1 ~]$ sinfo -p main&lt;br /&gt;
PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST&lt;br /&gt;
main*        up   infinite     15    mix mn[001-008,014-020]&lt;br /&gt;
main*        up   infinite     12   idle mn[009-013,021-027]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Comprobación del estado de tareas ===&lt;br /&gt;
squeue - Muestra el estatus de los trabajos&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;squeue                  # tus trabajos&lt;br /&gt;
squeue -u &amp;amp;lt;username&amp;amp;gt;    # trabajos por usuario &amp;amp;lt;username&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
squeue: Comprobar estados de los trabajos&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;&amp;quot; class=&amp;quot;mw-highlight mw-content-ltr&amp;quot; dir=&amp;quot;ltr&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  JOBID        PARTITION     NAME     USER    ST       TIME  	NODES 	NODELIST(REASON)&lt;br /&gt;
13951858_1     general	     test1    test1    R   1-18:35:14      2    cn[009-010]&lt;br /&gt;
13951857_2     general       test2    test1    R   1-18:36:11      2    cn[099-100]&lt;br /&gt;
13956453       gpu           test3    test3    R   1-03:42:08      1    cn039&lt;br /&gt;
13956449       largemem      test4    test4    R   1-05:42:08      1    cn044&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puede utilizar squeue para saber el estado de una o varias de sus tareas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ squeue -o &amp;quot;%.15i %.6P %.8j %.20S %.11M %.11L %.20V %.10Q %.4C %.2D %.6m&amp;quot; -S -t,-Q&lt;br /&gt;
 JOBID   PARTIT     NAME      START_TIME          TIME      TIME_LEFT     SUBMIT_TIME       PRIORITY CPUS NO MIN_ME&lt;br /&gt;
10837561 general   TEST1   2018-06-18T18:51:01    19:00:31  2-04:59:29  2018-06-18T18:51:01  119972    1  1  1000M&lt;br /&gt;
10838562 general   TEST2   2018-06-19T11:30:47    2:20:45   2-21:39:15  2018-06-19T11:30:46  119946    1  1  1000M&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
para mas opciones puede revisar con el comando [https://slurm.schedmd.com/squeue.html man squeue] las opciones restantes.&lt;br /&gt;
&lt;br /&gt;
=== Códigos de ESTADO de los trabajos ===&lt;br /&gt;
&lt;br /&gt;
Los trabajos suelen pasar por varios estados durante su ejecución. Los estados típicos son PENDIENTE, EN EJECUCIÓN, SUSPENDIDO, FINALIZANDO y TERMINADO. A continuación se explica cada estado.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;BF&#039;&#039;&#039; BOOT_FAIL&lt;br /&gt;
    Trabajo finalizado debido a un fallo de arranque, normalmente debido a un fallo de hardware (por ejemplo, no se puede arrancar el nodo o bloque y el trabajo no se puede volver a poner en cola). &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CA&#039;&#039;&#039; CANCELADO&lt;br /&gt;
    El trabajo ha sido cancelado explícitamente por el usuario o el administrador del sistema. El trabajo puede haberse iniciado o no. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CD&#039;&#039;&#039; TERMINADO&lt;br /&gt;
    El trabajo ha terminado todos los procesos en todos los nodos con un código de salida de cero. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CF&#039;&#039;&#039; CONFIGURANDO&lt;br /&gt;
    Al trabajo se le han asignado recursos, pero están esperando a que estén listos para su uso (por ejemplo, arrancando). &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CG&#039;&#039;&#039; COMPLETANDO&lt;br /&gt;
    El trabajo está en proceso de finalización. Algunos procesos en algunos nodos pueden estar aún activos. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DL&#039;&#039;&#039; FECHA LÍMITE&lt;br /&gt;
    El trabajo ha finalizado en la fecha límite. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;F&#039;&#039;&#039; FALLÓ&lt;br /&gt;
    Trabajo finalizado con un código de salida distinto de cero u otra condición de fallo. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NF&#039;&#039;&#039; NODO_FAIL&lt;br /&gt;
    Trabajo finalizado debido al fallo de uno o más nodos asignados. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;OOM&#039;&#039;&#039; OUT_OF_MEMORY&lt;br /&gt;
    El trabajo ha experimentado un error de memoria insuficiente. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PD&#039;&#039;&#039; PENDIENTE&lt;br /&gt;
    El trabajo está pendiente de asignación de recursos. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PR&#039;&#039;&#039; PREEMPTED&lt;br /&gt;
    El trabajo ha finalizado debido a una espera. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;R&#039;&#039;&#039; EN MARCHA&lt;br /&gt;
    El trabajo tiene actualmente una asignación. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RD&#039;&#039;&#039; RESV_DEL_HOLD&lt;br /&gt;
    El trabajo se está reteniendo después de que se eliminara la reserva solicitada. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RF&#039;&#039;&#039; REQUEUE_FED&lt;br /&gt;
    El trabajo está siendo solicitado por una federación. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RH&#039;&#039;&#039; REQUEUE_HOLD&lt;br /&gt;
    Se está volviendo a poner en cola un trabajo retenido. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RQ&#039;&#039;&#039; REQUEUED&lt;br /&gt;
    Se está poniendo en cola un trabajo que se está completando. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RS&#039;&#039;&#039; CAMBIO DE TAMAÑO&lt;br /&gt;
    El trabajo está a punto de cambiar de tamaño. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RV&#039;&#039;&#039; REVOCADO&lt;br /&gt;
    El trabajo se ha retirado del clúster debido a que otro clúster ha iniciado el trabajo. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SI&#039;&#039;&#039; SEÑALANDO&lt;br /&gt;
    El trabajo está siendo señalizado. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SE&#039;&#039;&#039; SPECIAL_EXIT&lt;br /&gt;
    El trabajo se ha puesto en cola en un estado especial. Este estado puede ser establecido por los usuarios, normalmente en EpilogSlurmctld, si el trabajo ha terminado con un valor de salida particular. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SO&#039;&#039;&#039; STAGE_OUT&lt;br /&gt;
    El trabajo está preparando los archivos. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ST&#039;&#039;&#039; PARADO&lt;br /&gt;
    El trabajo tiene una asignación, pero la ejecución se ha detenido con la señal SIGSTOP. Los CPUS han sido retenidos por este trabajo. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;S&#039;&#039;&#039; SUSPENDIDO&lt;br /&gt;
    El trabajo tiene una asignación, pero se ha suspendido la ejecución y se han liberado CPUs para otros trabajos. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TO&#039;&#039;&#039; TIMEOUT&lt;br /&gt;
    El trabajo ha finalizado al alcanzar su límite de tiempo.&lt;br /&gt;
&lt;br /&gt;
=== Cancelar un trabajo ===&lt;br /&gt;
Con scancel se puede cancelar un trabajo en ejecución&lt;br /&gt;
&amp;lt;pre&amp;gt;scancel &amp;amp;lt;jobID&amp;amp;gt;         # Matar proceso &amp;amp;lt;jobID&amp;amp;gt;. (puede obtener el ID del job con &amp;quot;squeue&amp;quot;)&lt;br /&gt;
scancel -u &amp;amp;lt;username&amp;amp;gt;   # Matar proceso por usuario &amp;amp;lt;username&amp;amp;gt;. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;[prueba@leftraru1 ~]$ squeue -u prueba&lt;br /&gt;
 JOBID  PARTITION    NAME     USER    ST   TIME  NODES  NODELIST(REASON)&lt;br /&gt;
 45594    main       TEST    prueba   R    0:59   3     mn[001-003]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;[prueba@leftraru1 ~]$ scancel 45594&lt;br /&gt;
[prueba@leftraru1 ~]$ squeue -u prueba&lt;br /&gt;
JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)&lt;br /&gt;
[prueba@leftraru1 ~]$&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ver estado de trabajos ===&lt;br /&gt;
Para revisar el detalle de las opciones de un trabajo: scontrol show job&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ scontrol show job 10837561&lt;br /&gt;
JobId=10837561 JobName=TEST1&lt;br /&gt;
   UserId=usuario(1000) GroupId=group(1000) MCS_label=N/A&lt;br /&gt;
   Priority=1100 Nice=0 Account=account QOS=120&lt;br /&gt;
   JobState=RUNNING Reason=None Dependency=(null)&lt;br /&gt;
   Requeue=0 Restarts=0 BatchFlag=1 Reboot=0 ExitCode=0:0&lt;br /&gt;
   DerivedExitCode=0:0&lt;br /&gt;
   RunTime=19:03:08 TimeLimit=3-00:00:00 TimeMin=N/A&lt;br /&gt;
   SubmitTime=2018-06-18T18:51:01 EligibleTime=2018-06-18T18:51:01&lt;br /&gt;
   StartTime=2018-06-18T18:51:01 EndTime=2018-06-21T18:51:01 Deadline=N/A&lt;br /&gt;
   PreemptTime=None SuspendTime=None SecsPreSuspend=0&lt;br /&gt;
   Partition=main AllocNode:Sid=leftraru2:5471&lt;br /&gt;
   ReqNodeList=(null) ExcNodeList=(null)&lt;br /&gt;
   NodeList=cn021&lt;br /&gt;
   BatchHost=cn021&lt;br /&gt;
   NumNodes=1 NumCPUs=1 NumTasks=1 CPUs/Task=1 ReqB:S:C:T=0:0:*:*&lt;br /&gt;
   TRES=cpu=1,mem=1000M,node=1&lt;br /&gt;
   Socks/Node=* NtasksPerN:B:S:C=1:0:*:* CoreSpec=*&lt;br /&gt;
     Nodes=cn021 CPU_IDs=1 Mem=1000 GRES_IDX=&lt;br /&gt;
   MinCPUsNode=1 MinMemoryCPU=1000M MinTmpDiskNode=0&lt;br /&gt;
   Features=(null) DelayBoot=00:00:00&lt;br /&gt;
   Gres=(null) Reservation=(null)&lt;br /&gt;
   OverSubscribe=OK Contiguous=0 Licenses=matlab Network=(null)&lt;br /&gt;
   Command=/home/usuario/script.sh&lt;br /&gt;
   WorkDir=/home/usuario/&lt;br /&gt;
   StdErr=/home/usuario/10837561_%x.err&lt;br /&gt;
   StdIn=/dev/null&lt;br /&gt;
   StdOut=/home/usuario/10837561_%x.out&lt;br /&gt;
   Power=&lt;br /&gt;
   BatchScript=&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para ver el script asociado a un trabajo: scontrol write batch_script &amp;lt;job_id&amp;gt; -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ scontrol write batch_script 10837561 -&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -J nombre_del_trabajo&lt;br /&gt;
#SBATCH -p main&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
#SBATCH --ntasks-per-node=1&lt;br /&gt;
#SBATCH --mail-user=usaurio@correo.cl&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH -o nombre_del_trabajo%j_%x.out&lt;br /&gt;
#SBATCH -e nombre_del_trabajo%j_%x.err&lt;br /&gt;
#SBATCH --license=matlab &lt;br /&gt;
 &lt;br /&gt;
ml MATLAB/2017a&lt;br /&gt;
&lt;br /&gt;
matlab -nodisplay -nosplash -nodesktop &amp;lt; programa.m&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ejecutando trabajos ==&lt;br /&gt;
Actualmente contamos con 2 metodos de enviar trabajos bajo SLURM: &#039;&#039;&#039;sbatch&#039;&#039;&#039; and &#039;&#039;&#039;srun&#039;&#039;&#039;. A veces puede ser ventajoso ejecutar un solo comando en el clúster como prueba o realizar rápidamente una operación con recursos adicionales. &#039;srun&#039; permite a los usuarios hacer esto, y comparte las mismas variables que &#039;sbatch&#039; . STDOUT y STDERR para un trabajo &#039;srun&#039; serán redirigidos a la pantalla del usuario. Ctrl-C cancelará un trabajo srun. &#039;&#039;&#039;sbatch&#039;&#039;&#039; enviará un script de trabajo para que lo ejecute el clúster. Los scripts de trabajo bajo SLURM son simplemente scripts de shell (* .sh) con un conjunto de solicitudes de recursos en la parte superior del script.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Uso básico de srun:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
srun &amp;lt;algúnComando&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de salida (ejecutando el comando &amp;quot;hostname&amp;quot; para saber en que nodo se está ejecutando):&lt;br /&gt;
&amp;lt;pre&amp;gt; $ srun hostname&lt;br /&gt;
  cn003&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para enviar un script de trabajo a SLURM:&lt;br /&gt;
&amp;lt;pre&amp;gt;sbatch nombreScript.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example output:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sbatch test-job.sh&lt;br /&gt;
Submitted batch job 1169&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Variables Slurm ===&lt;br /&gt;
Las variables en esta sección son obligatorias, y SLURM las determina para determinar dónde y cuándo se ejecutarán sus trabajos. Si no asigna un valor para estos, el planificador asignará a sus trabajos el valor predeterminado. Si no solicita específicamente recursos para un trabajo, se le asignará un conjunto de recursos predeterminados. Para obtener una lista de todas las variables disponibles, consulte la documentación de SLURM en http://slurm.schedmd.com/sbatch.html. Las variables de este artículo estaban cubiertas porque eran las más relevantes para los casos de uso típicos.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Comando SLURM&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Descripción&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;--mem-per-cpu=&amp;amp;lt;megabytes&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Memoria requerida para el trabajo por CPU (en MegaBytes). El valor predeterminado es 1024 MB.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-p &amp;amp;lt;partition&amp;amp;gt;, --partition=&amp;amp;lt;partition&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Enviar un trabajo a una partición específica.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-n, --ntasks=&amp;amp;lt;cantidad de tareas&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Número de tareas que serán asignadas para el trabajo.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-c &amp;amp;lt;cpus&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Esta es la cantidad de CPU que necesita su trabajo. Tenga en cuenta que SLURM es relativamente generoso con las CPU, y el valor especificado aquí es el número &amp;quot;mínimo&amp;quot; de CPU que se asignará a su trabajo. Si hay CPU adicionales disponibles en un nodo más allá de lo solicitado, su trabajo recibirá esas CPU hasta que otros trabajos las necesiten. El valor predeterminado es 1 CPU. Intentar usar más CPU de las que se le asignaron dará como resultado que sus procesos adicionales se turnen en la misma CPU (ralentizando su trabajo).&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-J &amp;amp;lt;name&amp;amp;gt;, --jobname=&amp;amp;lt;name&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Especifica un nombre a tu trabajo.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;--mail-type=BEGIN,END,FAIL,ALL&amp;lt;b&amp;gt; and &amp;lt;/b&amp;gt;--mail-user=&amp;amp;lt;emailAddress&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Enviar por correo electrónico cuando su trabajo comienza / termina / falla. Puede especificar varios valores para esto (separados por comas) si es necesario.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-o &amp;amp;lt;STDOUT_log&amp;amp;gt;, --output=&amp;amp;lt;STDOUT_log&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Redirija la salida a los archivos de registro que especifique. Por defecto, ambos, STDOUT and STDERR son enviados a este archivo. Puedes especificar %j como parte del nombre de archivo de registro para indicar la ID del trabajo (como ejemplo, &amp;quot;#SBATCH -o ouptut_%j.o&amp;quot; redirigiría la salida a &amp;quot;output_123456.o&amp;quot;).&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-e &amp;amp;lt;STDERR_log&amp;amp;gt;, --error=&amp;amp;lt;STDERR_log&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Redireccionar STDERR a un archivo separado. Funciona exactamente igual que &amp;quot;-o&amp;quot;.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-t &amp;amp;lt;days-hours:minutes:seconds&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Walltime para tu trabajo. La duración del Walltime es el tiempo que espera que su trabajo se ejecute.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-a, --array=&amp;amp;lt;índices&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Envía una lista (arreglo) de trabajos identicos. Solo aplica para sbatch.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los scripts de trabajo especifican los recursos solicitados y otras consideraciones especiales con comentarios especiales &amp;quot;#SBATCH&amp;quot; en la parte superior de un script de trabajo. Aunque muchas de estas opciones son opcionales, las varibles que se ocupan de solicitudes de recursos (CPU, memoria y tiempo) son obligatorias. Todas las variables deben agregarse a sus scripts de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#SBATCH &amp;lt;variable&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Para especificar un nombre al job, por ejemplo, debe agregar lo siguiente a su secuencia de comandos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#SBATCH --job-name=nombreDeTrabajo&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Enviar un script===&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 #SBATCH -J example&lt;br /&gt;
 #SBATCH -p general&lt;br /&gt;
 #SBATCH -n 1&lt;br /&gt;
 #SBATCH --output=example_%j.out&lt;br /&gt;
 #SBATCH --error=example_%j.err&lt;br /&gt;
 #SBATCH --mail-user=user@example.com&lt;br /&gt;
 #SBATCH --mail-type=ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Como debe comenzar un script en Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre del trabajo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -J example&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre la partición donde desea ejecutar el Job:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -p general&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Número de tareas:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de salida:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -o example_%j.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de error:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -e example_%j.err&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Correo para notificaciones:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-user=user@example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Enviar correo en todos casos (verificar opciones arriba):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Programar tarea (uso de scrontab) ===&lt;br /&gt;
&#039;&#039;&#039;scrontab&#039;&#039;&#039; es una implementación del clásico planificador de tareas de linux &#039;&#039;&#039;crontab&#039;&#039;&#039; donde se guarda un listado de comandos a ejecutar en un tiempo determinado por el usuario.&lt;br /&gt;
&lt;br /&gt;
Para acceder a scrontab utilice el siguiente comando:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[prueba@leftraru1 ~]$ scrontab -e&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto le permitirá editar su archivo scrontab, asignando recursos como también el momento en que desea ejecutar su tarea. La estructura base a utilizar es la siguiente:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SCRON -J mi_tarea&lt;br /&gt;
#SCRON -p main&lt;br /&gt;
#SCRON -n 1&lt;br /&gt;
#SCRON -c 1&lt;br /&gt;
#SCRON --mem-per-cpu=2300&lt;br /&gt;
#SCRON --mail-user=foo@bar.com&lt;br /&gt;
#SCRON --mail-type=ALL&lt;br /&gt;
#SCRON -o mi_tarea_%j.out&lt;br /&gt;
#SCRON -e mi_tarea_%j.err&lt;br /&gt;
# Example of job definition:&lt;br /&gt;
# .---------------- minute (0 - 59)&lt;br /&gt;
# |  .------------- hour (0 - 23)&lt;br /&gt;
# |  |  .---------- day of month (1 - 31)&lt;br /&gt;
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...&lt;br /&gt;
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat&lt;br /&gt;
# |  |  |  |  |&lt;br /&gt;
# *  *  *  *  *     command to be executed&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;minute&#039;&#039;&#039; - Corresponde al minuto en que se va a ejecutar el script, valor de 0 a 59.&lt;br /&gt;
* &#039;&#039;&#039;hour&#039;&#039;&#039; - Hora de ejecución, formato 24 horas, valor de 0 a 23, donde 0 son las 12:00 AM.&lt;br /&gt;
* &#039;&#039;&#039;day of month&#039;&#039;&#039; - Día del mes, la tarea se puede ejecutar cada x día, valor de 1 a 31.&lt;br /&gt;
* &#039;&#039;&#039;month&#039;&#039;&#039; - La tarea se puede ejecutar cada x mes, valor de 1 a 12.&lt;br /&gt;
* &#039;&#039;&#039;day of week&#039;&#039;&#039; - Día de la semana, valor de 0 a 6, donde 0 es Domingo.&lt;br /&gt;
* &#039;&#039;&#039;command to be executed&#039;&#039;&#039; - Script a ejecutar por el usuario.&lt;br /&gt;
 &lt;br /&gt;
Ejemplo envío de trabajo slurm:&lt;br /&gt;
&lt;br /&gt;
Para la asignación de recursos, utilizaremos la directriz &#039;&#039;&#039;#SCRON&#039;&#039;&#039;, que utiliza los mismos parámetros usados por &#039;&#039;&#039;#SBATCH&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Luego de asignar los recursos debemos especificar el tiempo, en este caso la tarea será ejecutada todos los días cada 20 minutos, luego debemos indicar el script enviado por el usuario y guardamos los cambios en el archivo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
*/20 * * * * /home/prueba/ejemplo/script.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es importante destacar que el script a lanzar &#039;&#039;&#039;/home/prueba/ejemplo/script.sh&#039;&#039;&#039; debe tener permisos de ejecución.&lt;br /&gt;
&lt;br /&gt;
Para revisar el listado de tareas existentes en nuestro scrontab, ejecutamos el comando:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[prueba@leftraru1 ~]$ scrontab -l&lt;br /&gt;
*/20 * * * * /home/prueba/ejemplo/script.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para borrar el contenido de nuestro scrontab:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[prueba@leftraru1 ~]$ scrontab -r&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Información a considerar:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Generar archivos de salida correctamente&lt;br /&gt;
** Para que el archivo error y out de tu script se generen en el directorio solicitado, ejemplo, /home/prueba/ejemplo/ en tu script debe estar presente el comando cd “/home/prueba/ejemplo”, esto hará que scrontab se posicione dentro del directorio de salida.&lt;br /&gt;
* Es distinto el tiempo de programar el envío de una tarea (scrontab) a que una tarea inicie en el clúster (running), ya que esto dependerá de los recursos libres que existan en ese momento en el clúster.&lt;br /&gt;
* Para revisar las tareas programadas debe ejecutar en cualquier nodo login el comando &#039;&#039;&#039;scrontab -l&#039;&#039;&#039; o revisar con el comando &#039;&#039;&#039;squeue&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[prueba@leftraru1 ~]$ squeue&lt;br /&gt;
24293471     main /home/eg  prueba PD       0:00      1 (BeginTime)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Checkpointing ==&lt;br /&gt;
Es la acción de guardar el estado de un proceso en ejecución en un archivo de imagen de punto de control. Este proceso se puede reiniciar más tarde desde el archivo del punto de control, continuando la ejecución desde donde se detuvo, en la misma computadora o en una diferente.&lt;br /&gt;
&lt;br /&gt;
=== ¿Por qué utilizarlo? ===&lt;br /&gt;
* Permite ejecuciones de tarea largas que superen el tiempo de ejecución permitido en el cluster (30 días)&lt;br /&gt;
* Estar preparados ante fallas del sistema que nos puedan hacer perder resultados de nuestras simulaciones&lt;br /&gt;
&lt;br /&gt;
=== Utilización ===&lt;br /&gt;
Lo primero que debemos hacer en nuestro script es cargar el módulo de Mana:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ml mana/3.0.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Este módulo provee 3 ejecutables que necesitaremos:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;mana_coordinator:&#039;&#039;&#039; Coordina los checkpoints entre los distintos procesos&lt;br /&gt;
* &#039;&#039;&#039;mana_launch:&#039;&#039;&#039; Inicia un proceso con checkpoint&lt;br /&gt;
* &#039;&#039;&#039;mana_restart:&#039;&#039;&#039; Reinicia la ejecución desde una imagen del checkpoint&lt;br /&gt;
&lt;br /&gt;
Necesitaremos 2 scripts para trabajar con checkpoints: Inicio y reinicio&lt;br /&gt;
&lt;br /&gt;
=== Script de inicio (inicio.sh) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
##---------------SLURM Parameters - NLHPC ----------------&lt;br /&gt;
#SBATCH -J Testcheckpoint&lt;br /&gt;
#SBATCH -p general&lt;br /&gt;
#SBATCH -n 44&lt;br /&gt;
#SBATCH --ntasks-per-node=44&lt;br /&gt;
#SBATCH --mem-per-cpu=4363&lt;br /&gt;
#SBATCH --mail-user=test@nlhpc.cl&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH -o Testcheckpoint_%j.out&lt;br /&gt;
#SBATCH -e Testcheckpoint_%j.err&lt;br /&gt;
&lt;br /&gt;
# ----------------Modules----------------------------&lt;br /&gt;
ml mana/3.0.0&lt;br /&gt;
# ----------------Command--------------------------&lt;br /&gt;
#Checkpointing cada 1 hora&lt;br /&gt;
mana_cooridinator -i3600&lt;br /&gt;
#Ejecutamos nuestra tarea con checkpointing&lt;br /&gt;
srun mana_launch ./ejecutable&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Script de reinicio (reinicio.sh) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
##---------------SLURM Parameters - NLHPC ----------------&lt;br /&gt;
#SBATCH -J Testcheckpoint&lt;br /&gt;
#SBATCH -p general&lt;br /&gt;
#SBATCH -n 44&lt;br /&gt;
#SBATCH --ntasks-per-node=44&lt;br /&gt;
#SBATCH --mem-per-cpu=4363&lt;br /&gt;
#SBATCH --mail-user=test@nlhpc.cl&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH -o Testcheckpoint_%j.out&lt;br /&gt;
#SBATCH -e Testcheckpoint_%j.err&lt;br /&gt;
&lt;br /&gt;
# ----------------Modules----------------------------&lt;br /&gt;
ml mana/3.0.0&lt;br /&gt;
# ----------------Command--------------------------&lt;br /&gt;
#Checkpointing cada 1 hora&lt;br /&gt;
mana_cooridinator -i3600&lt;br /&gt;
#Reiniciar nuestra tarea desde los archivos de checkpoint&lt;br /&gt;
srun mana_restart&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para correr estos scripts se puede hacer utilizando la funcionalidad de dependencias de SLURM:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[test@leftraru2 test]$ sbatch inicio.sh&lt;br /&gt;
Submitted batch job 23574685&lt;br /&gt;
[test@leftraru2 test]$ sbatch --dependency=afterok:23574685 reinicio.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Trabajos ==&lt;br /&gt;
=== Trabajos paralelos ===&lt;br /&gt;
Muchos de los trabajos que se ejecutan en un clúster de producción implicarán más de un procesador (CPU, núcleo). Dichos trabajos paralelos deben solicitar la cantidad de recursos necesarios a través de opciones adicionales. Los más comunes son:&lt;br /&gt;
&lt;br /&gt;
Para diferentes tipos de trabajos paralelos, se especificarán diferentes opciones. Los trabajos paralelos más comunes son trabajos de MPI (memoria distribuida), trabajos de subprocesos múltiples (memoria compartida) y los llamados híbridos que son una combinación de los dos. Analicemos por separado con un n ejemplo para cada uno.&lt;br /&gt;
&lt;br /&gt;
=== Ejecución de programas con MPI ===&lt;br /&gt;
MPI (interfaz de paso de mensajes) es la API de comunicación estándar para trabajos paralelos de memoria distribuida capaz de implementarse en un clúster. Para programar dicho trabajo, es necesario especificar la cantidad de nodos del clúster que se utilizarán y la cantidad de procesos (tareas) que se ejecutarán en cada nodo.&lt;br /&gt;
&lt;br /&gt;
El siguiente es un ejemplo de ejecución de un programa compilado con Open MPI:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 #SBATCH -J example_mpi&lt;br /&gt;
 #SBATCH -p general&lt;br /&gt;
 #SBATCH -n 264&lt;br /&gt;
 #SBATCH --ntasks-per-node=44&lt;br /&gt;
 #SBATCH --output=example_%j.out&lt;br /&gt;
 #SBATCH --error=example_%j.err&lt;br /&gt;
 #SBATCH --mail-user=user@example.com&lt;br /&gt;
 #SBATCH --mail-type=ALL&lt;br /&gt;
 &lt;br /&gt;
 srun ./mpi_test&lt;br /&gt;
A continuacion se explica línea por líneael script.&lt;br /&gt;
&lt;br /&gt;
Como empieza un shell script en Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre del Job:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -J example_mpi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre la particion donde se desea ejecutar el trabajo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -p general&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Número de tareas. Debe de ser un número múltiplo del número de CPUs máximo que tenga un node de la partición donde se lanza:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -n 264&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Con esto se fuerza a que se lancen 44 tareas MPI en cada uno de los nodos, ocupando de este modo nodos completos. En este caso 6 nodos completos:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --ntasks-per-node=44&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de salida:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -o example_%j.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de error:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -e example_%j.err&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Correo para notificaciones:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-user=user@example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Envía correo en todos los casos:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Programa para ejecutar:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
srun ./mpi_test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nota&#039;&#039;&#039;: no se carga específicamente el módulo &amp;quot;mpi&amp;quot; ya que se carga siempre por defecto.&lt;br /&gt;
&lt;br /&gt;
Para enviarlo al clúster debe ejecutar el comando: &#039;&#039;sbatch script.sh&#039;&#039;. El ejemplo anterior ejecutará una tarea OpenMPI con 264 procesos reservando 264 cores para ello.&lt;br /&gt;
&lt;br /&gt;
=== Trabajos multiproceso OpenMP ===&lt;br /&gt;
Los trabajos paralelos diseñados para ejecutarse en un sistema multi-core (shared-memory) suelen ser &amp;quot;multi-threaded&amp;quot;. La programación de un job de este tipo requiere especificar el número de núcleos que se utilizan para acomodar los subprocesos.&lt;br /&gt;
&lt;br /&gt;
OpenMP es el conjunto común de variables de compilación para facilitar el desarrollo de programas multi-threaded. Un script típico de SLURM para un programa de este tipo se ve así:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 #SBATCH -J OMPtest&lt;br /&gt;
 #SBATCH -p general&lt;br /&gt;
 #SBATCH -n 1&lt;br /&gt;
 #SBATCH -c 44&lt;br /&gt;
 #SBATCH --ntasks-per-node=44&lt;br /&gt;
 #SBATCH --mem-per-cpu=1024&lt;br /&gt;
 #SBATCH -o example_%j.out&lt;br /&gt;
 #SBATCH -e example_%j.err&lt;br /&gt;
 #SBATCH --mail-user=user@example.com&lt;br /&gt;
 #SBATCH --mail-type=ALL&lt;br /&gt;
&lt;br /&gt;
 OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK time ./omp-program&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Como debe comenzar un script en Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre del Job:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -J OMPtest&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre la particion donde desea ejecutar el Job:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -p general&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Número de trabajos:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Número de tareas:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -c 44&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Con esto se fuerza a que se agrupen las 44 tareas en un nodo (en OpenMP no hay comunicación entre nodos, por lo que todas las tareas deben estar en el mismo nodo o no funcionaría):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --ntasks-per-node=44&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Memoria por core (MBytes):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem-per-cpu=1024&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de salida:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -o example_%j.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de error:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -e example_%j.err&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Correo para notificaciones:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-user=user@example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Enviar correo en todos los casos:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Programa para ejecutar:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK time ./omp-program &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cuando se utiliza un programa OpenMP, el número de subprocesos (y, por lo tanto, el número requerido de núcleos) se especifica a través de la variable de entorno OMP_NUM_THREADS que, por lo tanto, aparece en el script frente a la llamada al programa. Lo estamos configurando en la variable interna SLURM_CPUS_PER_TASK que se establece a través de la opción &amp;quot;-c&amp;quot; (a 44 en nuestro ejemplo, que sería el número total de cores de un nodo de la partición &amp;quot;general&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
La opción &amp;quot;-n&amp;quot; se mantiene en 1 para indicar un único trabajo principal que tiene 44 tareas. Para asegurarnos que todas las tareas se ejecutan en el mismo nodo, se añade la opción &amp;quot;--ntasks-per-node&amp;quot; con el máximo número de cores que tiene un nodo de la partición donde se está lanzando el trabajo.&lt;br /&gt;
&lt;br /&gt;
=== Ejecución de tareas en GPUs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -J ejemplo_gpus&lt;br /&gt;
#SBATCH -p v100&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
#SBATCH -o ejemplo_%j.out&lt;br /&gt;
#SBATCH -e ejemplo_%j.err&lt;br /&gt;
#SBATCH --mail-user=correo@gmail.com&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH --mem-per-cpu=4300&lt;br /&gt;
#SBATCH --gres=gpu:1&lt;br /&gt;
&lt;br /&gt;
./programa&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Inicio de un bash script en Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre del trabajo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -J ejemplo_gpus&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre la partición donde se ejecuta el trabajo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --partition=v100&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Número de tareas:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de salida:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -o ejemplo_%j.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de error:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -e ejemplo_%j.err&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Correo para notificaciones:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-user=user@example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Enviar correo en todos los casos:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Memoria por CPU (MB):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem-per-cpu=4365&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cantidad utilizada de GPUs. El parámetro gpu:1 indica la cantidad de tarjetas a utilizar (cada nodo tiene 2 GPUs):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --gres=gpu:1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Programa para ejecutar:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./programa&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Job Arrays ===&lt;br /&gt;
Cuando se ejecutan cientos o miles de simulaciones que utilizan la misma cantidad de recursos, puede ser una ventaja ejecutar estas simulaciones como un &amp;quot;job array&amp;quot;. Los job array le permiten enviar miles de dichos trabajos (llamados &amp;quot;job steps&amp;quot;) con un solo script. A cada simulación se le asignará un valor único para la variable de entorno SLURM_ARRAY_TASK_ID. Puede usar esta variable para leer parámetros para pasos individuales de una línea dada de un archivo.&lt;br /&gt;
&lt;br /&gt;
=== Caso de uso de un Script Job Array (Gaussian) ===&lt;br /&gt;
Tenemos usuarios que actualmente envían varias simulaciones al clúster que son similares en cuanto al uso de recursos, pero, la diferencia es que solo cambia la entrada que le entregan al programa. Para esta situación, recomendamos hacer uso de un script Job Array.&lt;br /&gt;
&lt;br /&gt;
En este ejemplo crearemos un script job array para el software Gaussian, el cual, realizará 63 simulaciones, cada una de estas utilizará 8 cores y podrá alcanzar un uso máximo de 8 Gb de memoria ram. Para este caso utilizaremos la partición slims donde cada nodo tiene 46 Gb de memoria ram y 20 cores.&lt;br /&gt;
&lt;br /&gt;
Script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# ----------------SLURM Parameters----------------&lt;br /&gt;
#SBATCH -J prueba&lt;br /&gt;
#SBATCH -p slims&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
#SBATCH -c 8&lt;br /&gt;
#SBATCH --mem-per-cpu=1000&lt;br /&gt;
#SBATCH --mail-user=prueba@nlhpc.cl&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH --array=1-63&lt;br /&gt;
#SBATCH -o prueba_%A_%a.out&lt;br /&gt;
#SBATCH -e prueba_%A_%a.err&lt;br /&gt;
#-----------------Toolchain---------------------------&lt;br /&gt;
ml purge&lt;br /&gt;
ml intel/2019b&lt;br /&gt;
# ----------------Módulos-----------------------------&lt;br /&gt;
ml g16/B.01&lt;br /&gt;
# ----------------Comandos--------------------------&lt;br /&gt;
file=$(ls Child_10_*.com | sed -n ${SLURM_ARRAY_TASK_ID}p)&lt;br /&gt;
srun g16 $file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
Descripción de comandos utilizados en script:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Inicio de un bash script en Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre de la simulación:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -J prueba&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre la partición donde se ejecuta la simulación:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -p slims&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Número de tareas (1 tarea va a ejecutar 63 simulaciones):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Core’s por tareas (cada tarea utilizará un máximo 8 cores):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -c 8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Memoria ram por cpu (cada tarea utilizará un máximo 8 Gb de ram):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH –mem-per-cpu=1000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Correo para activar el envío de notificaciones:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-user=prueba@nlhpc.cl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Permitir envío de notificaciones:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se generan 63 simulaciones diferentes:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --array=1-63&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de salida: (ejemplo: prueba_18455017_1.out)&lt;br /&gt;
&lt;br /&gt;
* %A corresponde al Job ID de nuestra tarea que le asignará Slurm → 18455017.&lt;br /&gt;
* %a corresponde a la simulación X de nuestra tarea que le asignará Slurm → 1.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -o prueba_%A_%a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de errores: (ejemplo: prueba_18455017_1.err)&lt;br /&gt;
&lt;br /&gt;
* %A corresponde al Job ID de nuestra tarea que le asignará Slurm → 18455017.&lt;br /&gt;
* %a corresponde a la simulación X de nuestra tarea que le asignará Slurm → 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -e prueba_%A_%a.err&lt;br /&gt;
Toolchain: en este apartado, limpiaremos nuestro entorno de software no deseados y luego escogemos la herramienta informática con la cual está compilado el software Gaussian (nosotros utilizamos el compilador Intel/2019b).&lt;br /&gt;
&lt;br /&gt;
#-----------------Toolchain---------------------------&lt;br /&gt;
ml purge&lt;br /&gt;
ml intel/2019b&lt;br /&gt;
Módulos: cargamos el software Gaussian versión 16/B.0.&lt;br /&gt;
&lt;br /&gt;
# ----------------Módulos-----------------------------&lt;br /&gt;
ml g16/B.01&lt;br /&gt;
Comandos: aquí definimos los comandos a ejecutar.&lt;br /&gt;
&lt;br /&gt;
# ----------------Comandos--------------------------&lt;br /&gt;
file=$(ls Child_10_*.com | sed -n ${SLURM_ARRAY_TASK_ID}p)&lt;br /&gt;
srun g16 $file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
file= variable que va a listar los archivos de entrada que comiencen por Child_10_ y terminen en .com&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Child.png|no]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sed -n ${SLURM_ARRAY_TASK_ID}p) ← Sed imprimirá las líneas de cada archivo de entrada y la variable $SLURM_ARRAY_TASK_ID asumirá estas entradas como matriz de simulación en nuestro job array, en este ejemplo tenemos 63 archivos de entrada.&lt;br /&gt;
&lt;br /&gt;
Para más detalles sobre los archivos stdin, stdout y stderr de una simulación % A será reemplazado por el valor de SLURM_ARRAY_JOB_ID que es el Job ID de nuestra tarea y %a será reemplazado por el valor de SLURM_ARRAY_TASK_ID que corresponde a la simulación X de nuestra tarea.&lt;br /&gt;
&lt;br /&gt;
Srun g16 $file: ejecutará el comando gaussian g16 interpretando la variable $file en los nodos de cómputo asignados.&lt;br /&gt;
&lt;br /&gt;
Enviar el script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[prueba@leftraru1 ~]$ sbatch prueba.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ejecución de una tarea que ocupa mucha RAM por CPU ===&lt;br /&gt;
Debemos tener en cuenta que la RAM que SLURM reserva por defecto son 1000 MB. Un típico error de cancelación de tarea por falta de memoria es el siguiente:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/tmp/slurmd/job136839939/slurm_script: line 15: 23547 Killed                  ./programa.sh&lt;br /&gt;
slurmstepd: error: Detected 1 oom-kill event(s) in step 136839939.batch cgroup. Some of your processes &lt;br /&gt;
may have been killed by the cgroup out-of-memory handler.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Si su tarea ocupa más de la memoria por defecto, puede utilizar el siguiente parámetro:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem-per-cpu=2300 #Máxima RAM por CPU&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Esto hará que SLURM reserve más RAM por CPU para sus tareas.&lt;br /&gt;
&lt;br /&gt;
Tenga en cuenta que nuestros nodos tienen 46 GB de memoria RAM (Partición slims), 187 GB (Partición general) y 765 GB (Partición largemem) por nodo. [https://wiki.nlhpc.cl/Hardware_Disponible Más información].&lt;br /&gt;
&lt;br /&gt;
Otra forma de reservar memoria es utilizando el siguiente parámetro:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem=2300&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
En este caso SLURM realizará una reserva de memoria de 2300 MB pero por la totalidad del trabajo.&lt;br /&gt;
&lt;br /&gt;
Los parámetros anteriores al igual que el número de CPUs que se van a usar, hay que afinarlos lo mejor posible. Para ello lo que se puede hacer es hacer pruebas en los nodos logins, sin lanzar en las colas, y así estudiar el uso de RAM y CPU por parte de sus procesos.&lt;br /&gt;
&lt;br /&gt;
=== Ejecución de una tarea con Dependencias ===&lt;br /&gt;
Las dependencias de trabajos se utilizan para aplazar el inicio de un trabajo hasta que se satisfagan las dependencias especificadas. Se especifican con la opción --dependency en el siguiente formato:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch --dependency=&amp;lt;type:job_id[:job_id][,type:job_id[:job_id]]&amp;gt; ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Los tipos de dependencias son las siguientes:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;after&#039;&#039;&#039;:jobid[:jobid...] - el trabajo puede empezar después de que los trabajos especificados comiencen&lt;br /&gt;
* &#039;&#039;&#039;afterany&#039;&#039;&#039;:jobid[:jobid...] - el trabajo puede empezar después de que los trabajos especificados terminen&lt;br /&gt;
* &#039;&#039;&#039;afternotok&#039;&#039;&#039;:jobid[:jobid...] - el trabajo puede empezar después que los trabajos especificados terminan fallidamente&lt;br /&gt;
* &#039;&#039;&#039;afterok&#039;&#039;&#039;:jobid[:jobid...] - el trabajo puede empezar después que los trabajos especificados terminan exitósamente&lt;br /&gt;
&lt;br /&gt;
La manera más simple de usar una dependencia del tipo afterok:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[prueba@leftraru1 ~]$ sbatch job1.sh&lt;br /&gt;
Submitted batch job 21363626&lt;br /&gt;
[prueba@leftraru1 ~]$ sbatch --dependency=afterok:21363626 job2.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora cuando job1.sh termine correctamente, el job2.sh entrará en ejecución. Si job1.sh termina fallidamente, job2.sh no entrará en ejecución nunca pero sí quedará en cola (debe cancelarse manualmente el trabajo).&lt;br /&gt;
&lt;br /&gt;
== Prioridad de tarea ==&lt;br /&gt;
Cómo ver la prioridad del trabajo. Los factores que determinan la prioridad del trabajo, incluyendo la fórmula y pesos.&lt;br /&gt;
&lt;br /&gt;
=== Factores que determinan prioridad de tarea ===&lt;br /&gt;
&amp;lt;table class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 60%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Comando SLURM&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Descripción&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Edad&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;la cantidad de tiempo que el trabajo ha estado esperando en la cola.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Tamaño de la tarea&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;número de nodos solicitados por el trabajo.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Partición&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;prioridad para una partición determinada.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Prioridad Baja&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Mientras más tareas se ejecuten en el cluster, menor será la prioridad.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Prioridad Alta&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Mientras menos tareas se ejecuten en el clúster, más alta es la prioridad.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Prioridad de tarea ==&lt;br /&gt;
Cómo ver la prioridad del trabajo. Los factores que determinan la prioridad del trabajo, incluyendo la fórmula y pesos.&lt;br /&gt;
&lt;br /&gt;
=== Factores que determinan prioridad de tarea ===&lt;br /&gt;
* Edad - la cantidad de tiempo que el trabajo ha estado esperando en la cola&lt;br /&gt;
* Tamaño Oficio - número de nodos solicitados por el trabajo&lt;br /&gt;
* Partición - prioridad para una partición determinada&lt;br /&gt;
* Contribución de prioridades basada en los recursos informáticos utilizados por los miembros de un grupo de investigación en los últimos 30 días - Fairshare.&lt;br /&gt;
* Mientras más tareas se ejecuten en el cluster, menor será la prioridad.&lt;br /&gt;
* Mientras menos tareas se ejecuten en el clúster, más alta es la prioridad.&lt;br /&gt;
Fórmula Prioridad de tarea&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Job_priority =&lt;br /&gt;
  (PriorityWeightAge) * (age_factor) +&lt;br /&gt;
  (PriorityWeightFairshare) * (fair-share_factor) +&lt;br /&gt;
  (PriorityWeightJobSize) * (job_size_factor) +&lt;br /&gt;
  (PriorityWeightPartition) * (partition_factor) +&lt;br /&gt;
  (PriorityWeightQOS) * (QOS_factor)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Visualización de sus Tareas ==&lt;br /&gt;
Si Ud. necesita visualizar información acerca de sus tareas de forma interactiva, puede utilizar el comando smap:&lt;br /&gt;
&lt;br /&gt;
smap -i 3&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Smap.png|no|700px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De esta forma, tendrá una actualización cada 3 segundos de sus tareas en ejecución incluyendo los nodos en los cuales se encuentran ejecutándose.&lt;br /&gt;
&lt;br /&gt;
== Bibliografía ==&lt;br /&gt;
[http://slurm.schedmd.com/documentation.html Manual Oficial de Slurm]&lt;br /&gt;
&lt;br /&gt;
[https://slurm.schedmd.com/scrontab.html Documentación scrontab]&lt;/div&gt;</summary>
		<author><name>Jmorales</name></author>
	</entry>
	<entry>
		<id>https://wiki.nlhpc.cl/index.php?title=SISTEMA_GESTOR_DE_RECURSOS&amp;diff=768</id>
		<title>SISTEMA GESTOR DE RECURSOS</title>
		<link rel="alternate" type="text/html" href="https://wiki.nlhpc.cl/index.php?title=SISTEMA_GESTOR_DE_RECURSOS&amp;diff=768"/>
		<updated>2024-04-29T22:01:39Z</updated>

		<summary type="html">&lt;p&gt;Jmorales: /* Ver estado de trabajos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== SLURM Workload Manager ==&lt;br /&gt;
Es un sistema de programación de trabajos y gestión de clústeres de código abierto, tolerante a fallas y altamente escalable para clústeres Linux grandes y pequeños.&lt;br /&gt;
&lt;br /&gt;
Como administrador de carga de trabajo de clúster, Slurm tiene tres funciones clave. Primero, asigna acceso exclusivo y / o no exclusivo a los recursos (nodos de cómputo) a los usuarios durante un período de tiempo para que puedan realizar el trabajo. En segundo lugar, proporciona un marco para iniciar, ejecutar y monitorear el trabajo (normalmente un trabajo paralelo) en el conjunto de nodos asignados. Finalmente, arbitra la contención de recursos mediante la gestión de una cola de trabajo pendiente.&lt;br /&gt;
&lt;br /&gt;
SLURM es el gestor de colas instalado en muchos de los súper computadores del [https://www.top500.org/ TOP500], y también en el clúster del NLHPC. Si Ud. quiere lanzar tareas dentro de Leftaru, debe hacerlo a través de Slurm.&lt;br /&gt;
&lt;br /&gt;
== Conceptos clave ==&lt;br /&gt;
SLURM gestiona trabajos de usuario que tienen las siguientes características clave:&lt;br /&gt;
&lt;br /&gt;
* Conjunto de recursos solicitados:&lt;br /&gt;
** Número de recursos informáticos: nodos (incluidas todas sus CPUs y núcleos) o CPUs (incluidos todos sus núcleos) o solo núcleos&lt;br /&gt;
** Cantidad de memoria: por nodo o por CPU (lógica)&lt;br /&gt;
** Tiempo necesario para que las tareas del usuario completen su trabajo&lt;br /&gt;
* Una partición de nodo solicitada (cola de trabajos)&lt;br /&gt;
* Un nivel de calidad de servicio (QoS) solicitado que otorga a los usuarios accesos específicos&lt;br /&gt;
* Una cuenta solicitada con recursos limitados&lt;br /&gt;
&lt;br /&gt;
De manera predeterminada, los usuarios envían trabajos a una partición particular (marcada como tal para todos los usuarios) y bajo una cuenta particular (preestablecida por usuario).&lt;br /&gt;
&lt;br /&gt;
== Particiones SLURM ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 60%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nombre Particion&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nodos&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;CPUs&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;RAM&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Descripción&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;main&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;27&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;256&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;768GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;general&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;48&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;44&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;187GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;largemem&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;9&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;44&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;765GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;v100&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;44&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;187GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;4 GPUs Nvidia Tesla V100.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;mi100&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;128&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;502GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2 GPUs AMD Instinct MI100.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;debug&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;4&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;20&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;59GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Destinados a pruebas de máximo 30 minutos.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Introducción a los comandos slurm ==&lt;br /&gt;
&amp;lt;table class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 60%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Comando SLURM&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Descripción&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;srun&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ejecutar un comando en nodos de cómputo asignados.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;sbatch&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;presentar un script de trabajo&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;squeue&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Mostrar estado de los trabajos en la cola.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;scancel&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;eliminar un trabajo.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;sinfo&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Muestra el estado de los nodos de cómputo.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
Estos son los comandos básicos utilizados para realizar la mayoría de las operaciones básicas con SLURM.&lt;br /&gt;
&lt;br /&gt;
=== Estado de nodos ===&lt;br /&gt;
Para consultar el uso de nuestra infraestructura y qué particiones están más libres, le recomendamos el comando sinfo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# sinfo&lt;br /&gt;
PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST&lt;br /&gt;
all        up    infinite    16     mix   cn[001,005-006,010,034-035,037,041,045,050,057,108,121],sn[012,016,037]&lt;br /&gt;
all        up    infinite    95     alloc cn[011-033,038-044,046-049,071-120],cnf[001-004],sn[001-011,038-041,043-044]&lt;br /&gt;
all        up    infinite    33     idle  fn[001-009],gn[001-002],sn[018-035,045-048]&lt;br /&gt;
main*      up    infinite    20     alloc mn[001-011,014-022]&lt;br /&gt;
main*      up    infinite    7      idle [012-013,023-027]&lt;br /&gt;
debug      up    infinite    4      idle  leftraru[1-2]&lt;br /&gt;
general    up    infinite    4      mix   sn[012,016,037,042]&lt;br /&gt;
general    up    infinite    22     alloc sn[001-011,013-015,017,036,038-041,043-044]&lt;br /&gt;
general    up    infinite    22     idle  sn[018-035,045-048]&lt;br /&gt;
largemem   up    infinite    9      idle  fn[001-009]&lt;br /&gt;
v100       up    infinite    2      idle  gn[001-002]&lt;br /&gt;
mi100      up    infinite    1      idle  gna001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fijándose en el texto resaltado de la salida del comando sinfo, se puede comprobar que en la partición main hay 20 nodos que están completamente ocupados (estado alloc), 7 nodos que están libres (idle); por otro lado, en la partición general hay 22 nodos completamente ocupados, 4 parcialmente ocupados y 22 libres. Dado este escenario, está claro que debería de lanzar sus ejecuciones en los nodos de la partición general, por las razones anteriormente expuestas.&lt;br /&gt;
&lt;br /&gt;
Para lanzar en la partición general, debe tener en cuenta que tiene que indicar en su script que se use dicha partición en vez de, probablemente, main. Por supuesto, en esta partición cambian las características técnicas, se pasan a tener 44 cores por nodo (en vez de 256 en main) y una capacidad RAM de 187GB (en vez de 768GB en main). Puede ver más información de las particiones en este link(agregar link), donde podrá revisar que con la inclusión de Guacolda hemos añadido nodos con hasta 765GB de memoria RAM y nodos con GPUs Nvidia Tesla V100 y AMD Instinct MI100 .&lt;br /&gt;
&lt;br /&gt;
Para ver los nodos disponibles y poder determinar en que partición lanzar los trabajos se recomienda utilizar el siguiente comando.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;[prueba@leftraru1 ~]$ sinfo -o &amp;quot;%10P %6D %10t %10m %c&amp;quot; -t idle| egrep &amp;quot;PARTITION|main|general|largemem|v100&amp;quot;&lt;br /&gt;
PARTITION  NODES  STATE      MEMORY     CPUS&lt;br /&gt;
main*       27    idle       768000      256&lt;br /&gt;
general     2     idle       187000      44&lt;br /&gt;
largemem    7     idle       765000      44&lt;br /&gt;
v100        1     idle       187000      44 &lt;br /&gt;
mi100       1     idle       515047      128 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
El comando anterior muestra que main tiene 27 nodos libres, en este caso es recomendado lanzar en en main para evitar que el trabajo quede en cola por falta de recursos en otros nodos.&lt;br /&gt;
&lt;br /&gt;
Otro Ejemplo, se muestra sólo una partición específica&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;[prueba@leftraru1 ~]$ sinfo -p main&lt;br /&gt;
PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST&lt;br /&gt;
main*        up   infinite     15    mix mn[001-008,014-020]&lt;br /&gt;
main*        up   infinite     12   idle mn[009-013,021-027]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Comprobación del estado de tareas ===&lt;br /&gt;
squeue - Muestra el estatus de los trabajos&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;squeue                  # tus trabajos&lt;br /&gt;
squeue -u &amp;amp;lt;username&amp;amp;gt;    # trabajos por usuario &amp;amp;lt;username&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
squeue: Comprobar estados de los trabajos&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;&amp;quot; class=&amp;quot;mw-highlight mw-content-ltr&amp;quot; dir=&amp;quot;ltr&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  JOBID        PARTITION     NAME     USER    ST       TIME  	NODES 	NODELIST(REASON)&lt;br /&gt;
13951858_1     general	     test1    test1    R   1-18:35:14      2    cn[009-010]&lt;br /&gt;
13951857_2     general       test2    test1    R   1-18:36:11      2    cn[099-100]&lt;br /&gt;
13956453       gpu           test3    test3    R   1-03:42:08      1    cn039&lt;br /&gt;
13956449       largemem      test4    test4    R   1-05:42:08      1    cn044&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puede utilizar squeue para saber el estado de una o varias de sus tareas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ squeue -o &amp;quot;%.15i %.6P %.8j %.20S %.11M %.11L %.20V %.10Q %.4C %.2D %.6m&amp;quot; -S -t,-Q&lt;br /&gt;
 JOBID   PARTIT     NAME      START_TIME          TIME      TIME_LEFT     SUBMIT_TIME       PRIORITY CPUS NO MIN_ME&lt;br /&gt;
10837561 general   TEST1   2018-06-18T18:51:01    19:00:31  2-04:59:29  2018-06-18T18:51:01  119972    1  1  1000M&lt;br /&gt;
10838562 general   TEST2   2018-06-19T11:30:47    2:20:45   2-21:39:15  2018-06-19T11:30:46  119946    1  1  1000M&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
para mas opciones puede revisar con el comando [https://slurm.schedmd.com/squeue.html man squeue] las opciones restantes.&lt;br /&gt;
&lt;br /&gt;
=== Códigos de ESTADO de los trabajos ===&lt;br /&gt;
&lt;br /&gt;
Los trabajos suelen pasar por varios estados durante su ejecución. Los estados típicos son PENDIENTE, EN EJECUCIÓN, SUSPENDIDO, FINALIZANDO y TERMINADO. A continuación se explica cada estado.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;BF&#039;&#039;&#039; BOOT_FAIL&lt;br /&gt;
    Trabajo finalizado debido a un fallo de arranque, normalmente debido a un fallo de hardware (por ejemplo, no se puede arrancar el nodo o bloque y el trabajo no se puede volver a poner en cola). &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CA&#039;&#039;&#039; CANCELADO&lt;br /&gt;
    El trabajo ha sido cancelado explícitamente por el usuario o el administrador del sistema. El trabajo puede haberse iniciado o no. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CD&#039;&#039;&#039; TERMINADO&lt;br /&gt;
    El trabajo ha terminado todos los procesos en todos los nodos con un código de salida de cero. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CF&#039;&#039;&#039; CONFIGURANDO&lt;br /&gt;
    Al trabajo se le han asignado recursos, pero están esperando a que estén listos para su uso (por ejemplo, arrancando). &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CG&#039;&#039;&#039; COMPLETANDO&lt;br /&gt;
    El trabajo está en proceso de finalización. Algunos procesos en algunos nodos pueden estar aún activos. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DL&#039;&#039;&#039; FECHA LÍMITE&lt;br /&gt;
    El trabajo ha finalizado en la fecha límite. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;F&#039;&#039;&#039; FALLÓ&lt;br /&gt;
    Trabajo finalizado con un código de salida distinto de cero u otra condición de fallo. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NF&#039;&#039;&#039; NODO_FAIL&lt;br /&gt;
    Trabajo finalizado debido al fallo de uno o más nodos asignados. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;OOM&#039;&#039;&#039; OUT_OF_MEMORY&lt;br /&gt;
    El trabajo ha experimentado un error de memoria insuficiente. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PD&#039;&#039;&#039; PENDIENTE&lt;br /&gt;
    El trabajo está pendiente de asignación de recursos. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PR&#039;&#039;&#039; PREEMPTED&lt;br /&gt;
    El trabajo ha finalizado debido a una espera. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;R&#039;&#039;&#039; EN MARCHA&lt;br /&gt;
    El trabajo tiene actualmente una asignación. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RD&#039;&#039;&#039; RESV_DEL_HOLD&lt;br /&gt;
    El trabajo se está reteniendo después de que se eliminara la reserva solicitada. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RF&#039;&#039;&#039; REQUEUE_FED&lt;br /&gt;
    El trabajo está siendo solicitado por una federación. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RH&#039;&#039;&#039; REQUEUE_HOLD&lt;br /&gt;
    Se está volviendo a poner en cola un trabajo retenido. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RQ&#039;&#039;&#039; REQUEUED&lt;br /&gt;
    Se está poniendo en cola un trabajo que se está completando. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RS&#039;&#039;&#039; CAMBIO DE TAMAÑO&lt;br /&gt;
    El trabajo está a punto de cambiar de tamaño. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RV&#039;&#039;&#039; REVOCADO&lt;br /&gt;
    El trabajo se ha retirado del clúster debido a que otro clúster ha iniciado el trabajo. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SI&#039;&#039;&#039; SEÑALANDO&lt;br /&gt;
    El trabajo está siendo señalizado. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SE&#039;&#039;&#039; SPECIAL_EXIT&lt;br /&gt;
    El trabajo se ha puesto en cola en un estado especial. Este estado puede ser establecido por los usuarios, normalmente en EpilogSlurmctld, si el trabajo ha terminado con un valor de salida particular. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SO&#039;&#039;&#039; STAGE_OUT&lt;br /&gt;
    El trabajo está preparando los archivos. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ST&#039;&#039;&#039; PARADO&lt;br /&gt;
    El trabajo tiene una asignación, pero la ejecución se ha detenido con la señal SIGSTOP. Los CPUS han sido retenidos por este trabajo. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;S&#039;&#039;&#039; SUSPENDIDO&lt;br /&gt;
    El trabajo tiene una asignación, pero se ha suspendido la ejecución y se han liberado CPUs para otros trabajos. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TO&#039;&#039;&#039; TIMEOUT&lt;br /&gt;
    El trabajo ha finalizado al alcanzar su límite de tiempo.&lt;br /&gt;
&lt;br /&gt;
=== Cancelar un trabajo ===&lt;br /&gt;
Con scancel se puede cancelar un trabajo en ejecución&lt;br /&gt;
&amp;lt;pre&amp;gt;scancel &amp;amp;lt;jobID&amp;amp;gt;         # Matar proceso &amp;amp;lt;jobID&amp;amp;gt;. (puede obtener el ID del job con &amp;quot;squeue&amp;quot;)&lt;br /&gt;
scancel -u &amp;amp;lt;username&amp;amp;gt;   # Matar proceso por usuario &amp;amp;lt;username&amp;amp;gt;. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;[prueba@leftraru1 ~]$ squeue -u prueba&lt;br /&gt;
 JOBID  PARTITION    NAME     USER    ST   TIME  NODES  NODELIST(REASON)&lt;br /&gt;
 45594    main       TEST    prueba   R    0:59   3     mn[001-003]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;[prueba@leftraru1 ~]$ scancel 45594&lt;br /&gt;
[prueba@leftraru1 ~]$ squeue -u prueba&lt;br /&gt;
JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)&lt;br /&gt;
[prueba@leftraru1 ~]$&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ver estado de trabajos ===&lt;br /&gt;
Para revisar el detalle de las opciones de un trabajo: scontrol show job&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ scontrol show job 10837561&lt;br /&gt;
JobId=10837561 JobName=TEST1&lt;br /&gt;
   UserId=usuario(1000) GroupId=group(1000) MCS_label=N/A&lt;br /&gt;
   Priority=1100 Nice=0 Account=account QOS=120&lt;br /&gt;
   JobState=RUNNING Reason=None Dependency=(null)&lt;br /&gt;
   Requeue=0 Restarts=0 BatchFlag=1 Reboot=0 ExitCode=0:0&lt;br /&gt;
   DerivedExitCode=0:0&lt;br /&gt;
   RunTime=19:03:08 TimeLimit=3-00:00:00 TimeMin=N/A&lt;br /&gt;
   SubmitTime=2018-06-18T18:51:01 EligibleTime=2018-06-18T18:51:01&lt;br /&gt;
   StartTime=2018-06-18T18:51:01 EndTime=2018-06-21T18:51:01 Deadline=N/A&lt;br /&gt;
   PreemptTime=None SuspendTime=None SecsPreSuspend=0&lt;br /&gt;
   Partition=main AllocNode:Sid=leftraru2:5471&lt;br /&gt;
   ReqNodeList=(null) ExcNodeList=(null)&lt;br /&gt;
   NodeList=cn021&lt;br /&gt;
   BatchHost=cn021&lt;br /&gt;
   NumNodes=1 NumCPUs=1 NumTasks=1 CPUs/Task=1 ReqB:S:C:T=0:0:*:*&lt;br /&gt;
   TRES=cpu=1,mem=1000M,node=1&lt;br /&gt;
   Socks/Node=* NtasksPerN:B:S:C=1:0:*:* CoreSpec=*&lt;br /&gt;
     Nodes=cn021 CPU_IDs=1 Mem=1000 GRES_IDX=&lt;br /&gt;
   MinCPUsNode=1 MinMemoryCPU=1000M MinTmpDiskNode=0&lt;br /&gt;
   Features=(null) DelayBoot=00:00:00&lt;br /&gt;
   Gres=(null) Reservation=(null)&lt;br /&gt;
   OverSubscribe=OK Contiguous=0 Licenses=matlab Network=(null)&lt;br /&gt;
   Command=/home/usuario/script.sh&lt;br /&gt;
   WorkDir=/home/usuario/&lt;br /&gt;
   StdErr=/home/usuario/10837561_%x.err&lt;br /&gt;
   StdIn=/dev/null&lt;br /&gt;
   StdOut=/home/usuario/10837561_%x.out&lt;br /&gt;
   Power=&lt;br /&gt;
   BatchScript=&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para ver el script asociado a un trabajo: scontrol write batch_script &amp;lt;job_id&amp;gt; -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ scontrol write batch_script 10837561 -&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -J nombre_del_trabajo&lt;br /&gt;
#SBATCH -p main&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
#SBATCH --ntasks-per-node=1&lt;br /&gt;
#SBATCH --mail-user=usaurio@correo.cl&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH -o nombre_del_trabajo%j_%x.out&lt;br /&gt;
#SBATCH -e nombre_del_trabajo%j_%x.err&lt;br /&gt;
#SBATCH --license=matlab &lt;br /&gt;
 &lt;br /&gt;
ml MATLAB/2017a&lt;br /&gt;
&lt;br /&gt;
matlab -nodisplay -nosplash -nodesktop &amp;lt; programa.m&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ejecutando trabajos ==&lt;br /&gt;
Actualmente contamos con 2 metodos de enviar trabajos bajo SLURM: &#039;&#039;&#039;sbatch&#039;&#039;&#039; and &#039;&#039;&#039;srun&#039;&#039;&#039;. A veces puede ser ventajoso ejecutar un solo comando en el clúster como prueba o realizar rápidamente una operación con recursos adicionales. &#039;srun&#039; permite a los usuarios hacer esto, y comparte las mismas variables que &#039;sbatch&#039; . STDOUT y STDERR para un trabajo &#039;srun&#039; serán redirigidos a la pantalla del usuario. Ctrl-C cancelará un trabajo srun. &#039;&#039;&#039;sbatch&#039;&#039;&#039; enviará un script de trabajo para que lo ejecute el clúster. Los scripts de trabajo bajo SLURM son simplemente scripts de shell (* .sh) con un conjunto de solicitudes de recursos en la parte superior del script.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Uso básico de srun:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
srun &amp;lt;algúnComando&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de salida (ejecutando el comando &amp;quot;hostname&amp;quot; para saber en que nodo se está ejecutando):&lt;br /&gt;
&amp;lt;pre&amp;gt; $ srun hostname&lt;br /&gt;
  cn003&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para enviar un script de trabajo a SLURM:&lt;br /&gt;
&amp;lt;pre&amp;gt;sbatch nombreScript.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example output:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sbatch test-job.sh&lt;br /&gt;
Submitted batch job 1169&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Variables Slurm ===&lt;br /&gt;
Las variables en esta sección son obligatorias, y SLURM las determina para determinar dónde y cuándo se ejecutarán sus trabajos. Si no asigna un valor para estos, el planificador asignará a sus trabajos el valor predeterminado. Si no solicita específicamente recursos para un trabajo, se le asignará un conjunto de recursos predeterminados. Para obtener una lista de todas las variables disponibles, consulte la documentación de SLURM en http://slurm.schedmd.com/sbatch.html. Las variables de este artículo estaban cubiertas porque eran las más relevantes para los casos de uso típicos.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Comando SLURM&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Descripción&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;--mem-per-cpu=&amp;amp;lt;megabytes&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Memoria requerida para el trabajo por CPU (en MegaBytes). El valor predeterminado es 1024 MB.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-p &amp;amp;lt;partition&amp;amp;gt;, --partition=&amp;amp;lt;partition&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Enviar un trabajo a una partición específica.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-n, --ntasks=&amp;amp;lt;cantidad de tareas&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Número de tareas que serán asignadas para el trabajo.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-c &amp;amp;lt;cpus&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Esta es la cantidad de CPU que necesita su trabajo. Tenga en cuenta que SLURM es relativamente generoso con las CPU, y el valor especificado aquí es el número &amp;quot;mínimo&amp;quot; de CPU que se asignará a su trabajo. Si hay CPU adicionales disponibles en un nodo más allá de lo solicitado, su trabajo recibirá esas CPU hasta que otros trabajos las necesiten. El valor predeterminado es 1 CPU. Intentar usar más CPU de las que se le asignaron dará como resultado que sus procesos adicionales se turnen en la misma CPU (ralentizando su trabajo).&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-J &amp;amp;lt;name&amp;amp;gt;, --jobname=&amp;amp;lt;name&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Especifica un nombre a tu trabajo.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;--mail-type=BEGIN,END,FAIL,ALL&amp;lt;b&amp;gt; and &amp;lt;/b&amp;gt;--mail-user=&amp;amp;lt;emailAddress&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Enviar por correo electrónico cuando su trabajo comienza / termina / falla. Puede especificar varios valores para esto (separados por comas) si es necesario.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-o &amp;amp;lt;STDOUT_log&amp;amp;gt;, --output=&amp;amp;lt;STDOUT_log&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Redirija la salida a los archivos de registro que especifique. Por defecto, ambos, STDOUT and STDERR son enviados a este archivo. Puedes especificar %j como parte del nombre de archivo de registro para indicar la ID del trabajo (como ejemplo, &amp;quot;#SBATCH -o ouptut_%j.o&amp;quot; redirigiría la salida a &amp;quot;output_123456.o&amp;quot;).&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-e &amp;amp;lt;STDERR_log&amp;amp;gt;, --error=&amp;amp;lt;STDERR_log&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Redireccionar STDERR a un archivo separado. Funciona exactamente igual que &amp;quot;-o&amp;quot;.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-t &amp;amp;lt;days-hours:minutes:seconds&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Walltime para tu trabajo. La duración del Walltime es el tiempo que espera que su trabajo se ejecute.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-a, --array=&amp;amp;lt;índices&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Envía una lista (arreglo) de trabajos identicos. Solo aplica para sbatch.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los scripts de trabajo especifican los recursos solicitados y otras consideraciones especiales con comentarios especiales &amp;quot;#SBATCH&amp;quot; en la parte superior de un script de trabajo. Aunque muchas de estas opciones son opcionales, las varibles que se ocupan de solicitudes de recursos (CPU, memoria y tiempo) son obligatorias. Todas las variables deben agregarse a sus scripts de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#SBATCH &amp;lt;variable&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Para especificar un nombre al job, por ejemplo, debe agregar lo siguiente a su secuencia de comandos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#SBATCH --job-name=nombreDeTrabajo&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Enviar un script===&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 #SBATCH -J example&lt;br /&gt;
 #SBATCH -p general&lt;br /&gt;
 #SBATCH -n 1&lt;br /&gt;
 #SBATCH --output=example_%j.out&lt;br /&gt;
 #SBATCH --error=example_%j.err&lt;br /&gt;
 #SBATCH --mail-user=user@example.com&lt;br /&gt;
 #SBATCH --mail-type=ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Como debe comenzar un script en Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre del trabajo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -J example&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre la partición donde desea ejecutar el Job:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -p general&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Número de tareas:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de salida:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -o example_%j.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de error:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -e example_%j.err&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Correo para notificaciones:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-user=user@example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Enviar correo en todos casos (verificar opciones arriba):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Programar tarea (uso de scrontab) ===&lt;br /&gt;
&#039;&#039;&#039;scrontab&#039;&#039;&#039; es una implementación del clásico planificador de tareas de linux &#039;&#039;&#039;crontab&#039;&#039;&#039; donde se guarda un listado de comandos a ejecutar en un tiempo determinado por el usuario.&lt;br /&gt;
&lt;br /&gt;
Para acceder a scrontab utilice el siguiente comando:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[prueba@leftraru1 ~]$ scrontab -e&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto le permitirá editar su archivo scrontab, asignando recursos como también el momento en que desea ejecutar su tarea. La estructura base a utilizar es la siguiente:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SCRON -J mi_tarea&lt;br /&gt;
#SCRON -p slims&lt;br /&gt;
#SCRON -n 1&lt;br /&gt;
#SCRON -c 1&lt;br /&gt;
#SCRON --mem-per-cpu=2300&lt;br /&gt;
#SCRON --mail-user=foo@bar.com&lt;br /&gt;
#SCRON --mail-type=ALL&lt;br /&gt;
#SCRON -o mi_tarea_%j.out&lt;br /&gt;
#SCRON -e mi_tarea_%j.err&lt;br /&gt;
# Example of job definition:&lt;br /&gt;
# .---------------- minute (0 - 59)&lt;br /&gt;
# |  .------------- hour (0 - 23)&lt;br /&gt;
# |  |  .---------- day of month (1 - 31)&lt;br /&gt;
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...&lt;br /&gt;
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat&lt;br /&gt;
# |  |  |  |  |&lt;br /&gt;
# *  *  *  *  *     command to be executed&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;minute&#039;&#039;&#039; - Corresponde al minuto en que se va a ejecutar el script, valor de 0 a 59.&lt;br /&gt;
* &#039;&#039;&#039;hour&#039;&#039;&#039; - Hora de ejecución, formato 24 horas, valor de 0 a 23, donde 0 son las 12:00 AM.&lt;br /&gt;
* &#039;&#039;&#039;day of month&#039;&#039;&#039; - Día del mes, la tarea se puede ejecutar cada x día, valor de 1 a 31.&lt;br /&gt;
* &#039;&#039;&#039;month&#039;&#039;&#039; - La tarea se puede ejecutar cada x mes, valor de 1 a 12.&lt;br /&gt;
* &#039;&#039;&#039;day of week&#039;&#039;&#039; - Día de la semana, valor de 0 a 6, donde 0 es Domingo.&lt;br /&gt;
* &#039;&#039;&#039;command to be executed&#039;&#039;&#039; - Script a ejecutar por el usuario.&lt;br /&gt;
 &lt;br /&gt;
Ejemplo envío de trabajo slurm:&lt;br /&gt;
&lt;br /&gt;
Para la asignación de recursos, utilizaremos la directriz &#039;&#039;&#039;#SCRON&#039;&#039;&#039;, que utiliza los mismos parámetros usados por &#039;&#039;&#039;#SBATCH&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Luego de asignar los recursos debemos especificar el tiempo, en este caso la tarea será ejecutada todos los días cada 20 minutos, luego debemos indicar el script enviado por el usuario y guardamos los cambios en el archivo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
*/20 * * * * /home/prueba/ejemplo/script.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es importante destacar que el script a lanzar &#039;&#039;&#039;/home/prueba/ejemplo/script.sh&#039;&#039;&#039; debe tener permisos de ejecución.&lt;br /&gt;
&lt;br /&gt;
Para revisar el listado de tareas existentes en nuestro scrontab, ejecutamos el comando:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[prueba@leftraru1 ~]$ scrontab -l&lt;br /&gt;
*/20 * * * * /home/prueba/ejemplo/script.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para borrar el contenido de nuestro scrontab:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[prueba@leftraru1 ~]$ scrontab -r&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Información a considerar:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Generar archivos de salida correctamente&lt;br /&gt;
** Para que el archivo error y out de tu script se generen en el directorio solicitado, ejemplo, /home/prueba/ejemplo/ en tu script debe estar presente el comando cd “/home/prueba/ejemplo”, esto hará que scrontab se posicione dentro del directorio de salida.&lt;br /&gt;
* Es distinto el tiempo de programar el envío de una tarea (scrontab) a que una tarea inicie en el clúster (running), ya que esto dependerá de los recursos libres que existan en ese momento en el clúster.&lt;br /&gt;
* Para revisar las tareas programadas debe ejecutar en cualquier nodo login el comando &#039;&#039;&#039;scrontab -l&#039;&#039;&#039; o revisar con el comando &#039;&#039;&#039;squeue&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[prueba@leftraru1 ~]$ squeue&lt;br /&gt;
24293471     slims /home/eg  prueba PD       0:00      1 (BeginTime)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Checkpointing ==&lt;br /&gt;
Es la acción de guardar el estado de un proceso en ejecución en un archivo de imagen de punto de control. Este proceso se puede reiniciar más tarde desde el archivo del punto de control, continuando la ejecución desde donde se detuvo, en la misma computadora o en una diferente.&lt;br /&gt;
&lt;br /&gt;
=== ¿Por qué utilizarlo? ===&lt;br /&gt;
* Permite ejecuciones de tarea largas que superen el tiempo de ejecución permitido en el cluster (30 días)&lt;br /&gt;
* Estar preparados ante fallas del sistema que nos puedan hacer perder resultados de nuestras simulaciones&lt;br /&gt;
&lt;br /&gt;
=== Utilización ===&lt;br /&gt;
Lo primero que debemos hacer en nuestro script es cargar el módulo de Mana:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ml mana/3.0.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Este módulo provee 3 ejecutables que necesitaremos:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;mana_coordinator:&#039;&#039;&#039; Coordina los checkpoints entre los distintos procesos&lt;br /&gt;
* &#039;&#039;&#039;mana_launch:&#039;&#039;&#039; Inicia un proceso con checkpoint&lt;br /&gt;
* &#039;&#039;&#039;mana_restart:&#039;&#039;&#039; Reinicia la ejecución desde una imagen del checkpoint&lt;br /&gt;
&lt;br /&gt;
Necesitaremos 2 scripts para trabajar con checkpoints: Inicio y reinicio&lt;br /&gt;
&lt;br /&gt;
=== Script de inicio (inicio.sh) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
##---------------SLURM Parameters - NLHPC ----------------&lt;br /&gt;
#SBATCH -J Testcheckpoint&lt;br /&gt;
#SBATCH -p general&lt;br /&gt;
#SBATCH -n 44&lt;br /&gt;
#SBATCH --ntasks-per-node=44&lt;br /&gt;
#SBATCH --mem-per-cpu=4363&lt;br /&gt;
#SBATCH --mail-user=test@nlhpc.cl&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH -o Testcheckpoint_%j.out&lt;br /&gt;
#SBATCH -e Testcheckpoint_%j.err&lt;br /&gt;
&lt;br /&gt;
# ----------------Modules----------------------------&lt;br /&gt;
ml mana/3.0.0&lt;br /&gt;
# ----------------Command--------------------------&lt;br /&gt;
#Checkpointing cada 1 hora&lt;br /&gt;
mana_cooridinator -i3600&lt;br /&gt;
#Ejecutamos nuestra tarea con checkpointing&lt;br /&gt;
srun mana_launch ./ejecutable&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Script de reinicio (reinicio.sh) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
##---------------SLURM Parameters - NLHPC ----------------&lt;br /&gt;
#SBATCH -J Testcheckpoint&lt;br /&gt;
#SBATCH -p general&lt;br /&gt;
#SBATCH -n 44&lt;br /&gt;
#SBATCH --ntasks-per-node=44&lt;br /&gt;
#SBATCH --mem-per-cpu=4363&lt;br /&gt;
#SBATCH --mail-user=test@nlhpc.cl&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH -o Testcheckpoint_%j.out&lt;br /&gt;
#SBATCH -e Testcheckpoint_%j.err&lt;br /&gt;
&lt;br /&gt;
# ----------------Modules----------------------------&lt;br /&gt;
ml mana/3.0.0&lt;br /&gt;
# ----------------Command--------------------------&lt;br /&gt;
#Checkpointing cada 1 hora&lt;br /&gt;
mana_cooridinator -i3600&lt;br /&gt;
#Reiniciar nuestra tarea desde los archivos de checkpoint&lt;br /&gt;
srun mana_restart&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para correr estos scripts se puede hacer utilizando la funcionalidad de dependencias de SLURM:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[test@leftraru2 test]$ sbatch inicio.sh&lt;br /&gt;
Submitted batch job 23574685&lt;br /&gt;
[test@leftraru2 test]$ sbatch --dependency=afterok:23574685 reinicio.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Trabajos ==&lt;br /&gt;
=== Trabajos paralelos ===&lt;br /&gt;
Muchos de los trabajos que se ejecutan en un clúster de producción implicarán más de un procesador (CPU, núcleo). Dichos trabajos paralelos deben solicitar la cantidad de recursos necesarios a través de opciones adicionales. Los más comunes son:&lt;br /&gt;
&lt;br /&gt;
Para diferentes tipos de trabajos paralelos, se especificarán diferentes opciones. Los trabajos paralelos más comunes son trabajos de MPI (memoria distribuida), trabajos de subprocesos múltiples (memoria compartida) y los llamados híbridos que son una combinación de los dos. Analicemos por separado con un n ejemplo para cada uno.&lt;br /&gt;
&lt;br /&gt;
=== Ejecución de programas con MPI ===&lt;br /&gt;
MPI (interfaz de paso de mensajes) es la API de comunicación estándar para trabajos paralelos de memoria distribuida capaz de implementarse en un clúster. Para programar dicho trabajo, es necesario especificar la cantidad de nodos del clúster que se utilizarán y la cantidad de procesos (tareas) que se ejecutarán en cada nodo.&lt;br /&gt;
&lt;br /&gt;
El siguiente es un ejemplo de ejecución de un programa compilado con Open MPI:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 #SBATCH -J example_mpi&lt;br /&gt;
 #SBATCH -p general&lt;br /&gt;
 #SBATCH -n 264&lt;br /&gt;
 #SBATCH --ntasks-per-node=44&lt;br /&gt;
 #SBATCH --output=example_%j.out&lt;br /&gt;
 #SBATCH --error=example_%j.err&lt;br /&gt;
 #SBATCH --mail-user=user@example.com&lt;br /&gt;
 #SBATCH --mail-type=ALL&lt;br /&gt;
 &lt;br /&gt;
 srun ./mpi_test&lt;br /&gt;
A continuacion se explica línea por líneael script.&lt;br /&gt;
&lt;br /&gt;
Como empieza un shell script en Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre del Job:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -J example_mpi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre la particion donde se desea ejecutar el trabajo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -p general&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Número de tareas. Debe de ser un número múltiplo del número de CPUs máximo que tenga un node de la partición donde se lanza:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -n 264&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Con esto se fuerza a que se lancen 44 tareas MPI en cada uno de los nodos, ocupando de este modo nodos completos. En este caso 6 nodos completos:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --ntasks-per-node=44&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de salida:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -o example_%j.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de error:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -e example_%j.err&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Correo para notificaciones:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-user=user@example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Envía correo en todos los casos:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Programa para ejecutar:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
srun ./mpi_test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nota&#039;&#039;&#039;: no se carga específicamente el módulo &amp;quot;mpi&amp;quot; ya que se carga siempre por defecto.&lt;br /&gt;
&lt;br /&gt;
Para enviarlo al clúster debe ejecutar el comando: &#039;&#039;sbatch script.sh&#039;&#039;. El ejemplo anterior ejecutará una tarea OpenMPI con 264 procesos reservando 264 cores para ello.&lt;br /&gt;
&lt;br /&gt;
=== Trabajos multiproceso OpenMP ===&lt;br /&gt;
Los trabajos paralelos diseñados para ejecutarse en un sistema multi-core (shared-memory) suelen ser &amp;quot;multi-threaded&amp;quot;. La programación de un job de este tipo requiere especificar el número de núcleos que se utilizan para acomodar los subprocesos.&lt;br /&gt;
&lt;br /&gt;
OpenMP es el conjunto común de variables de compilación para facilitar el desarrollo de programas multi-threaded. Un script típico de SLURM para un programa de este tipo se ve así:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 #SBATCH -J OMPtest&lt;br /&gt;
 #SBATCH -p general&lt;br /&gt;
 #SBATCH -n 1&lt;br /&gt;
 #SBATCH -c 44&lt;br /&gt;
 #SBATCH --ntasks-per-node=44&lt;br /&gt;
 #SBATCH --mem-per-cpu=1024&lt;br /&gt;
 #SBATCH -o example_%j.out&lt;br /&gt;
 #SBATCH -e example_%j.err&lt;br /&gt;
 #SBATCH --mail-user=user@example.com&lt;br /&gt;
 #SBATCH --mail-type=ALL&lt;br /&gt;
&lt;br /&gt;
 OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK time ./omp-program&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Como debe comenzar un script en Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre del Job:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -J OMPtest&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre la particion donde desea ejecutar el Job:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -p general&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Número de trabajos:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Número de tareas:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -c 44&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Con esto se fuerza a que se agrupen las 44 tareas en un nodo (en OpenMP no hay comunicación entre nodos, por lo que todas las tareas deben estar en el mismo nodo o no funcionaría):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --ntasks-per-node=44&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Memoria por core (MBytes):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem-per-cpu=1024&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de salida:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -o example_%j.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de error:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -e example_%j.err&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Correo para notificaciones:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-user=user@example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Enviar correo en todos los casos:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Programa para ejecutar:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK time ./omp-program &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cuando se utiliza un programa OpenMP, el número de subprocesos (y, por lo tanto, el número requerido de núcleos) se especifica a través de la variable de entorno OMP_NUM_THREADS que, por lo tanto, aparece en el script frente a la llamada al programa. Lo estamos configurando en la variable interna SLURM_CPUS_PER_TASK que se establece a través de la opción &amp;quot;-c&amp;quot; (a 44 en nuestro ejemplo, que sería el número total de cores de un nodo de la partición &amp;quot;general&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
La opción &amp;quot;-n&amp;quot; se mantiene en 1 para indicar un único trabajo principal que tiene 44 tareas. Para asegurarnos que todas las tareas se ejecutan en el mismo nodo, se añade la opción &amp;quot;--ntasks-per-node&amp;quot; con el máximo número de cores que tiene un nodo de la partición donde se está lanzando el trabajo.&lt;br /&gt;
&lt;br /&gt;
=== Ejecución de tareas en GPUs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -J ejemplo_gpus&lt;br /&gt;
#SBATCH -p v100&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
#SBATCH -o ejemplo_%j.out&lt;br /&gt;
#SBATCH -e ejemplo_%j.err&lt;br /&gt;
#SBATCH --mail-user=correo@gmail.com&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH --mem-per-cpu=4300&lt;br /&gt;
#SBATCH --gres=gpu:1&lt;br /&gt;
&lt;br /&gt;
./programa&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Inicio de un bash script en Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre del trabajo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -J ejemplo_gpus&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre la partición donde se ejecuta el trabajo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --partition=v100&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Número de tareas:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de salida:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -o ejemplo_%j.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de error:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -e ejemplo_%j.err&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Correo para notificaciones:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-user=user@example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Enviar correo en todos los casos:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Memoria por CPU (MB):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem-per-cpu=4365&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cantidad utilizada de GPUs. El parámetro gpu:1 indica la cantidad de tarjetas a utilizar (cada nodo tiene 2 GPUs):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --gres=gpu:1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Programa para ejecutar:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./programa&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Job Arrays ===&lt;br /&gt;
Cuando se ejecutan cientos o miles de simulaciones que utilizan la misma cantidad de recursos, puede ser una ventaja ejecutar estas simulaciones como un &amp;quot;job array&amp;quot;. Los job array le permiten enviar miles de dichos trabajos (llamados &amp;quot;job steps&amp;quot;) con un solo script. A cada simulación se le asignará un valor único para la variable de entorno SLURM_ARRAY_TASK_ID. Puede usar esta variable para leer parámetros para pasos individuales de una línea dada de un archivo.&lt;br /&gt;
&lt;br /&gt;
=== Caso de uso de un Script Job Array (Gaussian) ===&lt;br /&gt;
Tenemos usuarios que actualmente envían varias simulaciones al clúster que son similares en cuanto al uso de recursos, pero, la diferencia es que solo cambia la entrada que le entregan al programa. Para esta situación, recomendamos hacer uso de un script Job Array.&lt;br /&gt;
&lt;br /&gt;
En este ejemplo crearemos un script job array para el software Gaussian, el cual, realizará 63 simulaciones, cada una de estas utilizará 8 cores y podrá alcanzar un uso máximo de 8 Gb de memoria ram. Para este caso utilizaremos la partición slims donde cada nodo tiene 46 Gb de memoria ram y 20 cores.&lt;br /&gt;
&lt;br /&gt;
Script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# ----------------SLURM Parameters----------------&lt;br /&gt;
#SBATCH -J prueba&lt;br /&gt;
#SBATCH -p slims&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
#SBATCH -c 8&lt;br /&gt;
#SBATCH --mem-per-cpu=1000&lt;br /&gt;
#SBATCH --mail-user=prueba@nlhpc.cl&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH --array=1-63&lt;br /&gt;
#SBATCH -o prueba_%A_%a.out&lt;br /&gt;
#SBATCH -e prueba_%A_%a.err&lt;br /&gt;
#-----------------Toolchain---------------------------&lt;br /&gt;
ml purge&lt;br /&gt;
ml intel/2019b&lt;br /&gt;
# ----------------Módulos-----------------------------&lt;br /&gt;
ml g16/B.01&lt;br /&gt;
# ----------------Comandos--------------------------&lt;br /&gt;
file=$(ls Child_10_*.com | sed -n ${SLURM_ARRAY_TASK_ID}p)&lt;br /&gt;
srun g16 $file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
Descripción de comandos utilizados en script:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Inicio de un bash script en Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre de la simulación:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -J prueba&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre la partición donde se ejecuta la simulación:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -p slims&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Número de tareas (1 tarea va a ejecutar 63 simulaciones):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Core’s por tareas (cada tarea utilizará un máximo 8 cores):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -c 8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Memoria ram por cpu (cada tarea utilizará un máximo 8 Gb de ram):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH –mem-per-cpu=1000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Correo para activar el envío de notificaciones:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-user=prueba@nlhpc.cl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Permitir envío de notificaciones:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se generan 63 simulaciones diferentes:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --array=1-63&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de salida: (ejemplo: prueba_18455017_1.out)&lt;br /&gt;
&lt;br /&gt;
* %A corresponde al Job ID de nuestra tarea que le asignará Slurm → 18455017.&lt;br /&gt;
* %a corresponde a la simulación X de nuestra tarea que le asignará Slurm → 1.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -o prueba_%A_%a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de errores: (ejemplo: prueba_18455017_1.err)&lt;br /&gt;
&lt;br /&gt;
* %A corresponde al Job ID de nuestra tarea que le asignará Slurm → 18455017.&lt;br /&gt;
* %a corresponde a la simulación X de nuestra tarea que le asignará Slurm → 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -e prueba_%A_%a.err&lt;br /&gt;
Toolchain: en este apartado, limpiaremos nuestro entorno de software no deseados y luego escogemos la herramienta informática con la cual está compilado el software Gaussian (nosotros utilizamos el compilador Intel/2019b).&lt;br /&gt;
&lt;br /&gt;
#-----------------Toolchain---------------------------&lt;br /&gt;
ml purge&lt;br /&gt;
ml intel/2019b&lt;br /&gt;
Módulos: cargamos el software Gaussian versión 16/B.0.&lt;br /&gt;
&lt;br /&gt;
# ----------------Módulos-----------------------------&lt;br /&gt;
ml g16/B.01&lt;br /&gt;
Comandos: aquí definimos los comandos a ejecutar.&lt;br /&gt;
&lt;br /&gt;
# ----------------Comandos--------------------------&lt;br /&gt;
file=$(ls Child_10_*.com | sed -n ${SLURM_ARRAY_TASK_ID}p)&lt;br /&gt;
srun g16 $file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
file= variable que va a listar los archivos de entrada que comiencen por Child_10_ y terminen en .com&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Child.png|no]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sed -n ${SLURM_ARRAY_TASK_ID}p) ← Sed imprimirá las líneas de cada archivo de entrada y la variable $SLURM_ARRAY_TASK_ID asumirá estas entradas como matriz de simulación en nuestro job array, en este ejemplo tenemos 63 archivos de entrada.&lt;br /&gt;
&lt;br /&gt;
Para más detalles sobre los archivos stdin, stdout y stderr de una simulación % A será reemplazado por el valor de SLURM_ARRAY_JOB_ID que es el Job ID de nuestra tarea y %a será reemplazado por el valor de SLURM_ARRAY_TASK_ID que corresponde a la simulación X de nuestra tarea.&lt;br /&gt;
&lt;br /&gt;
Srun g16 $file: ejecutará el comando gaussian g16 interpretando la variable $file en los nodos de cómputo asignados.&lt;br /&gt;
&lt;br /&gt;
Enviar el script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[prueba@leftraru1 ~]$ sbatch prueba.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ejecución de una tarea que ocupa mucha RAM por CPU ===&lt;br /&gt;
Debemos tener en cuenta que la RAM que SLURM reserva por defecto son 1000 MB. Un típico error de cancelación de tarea por falta de memoria es el siguiente:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/tmp/slurmd/job136839939/slurm_script: line 15: 23547 Killed                  ./programa.sh&lt;br /&gt;
slurmstepd: error: Detected 1 oom-kill event(s) in step 136839939.batch cgroup. Some of your processes &lt;br /&gt;
may have been killed by the cgroup out-of-memory handler.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Si su tarea ocupa más de la memoria por defecto, puede utilizar el siguiente parámetro:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem-per-cpu=2300 #Máxima RAM por CPU&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Esto hará que SLURM reserve más RAM por CPU para sus tareas.&lt;br /&gt;
&lt;br /&gt;
Tenga en cuenta que nuestros nodos tienen 46 GB de memoria RAM (Partición slims), 187 GB (Partición general) y 765 GB (Partición largemem) por nodo. [https://wiki.nlhpc.cl/Hardware_Disponible Más información].&lt;br /&gt;
&lt;br /&gt;
Otra forma de reservar memoria es utilizando el siguiente parámetro:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem=2300&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
En este caso SLURM realizará una reserva de memoria de 2300 MB pero por la totalidad del trabajo.&lt;br /&gt;
&lt;br /&gt;
Los parámetros anteriores al igual que el número de CPUs que se van a usar, hay que afinarlos lo mejor posible. Para ello lo que se puede hacer es hacer pruebas en los nodos logins, sin lanzar en las colas, y así estudiar el uso de RAM y CPU por parte de sus procesos.&lt;br /&gt;
&lt;br /&gt;
=== Ejecución de una tarea con Dependencias ===&lt;br /&gt;
Las dependencias de trabajos se utilizan para aplazar el inicio de un trabajo hasta que se satisfagan las dependencias especificadas. Se especifican con la opción --dependency en el siguiente formato:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch --dependency=&amp;lt;type:job_id[:job_id][,type:job_id[:job_id]]&amp;gt; ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Los tipos de dependencias son las siguientes:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;after&#039;&#039;&#039;:jobid[:jobid...] - el trabajo puede empezar después de que los trabajos especificados comiencen&lt;br /&gt;
* &#039;&#039;&#039;afterany&#039;&#039;&#039;:jobid[:jobid...] - el trabajo puede empezar después de que los trabajos especificados terminen&lt;br /&gt;
* &#039;&#039;&#039;afternotok&#039;&#039;&#039;:jobid[:jobid...] - el trabajo puede empezar después que los trabajos especificados terminan fallidamente&lt;br /&gt;
* &#039;&#039;&#039;afterok&#039;&#039;&#039;:jobid[:jobid...] - el trabajo puede empezar después que los trabajos especificados terminan exitósamente&lt;br /&gt;
&lt;br /&gt;
La manera más simple de usar una dependencia del tipo afterok:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[prueba@leftraru1 ~]$ sbatch job1.sh&lt;br /&gt;
Submitted batch job 21363626&lt;br /&gt;
[prueba@leftraru1 ~]$ sbatch --dependency=afterok:21363626 job2.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora cuando job1.sh termine correctamente, el job2.sh entrará en ejecución. Si job1.sh termina fallidamente, job2.sh no entrará en ejecución nunca pero sí quedará en cola (debe cancelarse manualmente el trabajo).&lt;br /&gt;
&lt;br /&gt;
== Prioridad de tarea ==&lt;br /&gt;
Cómo ver la prioridad del trabajo. Los factores que determinan la prioridad del trabajo, incluyendo la fórmula y pesos.&lt;br /&gt;
&lt;br /&gt;
=== Factores que determinan prioridad de tarea ===&lt;br /&gt;
&amp;lt;table class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 60%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Comando SLURM&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Descripción&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Edad&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;la cantidad de tiempo que el trabajo ha estado esperando en la cola.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Tamaño de la tarea&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;número de nodos solicitados por el trabajo.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Partición&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;prioridad para una partición determinada.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Prioridad Baja&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Mientras más tareas se ejecuten en el cluster, menor será la prioridad.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Prioridad Alta&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Mientras menos tareas se ejecuten en el clúster, más alta es la prioridad.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Prioridad de tarea ==&lt;br /&gt;
Cómo ver la prioridad del trabajo. Los factores que determinan la prioridad del trabajo, incluyendo la fórmula y pesos.&lt;br /&gt;
&lt;br /&gt;
=== Factores que determinan prioridad de tarea ===&lt;br /&gt;
* Edad - la cantidad de tiempo que el trabajo ha estado esperando en la cola&lt;br /&gt;
* Tamaño Oficio - número de nodos solicitados por el trabajo&lt;br /&gt;
* Partición - prioridad para una partición determinada&lt;br /&gt;
* Contribución de prioridades basada en los recursos informáticos utilizados por los miembros de un grupo de investigación en los últimos 30 días - Fairshare.&lt;br /&gt;
* Mientras más tareas se ejecuten en el cluster, menor será la prioridad.&lt;br /&gt;
* Mientras menos tareas se ejecuten en el clúster, más alta es la prioridad.&lt;br /&gt;
Fórmula Prioridad de tarea&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Job_priority =&lt;br /&gt;
  (PriorityWeightAge) * (age_factor) +&lt;br /&gt;
  (PriorityWeightFairshare) * (fair-share_factor) +&lt;br /&gt;
  (PriorityWeightJobSize) * (job_size_factor) +&lt;br /&gt;
  (PriorityWeightPartition) * (partition_factor) +&lt;br /&gt;
  (PriorityWeightQOS) * (QOS_factor)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Visualización de sus Tareas ==&lt;br /&gt;
Si Ud. necesita visualizar información acerca de sus tareas de forma interactiva, puede utilizar el comando smap:&lt;br /&gt;
&lt;br /&gt;
smap -i 3&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Smap.png|no|700px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De esta forma, tendrá una actualización cada 3 segundos de sus tareas en ejecución incluyendo los nodos en los cuales se encuentran ejecutándose.&lt;br /&gt;
&lt;br /&gt;
== Bibliografía ==&lt;br /&gt;
[http://slurm.schedmd.com/documentation.html Manual Oficial de Slurm]&lt;br /&gt;
&lt;br /&gt;
[https://slurm.schedmd.com/scrontab.html Documentación scrontab]&lt;/div&gt;</summary>
		<author><name>Jmorales</name></author>
	</entry>
	<entry>
		<id>https://wiki.nlhpc.cl/index.php?title=SISTEMA_GESTOR_DE_RECURSOS&amp;diff=767</id>
		<title>SISTEMA GESTOR DE RECURSOS</title>
		<link rel="alternate" type="text/html" href="https://wiki.nlhpc.cl/index.php?title=SISTEMA_GESTOR_DE_RECURSOS&amp;diff=767"/>
		<updated>2024-04-29T22:01:12Z</updated>

		<summary type="html">&lt;p&gt;Jmorales: /* Cancelar un trabajo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== SLURM Workload Manager ==&lt;br /&gt;
Es un sistema de programación de trabajos y gestión de clústeres de código abierto, tolerante a fallas y altamente escalable para clústeres Linux grandes y pequeños.&lt;br /&gt;
&lt;br /&gt;
Como administrador de carga de trabajo de clúster, Slurm tiene tres funciones clave. Primero, asigna acceso exclusivo y / o no exclusivo a los recursos (nodos de cómputo) a los usuarios durante un período de tiempo para que puedan realizar el trabajo. En segundo lugar, proporciona un marco para iniciar, ejecutar y monitorear el trabajo (normalmente un trabajo paralelo) en el conjunto de nodos asignados. Finalmente, arbitra la contención de recursos mediante la gestión de una cola de trabajo pendiente.&lt;br /&gt;
&lt;br /&gt;
SLURM es el gestor de colas instalado en muchos de los súper computadores del [https://www.top500.org/ TOP500], y también en el clúster del NLHPC. Si Ud. quiere lanzar tareas dentro de Leftaru, debe hacerlo a través de Slurm.&lt;br /&gt;
&lt;br /&gt;
== Conceptos clave ==&lt;br /&gt;
SLURM gestiona trabajos de usuario que tienen las siguientes características clave:&lt;br /&gt;
&lt;br /&gt;
* Conjunto de recursos solicitados:&lt;br /&gt;
** Número de recursos informáticos: nodos (incluidas todas sus CPUs y núcleos) o CPUs (incluidos todos sus núcleos) o solo núcleos&lt;br /&gt;
** Cantidad de memoria: por nodo o por CPU (lógica)&lt;br /&gt;
** Tiempo necesario para que las tareas del usuario completen su trabajo&lt;br /&gt;
* Una partición de nodo solicitada (cola de trabajos)&lt;br /&gt;
* Un nivel de calidad de servicio (QoS) solicitado que otorga a los usuarios accesos específicos&lt;br /&gt;
* Una cuenta solicitada con recursos limitados&lt;br /&gt;
&lt;br /&gt;
De manera predeterminada, los usuarios envían trabajos a una partición particular (marcada como tal para todos los usuarios) y bajo una cuenta particular (preestablecida por usuario).&lt;br /&gt;
&lt;br /&gt;
== Particiones SLURM ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 60%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nombre Particion&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nodos&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;CPUs&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;RAM&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Descripción&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;main&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;27&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;256&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;768GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;general&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;48&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;44&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;187GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;largemem&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;9&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;44&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;765GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;v100&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;44&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;187GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;4 GPUs Nvidia Tesla V100.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;mi100&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;128&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;502GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2 GPUs AMD Instinct MI100.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;debug&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;4&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;20&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;59GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Destinados a pruebas de máximo 30 minutos.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Introducción a los comandos slurm ==&lt;br /&gt;
&amp;lt;table class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 60%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Comando SLURM&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Descripción&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;srun&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ejecutar un comando en nodos de cómputo asignados.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;sbatch&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;presentar un script de trabajo&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;squeue&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Mostrar estado de los trabajos en la cola.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;scancel&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;eliminar un trabajo.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;sinfo&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Muestra el estado de los nodos de cómputo.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
Estos son los comandos básicos utilizados para realizar la mayoría de las operaciones básicas con SLURM.&lt;br /&gt;
&lt;br /&gt;
=== Estado de nodos ===&lt;br /&gt;
Para consultar el uso de nuestra infraestructura y qué particiones están más libres, le recomendamos el comando sinfo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# sinfo&lt;br /&gt;
PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST&lt;br /&gt;
all        up    infinite    16     mix   cn[001,005-006,010,034-035,037,041,045,050,057,108,121],sn[012,016,037]&lt;br /&gt;
all        up    infinite    95     alloc cn[011-033,038-044,046-049,071-120],cnf[001-004],sn[001-011,038-041,043-044]&lt;br /&gt;
all        up    infinite    33     idle  fn[001-009],gn[001-002],sn[018-035,045-048]&lt;br /&gt;
main*      up    infinite    20     alloc mn[001-011,014-022]&lt;br /&gt;
main*      up    infinite    7      idle [012-013,023-027]&lt;br /&gt;
debug      up    infinite    4      idle  leftraru[1-2]&lt;br /&gt;
general    up    infinite    4      mix   sn[012,016,037,042]&lt;br /&gt;
general    up    infinite    22     alloc sn[001-011,013-015,017,036,038-041,043-044]&lt;br /&gt;
general    up    infinite    22     idle  sn[018-035,045-048]&lt;br /&gt;
largemem   up    infinite    9      idle  fn[001-009]&lt;br /&gt;
v100       up    infinite    2      idle  gn[001-002]&lt;br /&gt;
mi100      up    infinite    1      idle  gna001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fijándose en el texto resaltado de la salida del comando sinfo, se puede comprobar que en la partición main hay 20 nodos que están completamente ocupados (estado alloc), 7 nodos que están libres (idle); por otro lado, en la partición general hay 22 nodos completamente ocupados, 4 parcialmente ocupados y 22 libres. Dado este escenario, está claro que debería de lanzar sus ejecuciones en los nodos de la partición general, por las razones anteriormente expuestas.&lt;br /&gt;
&lt;br /&gt;
Para lanzar en la partición general, debe tener en cuenta que tiene que indicar en su script que se use dicha partición en vez de, probablemente, main. Por supuesto, en esta partición cambian las características técnicas, se pasan a tener 44 cores por nodo (en vez de 256 en main) y una capacidad RAM de 187GB (en vez de 768GB en main). Puede ver más información de las particiones en este link(agregar link), donde podrá revisar que con la inclusión de Guacolda hemos añadido nodos con hasta 765GB de memoria RAM y nodos con GPUs Nvidia Tesla V100 y AMD Instinct MI100 .&lt;br /&gt;
&lt;br /&gt;
Para ver los nodos disponibles y poder determinar en que partición lanzar los trabajos se recomienda utilizar el siguiente comando.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;[prueba@leftraru1 ~]$ sinfo -o &amp;quot;%10P %6D %10t %10m %c&amp;quot; -t idle| egrep &amp;quot;PARTITION|main|general|largemem|v100&amp;quot;&lt;br /&gt;
PARTITION  NODES  STATE      MEMORY     CPUS&lt;br /&gt;
main*       27    idle       768000      256&lt;br /&gt;
general     2     idle       187000      44&lt;br /&gt;
largemem    7     idle       765000      44&lt;br /&gt;
v100        1     idle       187000      44 &lt;br /&gt;
mi100       1     idle       515047      128 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
El comando anterior muestra que main tiene 27 nodos libres, en este caso es recomendado lanzar en en main para evitar que el trabajo quede en cola por falta de recursos en otros nodos.&lt;br /&gt;
&lt;br /&gt;
Otro Ejemplo, se muestra sólo una partición específica&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;[prueba@leftraru1 ~]$ sinfo -p main&lt;br /&gt;
PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST&lt;br /&gt;
main*        up   infinite     15    mix mn[001-008,014-020]&lt;br /&gt;
main*        up   infinite     12   idle mn[009-013,021-027]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Comprobación del estado de tareas ===&lt;br /&gt;
squeue - Muestra el estatus de los trabajos&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;squeue                  # tus trabajos&lt;br /&gt;
squeue -u &amp;amp;lt;username&amp;amp;gt;    # trabajos por usuario &amp;amp;lt;username&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
squeue: Comprobar estados de los trabajos&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;&amp;quot; class=&amp;quot;mw-highlight mw-content-ltr&amp;quot; dir=&amp;quot;ltr&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  JOBID        PARTITION     NAME     USER    ST       TIME  	NODES 	NODELIST(REASON)&lt;br /&gt;
13951858_1     general	     test1    test1    R   1-18:35:14      2    cn[009-010]&lt;br /&gt;
13951857_2     general       test2    test1    R   1-18:36:11      2    cn[099-100]&lt;br /&gt;
13956453       gpu           test3    test3    R   1-03:42:08      1    cn039&lt;br /&gt;
13956449       largemem      test4    test4    R   1-05:42:08      1    cn044&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puede utilizar squeue para saber el estado de una o varias de sus tareas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ squeue -o &amp;quot;%.15i %.6P %.8j %.20S %.11M %.11L %.20V %.10Q %.4C %.2D %.6m&amp;quot; -S -t,-Q&lt;br /&gt;
 JOBID   PARTIT     NAME      START_TIME          TIME      TIME_LEFT     SUBMIT_TIME       PRIORITY CPUS NO MIN_ME&lt;br /&gt;
10837561 general   TEST1   2018-06-18T18:51:01    19:00:31  2-04:59:29  2018-06-18T18:51:01  119972    1  1  1000M&lt;br /&gt;
10838562 general   TEST2   2018-06-19T11:30:47    2:20:45   2-21:39:15  2018-06-19T11:30:46  119946    1  1  1000M&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
para mas opciones puede revisar con el comando [https://slurm.schedmd.com/squeue.html man squeue] las opciones restantes.&lt;br /&gt;
&lt;br /&gt;
=== Códigos de ESTADO de los trabajos ===&lt;br /&gt;
&lt;br /&gt;
Los trabajos suelen pasar por varios estados durante su ejecución. Los estados típicos son PENDIENTE, EN EJECUCIÓN, SUSPENDIDO, FINALIZANDO y TERMINADO. A continuación se explica cada estado.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;BF&#039;&#039;&#039; BOOT_FAIL&lt;br /&gt;
    Trabajo finalizado debido a un fallo de arranque, normalmente debido a un fallo de hardware (por ejemplo, no se puede arrancar el nodo o bloque y el trabajo no se puede volver a poner en cola). &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CA&#039;&#039;&#039; CANCELADO&lt;br /&gt;
    El trabajo ha sido cancelado explícitamente por el usuario o el administrador del sistema. El trabajo puede haberse iniciado o no. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CD&#039;&#039;&#039; TERMINADO&lt;br /&gt;
    El trabajo ha terminado todos los procesos en todos los nodos con un código de salida de cero. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CF&#039;&#039;&#039; CONFIGURANDO&lt;br /&gt;
    Al trabajo se le han asignado recursos, pero están esperando a que estén listos para su uso (por ejemplo, arrancando). &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CG&#039;&#039;&#039; COMPLETANDO&lt;br /&gt;
    El trabajo está en proceso de finalización. Algunos procesos en algunos nodos pueden estar aún activos. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DL&#039;&#039;&#039; FECHA LÍMITE&lt;br /&gt;
    El trabajo ha finalizado en la fecha límite. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;F&#039;&#039;&#039; FALLÓ&lt;br /&gt;
    Trabajo finalizado con un código de salida distinto de cero u otra condición de fallo. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NF&#039;&#039;&#039; NODO_FAIL&lt;br /&gt;
    Trabajo finalizado debido al fallo de uno o más nodos asignados. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;OOM&#039;&#039;&#039; OUT_OF_MEMORY&lt;br /&gt;
    El trabajo ha experimentado un error de memoria insuficiente. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PD&#039;&#039;&#039; PENDIENTE&lt;br /&gt;
    El trabajo está pendiente de asignación de recursos. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PR&#039;&#039;&#039; PREEMPTED&lt;br /&gt;
    El trabajo ha finalizado debido a una espera. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;R&#039;&#039;&#039; EN MARCHA&lt;br /&gt;
    El trabajo tiene actualmente una asignación. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RD&#039;&#039;&#039; RESV_DEL_HOLD&lt;br /&gt;
    El trabajo se está reteniendo después de que se eliminara la reserva solicitada. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RF&#039;&#039;&#039; REQUEUE_FED&lt;br /&gt;
    El trabajo está siendo solicitado por una federación. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RH&#039;&#039;&#039; REQUEUE_HOLD&lt;br /&gt;
    Se está volviendo a poner en cola un trabajo retenido. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RQ&#039;&#039;&#039; REQUEUED&lt;br /&gt;
    Se está poniendo en cola un trabajo que se está completando. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RS&#039;&#039;&#039; CAMBIO DE TAMAÑO&lt;br /&gt;
    El trabajo está a punto de cambiar de tamaño. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RV&#039;&#039;&#039; REVOCADO&lt;br /&gt;
    El trabajo se ha retirado del clúster debido a que otro clúster ha iniciado el trabajo. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SI&#039;&#039;&#039; SEÑALANDO&lt;br /&gt;
    El trabajo está siendo señalizado. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SE&#039;&#039;&#039; SPECIAL_EXIT&lt;br /&gt;
    El trabajo se ha puesto en cola en un estado especial. Este estado puede ser establecido por los usuarios, normalmente en EpilogSlurmctld, si el trabajo ha terminado con un valor de salida particular. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SO&#039;&#039;&#039; STAGE_OUT&lt;br /&gt;
    El trabajo está preparando los archivos. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ST&#039;&#039;&#039; PARADO&lt;br /&gt;
    El trabajo tiene una asignación, pero la ejecución se ha detenido con la señal SIGSTOP. Los CPUS han sido retenidos por este trabajo. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;S&#039;&#039;&#039; SUSPENDIDO&lt;br /&gt;
    El trabajo tiene una asignación, pero se ha suspendido la ejecución y se han liberado CPUs para otros trabajos. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TO&#039;&#039;&#039; TIMEOUT&lt;br /&gt;
    El trabajo ha finalizado al alcanzar su límite de tiempo.&lt;br /&gt;
&lt;br /&gt;
=== Cancelar un trabajo ===&lt;br /&gt;
Con scancel se puede cancelar un trabajo en ejecución&lt;br /&gt;
&amp;lt;pre&amp;gt;scancel &amp;amp;lt;jobID&amp;amp;gt;         # Matar proceso &amp;amp;lt;jobID&amp;amp;gt;. (puede obtener el ID del job con &amp;quot;squeue&amp;quot;)&lt;br /&gt;
scancel -u &amp;amp;lt;username&amp;amp;gt;   # Matar proceso por usuario &amp;amp;lt;username&amp;amp;gt;. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;[prueba@leftraru1 ~]$ squeue -u prueba&lt;br /&gt;
 JOBID  PARTITION    NAME     USER    ST   TIME  NODES  NODELIST(REASON)&lt;br /&gt;
 45594    main       TEST    prueba   R    0:59   3     mn[001-003]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;[prueba@leftraru1 ~]$ scancel 45594&lt;br /&gt;
[prueba@leftraru1 ~]$ squeue -u prueba&lt;br /&gt;
JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)&lt;br /&gt;
[prueba@leftraru1 ~]$&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ver estado de trabajos ===&lt;br /&gt;
Para revisar el detalle de las opciones de un trabajo: scontrol show job&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ scontrol show job 10837561&lt;br /&gt;
JobId=10837561 JobName=TEST1&lt;br /&gt;
   UserId=usuario(1000) GroupId=group(1000) MCS_label=N/A&lt;br /&gt;
   Priority=1100 Nice=0 Account=account QOS=120&lt;br /&gt;
   JobState=RUNNING Reason=None Dependency=(null)&lt;br /&gt;
   Requeue=0 Restarts=0 BatchFlag=1 Reboot=0 ExitCode=0:0&lt;br /&gt;
   DerivedExitCode=0:0&lt;br /&gt;
   RunTime=19:03:08 TimeLimit=3-00:00:00 TimeMin=N/A&lt;br /&gt;
   SubmitTime=2018-06-18T18:51:01 EligibleTime=2018-06-18T18:51:01&lt;br /&gt;
   StartTime=2018-06-18T18:51:01 EndTime=2018-06-21T18:51:01 Deadline=N/A&lt;br /&gt;
   PreemptTime=None SuspendTime=None SecsPreSuspend=0&lt;br /&gt;
   Partition=slims AllocNode:Sid=leftraru2:5471&lt;br /&gt;
   ReqNodeList=(null) ExcNodeList=(null)&lt;br /&gt;
   NodeList=cn021&lt;br /&gt;
   BatchHost=cn021&lt;br /&gt;
   NumNodes=1 NumCPUs=1 NumTasks=1 CPUs/Task=1 ReqB:S:C:T=0:0:*:*&lt;br /&gt;
   TRES=cpu=1,mem=1000M,node=1&lt;br /&gt;
   Socks/Node=* NtasksPerN:B:S:C=1:0:*:* CoreSpec=*&lt;br /&gt;
     Nodes=cn021 CPU_IDs=1 Mem=1000 GRES_IDX=&lt;br /&gt;
   MinCPUsNode=1 MinMemoryCPU=1000M MinTmpDiskNode=0&lt;br /&gt;
   Features=(null) DelayBoot=00:00:00&lt;br /&gt;
   Gres=(null) Reservation=(null)&lt;br /&gt;
   OverSubscribe=OK Contiguous=0 Licenses=matlab Network=(null)&lt;br /&gt;
   Command=/home/usuario/script.sh&lt;br /&gt;
   WorkDir=/home/usuario/&lt;br /&gt;
   StdErr=/home/usuario/10837561_%x.err&lt;br /&gt;
   StdIn=/dev/null&lt;br /&gt;
   StdOut=/home/usuario/10837561_%x.out&lt;br /&gt;
   Power=&lt;br /&gt;
   BatchScript=&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para ver el script asociado a un trabajo: scontrol write batch_script &amp;lt;job_id&amp;gt; -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ scontrol write batch_script 10837561 -&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -J nombre_del_trabajo&lt;br /&gt;
#SBATCH -p slims&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
#SBATCH --ntasks-per-node=1&lt;br /&gt;
#SBATCH --mail-user=usaurio@correo.cl&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH -o nombre_del_trabajo%j_%x.out&lt;br /&gt;
#SBATCH -e nombre_del_trabajo%j_%x.err&lt;br /&gt;
#SBATCH --license=matlab &lt;br /&gt;
 &lt;br /&gt;
ml MATLAB/2017a&lt;br /&gt;
&lt;br /&gt;
matlab -nodisplay -nosplash -nodesktop &amp;lt; programa.m&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ejecutando trabajos ==&lt;br /&gt;
Actualmente contamos con 2 metodos de enviar trabajos bajo SLURM: &#039;&#039;&#039;sbatch&#039;&#039;&#039; and &#039;&#039;&#039;srun&#039;&#039;&#039;. A veces puede ser ventajoso ejecutar un solo comando en el clúster como prueba o realizar rápidamente una operación con recursos adicionales. &#039;srun&#039; permite a los usuarios hacer esto, y comparte las mismas variables que &#039;sbatch&#039; . STDOUT y STDERR para un trabajo &#039;srun&#039; serán redirigidos a la pantalla del usuario. Ctrl-C cancelará un trabajo srun. &#039;&#039;&#039;sbatch&#039;&#039;&#039; enviará un script de trabajo para que lo ejecute el clúster. Los scripts de trabajo bajo SLURM son simplemente scripts de shell (* .sh) con un conjunto de solicitudes de recursos en la parte superior del script.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Uso básico de srun:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
srun &amp;lt;algúnComando&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de salida (ejecutando el comando &amp;quot;hostname&amp;quot; para saber en que nodo se está ejecutando):&lt;br /&gt;
&amp;lt;pre&amp;gt; $ srun hostname&lt;br /&gt;
  cn003&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para enviar un script de trabajo a SLURM:&lt;br /&gt;
&amp;lt;pre&amp;gt;sbatch nombreScript.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example output:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sbatch test-job.sh&lt;br /&gt;
Submitted batch job 1169&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Variables Slurm ===&lt;br /&gt;
Las variables en esta sección son obligatorias, y SLURM las determina para determinar dónde y cuándo se ejecutarán sus trabajos. Si no asigna un valor para estos, el planificador asignará a sus trabajos el valor predeterminado. Si no solicita específicamente recursos para un trabajo, se le asignará un conjunto de recursos predeterminados. Para obtener una lista de todas las variables disponibles, consulte la documentación de SLURM en http://slurm.schedmd.com/sbatch.html. Las variables de este artículo estaban cubiertas porque eran las más relevantes para los casos de uso típicos.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Comando SLURM&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Descripción&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;--mem-per-cpu=&amp;amp;lt;megabytes&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Memoria requerida para el trabajo por CPU (en MegaBytes). El valor predeterminado es 1024 MB.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-p &amp;amp;lt;partition&amp;amp;gt;, --partition=&amp;amp;lt;partition&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Enviar un trabajo a una partición específica.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-n, --ntasks=&amp;amp;lt;cantidad de tareas&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Número de tareas que serán asignadas para el trabajo.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-c &amp;amp;lt;cpus&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Esta es la cantidad de CPU que necesita su trabajo. Tenga en cuenta que SLURM es relativamente generoso con las CPU, y el valor especificado aquí es el número &amp;quot;mínimo&amp;quot; de CPU que se asignará a su trabajo. Si hay CPU adicionales disponibles en un nodo más allá de lo solicitado, su trabajo recibirá esas CPU hasta que otros trabajos las necesiten. El valor predeterminado es 1 CPU. Intentar usar más CPU de las que se le asignaron dará como resultado que sus procesos adicionales se turnen en la misma CPU (ralentizando su trabajo).&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-J &amp;amp;lt;name&amp;amp;gt;, --jobname=&amp;amp;lt;name&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Especifica un nombre a tu trabajo.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;--mail-type=BEGIN,END,FAIL,ALL&amp;lt;b&amp;gt; and &amp;lt;/b&amp;gt;--mail-user=&amp;amp;lt;emailAddress&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Enviar por correo electrónico cuando su trabajo comienza / termina / falla. Puede especificar varios valores para esto (separados por comas) si es necesario.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-o &amp;amp;lt;STDOUT_log&amp;amp;gt;, --output=&amp;amp;lt;STDOUT_log&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Redirija la salida a los archivos de registro que especifique. Por defecto, ambos, STDOUT and STDERR son enviados a este archivo. Puedes especificar %j como parte del nombre de archivo de registro para indicar la ID del trabajo (como ejemplo, &amp;quot;#SBATCH -o ouptut_%j.o&amp;quot; redirigiría la salida a &amp;quot;output_123456.o&amp;quot;).&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-e &amp;amp;lt;STDERR_log&amp;amp;gt;, --error=&amp;amp;lt;STDERR_log&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Redireccionar STDERR a un archivo separado. Funciona exactamente igual que &amp;quot;-o&amp;quot;.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-t &amp;amp;lt;days-hours:minutes:seconds&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Walltime para tu trabajo. La duración del Walltime es el tiempo que espera que su trabajo se ejecute.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-a, --array=&amp;amp;lt;índices&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Envía una lista (arreglo) de trabajos identicos. Solo aplica para sbatch.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los scripts de trabajo especifican los recursos solicitados y otras consideraciones especiales con comentarios especiales &amp;quot;#SBATCH&amp;quot; en la parte superior de un script de trabajo. Aunque muchas de estas opciones son opcionales, las varibles que se ocupan de solicitudes de recursos (CPU, memoria y tiempo) son obligatorias. Todas las variables deben agregarse a sus scripts de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#SBATCH &amp;lt;variable&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Para especificar un nombre al job, por ejemplo, debe agregar lo siguiente a su secuencia de comandos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#SBATCH --job-name=nombreDeTrabajo&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Enviar un script===&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 #SBATCH -J example&lt;br /&gt;
 #SBATCH -p general&lt;br /&gt;
 #SBATCH -n 1&lt;br /&gt;
 #SBATCH --output=example_%j.out&lt;br /&gt;
 #SBATCH --error=example_%j.err&lt;br /&gt;
 #SBATCH --mail-user=user@example.com&lt;br /&gt;
 #SBATCH --mail-type=ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Como debe comenzar un script en Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre del trabajo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -J example&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre la partición donde desea ejecutar el Job:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -p general&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Número de tareas:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de salida:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -o example_%j.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de error:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -e example_%j.err&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Correo para notificaciones:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-user=user@example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Enviar correo en todos casos (verificar opciones arriba):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Programar tarea (uso de scrontab) ===&lt;br /&gt;
&#039;&#039;&#039;scrontab&#039;&#039;&#039; es una implementación del clásico planificador de tareas de linux &#039;&#039;&#039;crontab&#039;&#039;&#039; donde se guarda un listado de comandos a ejecutar en un tiempo determinado por el usuario.&lt;br /&gt;
&lt;br /&gt;
Para acceder a scrontab utilice el siguiente comando:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[prueba@leftraru1 ~]$ scrontab -e&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto le permitirá editar su archivo scrontab, asignando recursos como también el momento en que desea ejecutar su tarea. La estructura base a utilizar es la siguiente:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SCRON -J mi_tarea&lt;br /&gt;
#SCRON -p slims&lt;br /&gt;
#SCRON -n 1&lt;br /&gt;
#SCRON -c 1&lt;br /&gt;
#SCRON --mem-per-cpu=2300&lt;br /&gt;
#SCRON --mail-user=foo@bar.com&lt;br /&gt;
#SCRON --mail-type=ALL&lt;br /&gt;
#SCRON -o mi_tarea_%j.out&lt;br /&gt;
#SCRON -e mi_tarea_%j.err&lt;br /&gt;
# Example of job definition:&lt;br /&gt;
# .---------------- minute (0 - 59)&lt;br /&gt;
# |  .------------- hour (0 - 23)&lt;br /&gt;
# |  |  .---------- day of month (1 - 31)&lt;br /&gt;
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...&lt;br /&gt;
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat&lt;br /&gt;
# |  |  |  |  |&lt;br /&gt;
# *  *  *  *  *     command to be executed&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;minute&#039;&#039;&#039; - Corresponde al minuto en que se va a ejecutar el script, valor de 0 a 59.&lt;br /&gt;
* &#039;&#039;&#039;hour&#039;&#039;&#039; - Hora de ejecución, formato 24 horas, valor de 0 a 23, donde 0 son las 12:00 AM.&lt;br /&gt;
* &#039;&#039;&#039;day of month&#039;&#039;&#039; - Día del mes, la tarea se puede ejecutar cada x día, valor de 1 a 31.&lt;br /&gt;
* &#039;&#039;&#039;month&#039;&#039;&#039; - La tarea se puede ejecutar cada x mes, valor de 1 a 12.&lt;br /&gt;
* &#039;&#039;&#039;day of week&#039;&#039;&#039; - Día de la semana, valor de 0 a 6, donde 0 es Domingo.&lt;br /&gt;
* &#039;&#039;&#039;command to be executed&#039;&#039;&#039; - Script a ejecutar por el usuario.&lt;br /&gt;
 &lt;br /&gt;
Ejemplo envío de trabajo slurm:&lt;br /&gt;
&lt;br /&gt;
Para la asignación de recursos, utilizaremos la directriz &#039;&#039;&#039;#SCRON&#039;&#039;&#039;, que utiliza los mismos parámetros usados por &#039;&#039;&#039;#SBATCH&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Luego de asignar los recursos debemos especificar el tiempo, en este caso la tarea será ejecutada todos los días cada 20 minutos, luego debemos indicar el script enviado por el usuario y guardamos los cambios en el archivo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
*/20 * * * * /home/prueba/ejemplo/script.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es importante destacar que el script a lanzar &#039;&#039;&#039;/home/prueba/ejemplo/script.sh&#039;&#039;&#039; debe tener permisos de ejecución.&lt;br /&gt;
&lt;br /&gt;
Para revisar el listado de tareas existentes en nuestro scrontab, ejecutamos el comando:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[prueba@leftraru1 ~]$ scrontab -l&lt;br /&gt;
*/20 * * * * /home/prueba/ejemplo/script.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para borrar el contenido de nuestro scrontab:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[prueba@leftraru1 ~]$ scrontab -r&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Información a considerar:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Generar archivos de salida correctamente&lt;br /&gt;
** Para que el archivo error y out de tu script se generen en el directorio solicitado, ejemplo, /home/prueba/ejemplo/ en tu script debe estar presente el comando cd “/home/prueba/ejemplo”, esto hará que scrontab se posicione dentro del directorio de salida.&lt;br /&gt;
* Es distinto el tiempo de programar el envío de una tarea (scrontab) a que una tarea inicie en el clúster (running), ya que esto dependerá de los recursos libres que existan en ese momento en el clúster.&lt;br /&gt;
* Para revisar las tareas programadas debe ejecutar en cualquier nodo login el comando &#039;&#039;&#039;scrontab -l&#039;&#039;&#039; o revisar con el comando &#039;&#039;&#039;squeue&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[prueba@leftraru1 ~]$ squeue&lt;br /&gt;
24293471     slims /home/eg  prueba PD       0:00      1 (BeginTime)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Checkpointing ==&lt;br /&gt;
Es la acción de guardar el estado de un proceso en ejecución en un archivo de imagen de punto de control. Este proceso se puede reiniciar más tarde desde el archivo del punto de control, continuando la ejecución desde donde se detuvo, en la misma computadora o en una diferente.&lt;br /&gt;
&lt;br /&gt;
=== ¿Por qué utilizarlo? ===&lt;br /&gt;
* Permite ejecuciones de tarea largas que superen el tiempo de ejecución permitido en el cluster (30 días)&lt;br /&gt;
* Estar preparados ante fallas del sistema que nos puedan hacer perder resultados de nuestras simulaciones&lt;br /&gt;
&lt;br /&gt;
=== Utilización ===&lt;br /&gt;
Lo primero que debemos hacer en nuestro script es cargar el módulo de Mana:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ml mana/3.0.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Este módulo provee 3 ejecutables que necesitaremos:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;mana_coordinator:&#039;&#039;&#039; Coordina los checkpoints entre los distintos procesos&lt;br /&gt;
* &#039;&#039;&#039;mana_launch:&#039;&#039;&#039; Inicia un proceso con checkpoint&lt;br /&gt;
* &#039;&#039;&#039;mana_restart:&#039;&#039;&#039; Reinicia la ejecución desde una imagen del checkpoint&lt;br /&gt;
&lt;br /&gt;
Necesitaremos 2 scripts para trabajar con checkpoints: Inicio y reinicio&lt;br /&gt;
&lt;br /&gt;
=== Script de inicio (inicio.sh) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
##---------------SLURM Parameters - NLHPC ----------------&lt;br /&gt;
#SBATCH -J Testcheckpoint&lt;br /&gt;
#SBATCH -p general&lt;br /&gt;
#SBATCH -n 44&lt;br /&gt;
#SBATCH --ntasks-per-node=44&lt;br /&gt;
#SBATCH --mem-per-cpu=4363&lt;br /&gt;
#SBATCH --mail-user=test@nlhpc.cl&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH -o Testcheckpoint_%j.out&lt;br /&gt;
#SBATCH -e Testcheckpoint_%j.err&lt;br /&gt;
&lt;br /&gt;
# ----------------Modules----------------------------&lt;br /&gt;
ml mana/3.0.0&lt;br /&gt;
# ----------------Command--------------------------&lt;br /&gt;
#Checkpointing cada 1 hora&lt;br /&gt;
mana_cooridinator -i3600&lt;br /&gt;
#Ejecutamos nuestra tarea con checkpointing&lt;br /&gt;
srun mana_launch ./ejecutable&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Script de reinicio (reinicio.sh) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
##---------------SLURM Parameters - NLHPC ----------------&lt;br /&gt;
#SBATCH -J Testcheckpoint&lt;br /&gt;
#SBATCH -p general&lt;br /&gt;
#SBATCH -n 44&lt;br /&gt;
#SBATCH --ntasks-per-node=44&lt;br /&gt;
#SBATCH --mem-per-cpu=4363&lt;br /&gt;
#SBATCH --mail-user=test@nlhpc.cl&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH -o Testcheckpoint_%j.out&lt;br /&gt;
#SBATCH -e Testcheckpoint_%j.err&lt;br /&gt;
&lt;br /&gt;
# ----------------Modules----------------------------&lt;br /&gt;
ml mana/3.0.0&lt;br /&gt;
# ----------------Command--------------------------&lt;br /&gt;
#Checkpointing cada 1 hora&lt;br /&gt;
mana_cooridinator -i3600&lt;br /&gt;
#Reiniciar nuestra tarea desde los archivos de checkpoint&lt;br /&gt;
srun mana_restart&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para correr estos scripts se puede hacer utilizando la funcionalidad de dependencias de SLURM:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[test@leftraru2 test]$ sbatch inicio.sh&lt;br /&gt;
Submitted batch job 23574685&lt;br /&gt;
[test@leftraru2 test]$ sbatch --dependency=afterok:23574685 reinicio.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Trabajos ==&lt;br /&gt;
=== Trabajos paralelos ===&lt;br /&gt;
Muchos de los trabajos que se ejecutan en un clúster de producción implicarán más de un procesador (CPU, núcleo). Dichos trabajos paralelos deben solicitar la cantidad de recursos necesarios a través de opciones adicionales. Los más comunes son:&lt;br /&gt;
&lt;br /&gt;
Para diferentes tipos de trabajos paralelos, se especificarán diferentes opciones. Los trabajos paralelos más comunes son trabajos de MPI (memoria distribuida), trabajos de subprocesos múltiples (memoria compartida) y los llamados híbridos que son una combinación de los dos. Analicemos por separado con un n ejemplo para cada uno.&lt;br /&gt;
&lt;br /&gt;
=== Ejecución de programas con MPI ===&lt;br /&gt;
MPI (interfaz de paso de mensajes) es la API de comunicación estándar para trabajos paralelos de memoria distribuida capaz de implementarse en un clúster. Para programar dicho trabajo, es necesario especificar la cantidad de nodos del clúster que se utilizarán y la cantidad de procesos (tareas) que se ejecutarán en cada nodo.&lt;br /&gt;
&lt;br /&gt;
El siguiente es un ejemplo de ejecución de un programa compilado con Open MPI:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 #SBATCH -J example_mpi&lt;br /&gt;
 #SBATCH -p general&lt;br /&gt;
 #SBATCH -n 264&lt;br /&gt;
 #SBATCH --ntasks-per-node=44&lt;br /&gt;
 #SBATCH --output=example_%j.out&lt;br /&gt;
 #SBATCH --error=example_%j.err&lt;br /&gt;
 #SBATCH --mail-user=user@example.com&lt;br /&gt;
 #SBATCH --mail-type=ALL&lt;br /&gt;
 &lt;br /&gt;
 srun ./mpi_test&lt;br /&gt;
A continuacion se explica línea por líneael script.&lt;br /&gt;
&lt;br /&gt;
Como empieza un shell script en Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre del Job:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -J example_mpi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre la particion donde se desea ejecutar el trabajo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -p general&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Número de tareas. Debe de ser un número múltiplo del número de CPUs máximo que tenga un node de la partición donde se lanza:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -n 264&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Con esto se fuerza a que se lancen 44 tareas MPI en cada uno de los nodos, ocupando de este modo nodos completos. En este caso 6 nodos completos:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --ntasks-per-node=44&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de salida:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -o example_%j.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de error:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -e example_%j.err&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Correo para notificaciones:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-user=user@example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Envía correo en todos los casos:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Programa para ejecutar:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
srun ./mpi_test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nota&#039;&#039;&#039;: no se carga específicamente el módulo &amp;quot;mpi&amp;quot; ya que se carga siempre por defecto.&lt;br /&gt;
&lt;br /&gt;
Para enviarlo al clúster debe ejecutar el comando: &#039;&#039;sbatch script.sh&#039;&#039;. El ejemplo anterior ejecutará una tarea OpenMPI con 264 procesos reservando 264 cores para ello.&lt;br /&gt;
&lt;br /&gt;
=== Trabajos multiproceso OpenMP ===&lt;br /&gt;
Los trabajos paralelos diseñados para ejecutarse en un sistema multi-core (shared-memory) suelen ser &amp;quot;multi-threaded&amp;quot;. La programación de un job de este tipo requiere especificar el número de núcleos que se utilizan para acomodar los subprocesos.&lt;br /&gt;
&lt;br /&gt;
OpenMP es el conjunto común de variables de compilación para facilitar el desarrollo de programas multi-threaded. Un script típico de SLURM para un programa de este tipo se ve así:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 #SBATCH -J OMPtest&lt;br /&gt;
 #SBATCH -p general&lt;br /&gt;
 #SBATCH -n 1&lt;br /&gt;
 #SBATCH -c 44&lt;br /&gt;
 #SBATCH --ntasks-per-node=44&lt;br /&gt;
 #SBATCH --mem-per-cpu=1024&lt;br /&gt;
 #SBATCH -o example_%j.out&lt;br /&gt;
 #SBATCH -e example_%j.err&lt;br /&gt;
 #SBATCH --mail-user=user@example.com&lt;br /&gt;
 #SBATCH --mail-type=ALL&lt;br /&gt;
&lt;br /&gt;
 OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK time ./omp-program&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Como debe comenzar un script en Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre del Job:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -J OMPtest&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre la particion donde desea ejecutar el Job:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -p general&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Número de trabajos:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Número de tareas:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -c 44&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Con esto se fuerza a que se agrupen las 44 tareas en un nodo (en OpenMP no hay comunicación entre nodos, por lo que todas las tareas deben estar en el mismo nodo o no funcionaría):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --ntasks-per-node=44&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Memoria por core (MBytes):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem-per-cpu=1024&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de salida:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -o example_%j.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de error:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -e example_%j.err&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Correo para notificaciones:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-user=user@example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Enviar correo en todos los casos:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Programa para ejecutar:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK time ./omp-program &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cuando se utiliza un programa OpenMP, el número de subprocesos (y, por lo tanto, el número requerido de núcleos) se especifica a través de la variable de entorno OMP_NUM_THREADS que, por lo tanto, aparece en el script frente a la llamada al programa. Lo estamos configurando en la variable interna SLURM_CPUS_PER_TASK que se establece a través de la opción &amp;quot;-c&amp;quot; (a 44 en nuestro ejemplo, que sería el número total de cores de un nodo de la partición &amp;quot;general&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
La opción &amp;quot;-n&amp;quot; se mantiene en 1 para indicar un único trabajo principal que tiene 44 tareas. Para asegurarnos que todas las tareas se ejecutan en el mismo nodo, se añade la opción &amp;quot;--ntasks-per-node&amp;quot; con el máximo número de cores que tiene un nodo de la partición donde se está lanzando el trabajo.&lt;br /&gt;
&lt;br /&gt;
=== Ejecución de tareas en GPUs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -J ejemplo_gpus&lt;br /&gt;
#SBATCH -p v100&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
#SBATCH -o ejemplo_%j.out&lt;br /&gt;
#SBATCH -e ejemplo_%j.err&lt;br /&gt;
#SBATCH --mail-user=correo@gmail.com&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH --mem-per-cpu=4300&lt;br /&gt;
#SBATCH --gres=gpu:1&lt;br /&gt;
&lt;br /&gt;
./programa&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Inicio de un bash script en Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre del trabajo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -J ejemplo_gpus&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre la partición donde se ejecuta el trabajo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --partition=v100&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Número de tareas:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de salida:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -o ejemplo_%j.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de error:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -e ejemplo_%j.err&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Correo para notificaciones:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-user=user@example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Enviar correo en todos los casos:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Memoria por CPU (MB):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem-per-cpu=4365&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cantidad utilizada de GPUs. El parámetro gpu:1 indica la cantidad de tarjetas a utilizar (cada nodo tiene 2 GPUs):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --gres=gpu:1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Programa para ejecutar:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./programa&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Job Arrays ===&lt;br /&gt;
Cuando se ejecutan cientos o miles de simulaciones que utilizan la misma cantidad de recursos, puede ser una ventaja ejecutar estas simulaciones como un &amp;quot;job array&amp;quot;. Los job array le permiten enviar miles de dichos trabajos (llamados &amp;quot;job steps&amp;quot;) con un solo script. A cada simulación se le asignará un valor único para la variable de entorno SLURM_ARRAY_TASK_ID. Puede usar esta variable para leer parámetros para pasos individuales de una línea dada de un archivo.&lt;br /&gt;
&lt;br /&gt;
=== Caso de uso de un Script Job Array (Gaussian) ===&lt;br /&gt;
Tenemos usuarios que actualmente envían varias simulaciones al clúster que son similares en cuanto al uso de recursos, pero, la diferencia es que solo cambia la entrada que le entregan al programa. Para esta situación, recomendamos hacer uso de un script Job Array.&lt;br /&gt;
&lt;br /&gt;
En este ejemplo crearemos un script job array para el software Gaussian, el cual, realizará 63 simulaciones, cada una de estas utilizará 8 cores y podrá alcanzar un uso máximo de 8 Gb de memoria ram. Para este caso utilizaremos la partición slims donde cada nodo tiene 46 Gb de memoria ram y 20 cores.&lt;br /&gt;
&lt;br /&gt;
Script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# ----------------SLURM Parameters----------------&lt;br /&gt;
#SBATCH -J prueba&lt;br /&gt;
#SBATCH -p slims&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
#SBATCH -c 8&lt;br /&gt;
#SBATCH --mem-per-cpu=1000&lt;br /&gt;
#SBATCH --mail-user=prueba@nlhpc.cl&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH --array=1-63&lt;br /&gt;
#SBATCH -o prueba_%A_%a.out&lt;br /&gt;
#SBATCH -e prueba_%A_%a.err&lt;br /&gt;
#-----------------Toolchain---------------------------&lt;br /&gt;
ml purge&lt;br /&gt;
ml intel/2019b&lt;br /&gt;
# ----------------Módulos-----------------------------&lt;br /&gt;
ml g16/B.01&lt;br /&gt;
# ----------------Comandos--------------------------&lt;br /&gt;
file=$(ls Child_10_*.com | sed -n ${SLURM_ARRAY_TASK_ID}p)&lt;br /&gt;
srun g16 $file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
Descripción de comandos utilizados en script:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Inicio de un bash script en Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre de la simulación:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -J prueba&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre la partición donde se ejecuta la simulación:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -p slims&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Número de tareas (1 tarea va a ejecutar 63 simulaciones):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Core’s por tareas (cada tarea utilizará un máximo 8 cores):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -c 8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Memoria ram por cpu (cada tarea utilizará un máximo 8 Gb de ram):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH –mem-per-cpu=1000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Correo para activar el envío de notificaciones:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-user=prueba@nlhpc.cl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Permitir envío de notificaciones:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se generan 63 simulaciones diferentes:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --array=1-63&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de salida: (ejemplo: prueba_18455017_1.out)&lt;br /&gt;
&lt;br /&gt;
* %A corresponde al Job ID de nuestra tarea que le asignará Slurm → 18455017.&lt;br /&gt;
* %a corresponde a la simulación X de nuestra tarea que le asignará Slurm → 1.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -o prueba_%A_%a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de errores: (ejemplo: prueba_18455017_1.err)&lt;br /&gt;
&lt;br /&gt;
* %A corresponde al Job ID de nuestra tarea que le asignará Slurm → 18455017.&lt;br /&gt;
* %a corresponde a la simulación X de nuestra tarea que le asignará Slurm → 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -e prueba_%A_%a.err&lt;br /&gt;
Toolchain: en este apartado, limpiaremos nuestro entorno de software no deseados y luego escogemos la herramienta informática con la cual está compilado el software Gaussian (nosotros utilizamos el compilador Intel/2019b).&lt;br /&gt;
&lt;br /&gt;
#-----------------Toolchain---------------------------&lt;br /&gt;
ml purge&lt;br /&gt;
ml intel/2019b&lt;br /&gt;
Módulos: cargamos el software Gaussian versión 16/B.0.&lt;br /&gt;
&lt;br /&gt;
# ----------------Módulos-----------------------------&lt;br /&gt;
ml g16/B.01&lt;br /&gt;
Comandos: aquí definimos los comandos a ejecutar.&lt;br /&gt;
&lt;br /&gt;
# ----------------Comandos--------------------------&lt;br /&gt;
file=$(ls Child_10_*.com | sed -n ${SLURM_ARRAY_TASK_ID}p)&lt;br /&gt;
srun g16 $file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
file= variable que va a listar los archivos de entrada que comiencen por Child_10_ y terminen en .com&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Child.png|no]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sed -n ${SLURM_ARRAY_TASK_ID}p) ← Sed imprimirá las líneas de cada archivo de entrada y la variable $SLURM_ARRAY_TASK_ID asumirá estas entradas como matriz de simulación en nuestro job array, en este ejemplo tenemos 63 archivos de entrada.&lt;br /&gt;
&lt;br /&gt;
Para más detalles sobre los archivos stdin, stdout y stderr de una simulación % A será reemplazado por el valor de SLURM_ARRAY_JOB_ID que es el Job ID de nuestra tarea y %a será reemplazado por el valor de SLURM_ARRAY_TASK_ID que corresponde a la simulación X de nuestra tarea.&lt;br /&gt;
&lt;br /&gt;
Srun g16 $file: ejecutará el comando gaussian g16 interpretando la variable $file en los nodos de cómputo asignados.&lt;br /&gt;
&lt;br /&gt;
Enviar el script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[prueba@leftraru1 ~]$ sbatch prueba.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ejecución de una tarea que ocupa mucha RAM por CPU ===&lt;br /&gt;
Debemos tener en cuenta que la RAM que SLURM reserva por defecto son 1000 MB. Un típico error de cancelación de tarea por falta de memoria es el siguiente:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/tmp/slurmd/job136839939/slurm_script: line 15: 23547 Killed                  ./programa.sh&lt;br /&gt;
slurmstepd: error: Detected 1 oom-kill event(s) in step 136839939.batch cgroup. Some of your processes &lt;br /&gt;
may have been killed by the cgroup out-of-memory handler.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Si su tarea ocupa más de la memoria por defecto, puede utilizar el siguiente parámetro:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem-per-cpu=2300 #Máxima RAM por CPU&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Esto hará que SLURM reserve más RAM por CPU para sus tareas.&lt;br /&gt;
&lt;br /&gt;
Tenga en cuenta que nuestros nodos tienen 46 GB de memoria RAM (Partición slims), 187 GB (Partición general) y 765 GB (Partición largemem) por nodo. [https://wiki.nlhpc.cl/Hardware_Disponible Más información].&lt;br /&gt;
&lt;br /&gt;
Otra forma de reservar memoria es utilizando el siguiente parámetro:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem=2300&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
En este caso SLURM realizará una reserva de memoria de 2300 MB pero por la totalidad del trabajo.&lt;br /&gt;
&lt;br /&gt;
Los parámetros anteriores al igual que el número de CPUs que se van a usar, hay que afinarlos lo mejor posible. Para ello lo que se puede hacer es hacer pruebas en los nodos logins, sin lanzar en las colas, y así estudiar el uso de RAM y CPU por parte de sus procesos.&lt;br /&gt;
&lt;br /&gt;
=== Ejecución de una tarea con Dependencias ===&lt;br /&gt;
Las dependencias de trabajos se utilizan para aplazar el inicio de un trabajo hasta que se satisfagan las dependencias especificadas. Se especifican con la opción --dependency en el siguiente formato:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch --dependency=&amp;lt;type:job_id[:job_id][,type:job_id[:job_id]]&amp;gt; ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Los tipos de dependencias son las siguientes:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;after&#039;&#039;&#039;:jobid[:jobid...] - el trabajo puede empezar después de que los trabajos especificados comiencen&lt;br /&gt;
* &#039;&#039;&#039;afterany&#039;&#039;&#039;:jobid[:jobid...] - el trabajo puede empezar después de que los trabajos especificados terminen&lt;br /&gt;
* &#039;&#039;&#039;afternotok&#039;&#039;&#039;:jobid[:jobid...] - el trabajo puede empezar después que los trabajos especificados terminan fallidamente&lt;br /&gt;
* &#039;&#039;&#039;afterok&#039;&#039;&#039;:jobid[:jobid...] - el trabajo puede empezar después que los trabajos especificados terminan exitósamente&lt;br /&gt;
&lt;br /&gt;
La manera más simple de usar una dependencia del tipo afterok:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[prueba@leftraru1 ~]$ sbatch job1.sh&lt;br /&gt;
Submitted batch job 21363626&lt;br /&gt;
[prueba@leftraru1 ~]$ sbatch --dependency=afterok:21363626 job2.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora cuando job1.sh termine correctamente, el job2.sh entrará en ejecución. Si job1.sh termina fallidamente, job2.sh no entrará en ejecución nunca pero sí quedará en cola (debe cancelarse manualmente el trabajo).&lt;br /&gt;
&lt;br /&gt;
== Prioridad de tarea ==&lt;br /&gt;
Cómo ver la prioridad del trabajo. Los factores que determinan la prioridad del trabajo, incluyendo la fórmula y pesos.&lt;br /&gt;
&lt;br /&gt;
=== Factores que determinan prioridad de tarea ===&lt;br /&gt;
&amp;lt;table class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 60%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Comando SLURM&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Descripción&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Edad&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;la cantidad de tiempo que el trabajo ha estado esperando en la cola.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Tamaño de la tarea&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;número de nodos solicitados por el trabajo.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Partición&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;prioridad para una partición determinada.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Prioridad Baja&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Mientras más tareas se ejecuten en el cluster, menor será la prioridad.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Prioridad Alta&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Mientras menos tareas se ejecuten en el clúster, más alta es la prioridad.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Prioridad de tarea ==&lt;br /&gt;
Cómo ver la prioridad del trabajo. Los factores que determinan la prioridad del trabajo, incluyendo la fórmula y pesos.&lt;br /&gt;
&lt;br /&gt;
=== Factores que determinan prioridad de tarea ===&lt;br /&gt;
* Edad - la cantidad de tiempo que el trabajo ha estado esperando en la cola&lt;br /&gt;
* Tamaño Oficio - número de nodos solicitados por el trabajo&lt;br /&gt;
* Partición - prioridad para una partición determinada&lt;br /&gt;
* Contribución de prioridades basada en los recursos informáticos utilizados por los miembros de un grupo de investigación en los últimos 30 días - Fairshare.&lt;br /&gt;
* Mientras más tareas se ejecuten en el cluster, menor será la prioridad.&lt;br /&gt;
* Mientras menos tareas se ejecuten en el clúster, más alta es la prioridad.&lt;br /&gt;
Fórmula Prioridad de tarea&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Job_priority =&lt;br /&gt;
  (PriorityWeightAge) * (age_factor) +&lt;br /&gt;
  (PriorityWeightFairshare) * (fair-share_factor) +&lt;br /&gt;
  (PriorityWeightJobSize) * (job_size_factor) +&lt;br /&gt;
  (PriorityWeightPartition) * (partition_factor) +&lt;br /&gt;
  (PriorityWeightQOS) * (QOS_factor)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Visualización de sus Tareas ==&lt;br /&gt;
Si Ud. necesita visualizar información acerca de sus tareas de forma interactiva, puede utilizar el comando smap:&lt;br /&gt;
&lt;br /&gt;
smap -i 3&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Smap.png|no|700px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De esta forma, tendrá una actualización cada 3 segundos de sus tareas en ejecución incluyendo los nodos en los cuales se encuentran ejecutándose.&lt;br /&gt;
&lt;br /&gt;
== Bibliografía ==&lt;br /&gt;
[http://slurm.schedmd.com/documentation.html Manual Oficial de Slurm]&lt;br /&gt;
&lt;br /&gt;
[https://slurm.schedmd.com/scrontab.html Documentación scrontab]&lt;/div&gt;</summary>
		<author><name>Jmorales</name></author>
	</entry>
	<entry>
		<id>https://wiki.nlhpc.cl/index.php?title=SISTEMA_GESTOR_DE_RECURSOS&amp;diff=766</id>
		<title>SISTEMA GESTOR DE RECURSOS</title>
		<link rel="alternate" type="text/html" href="https://wiki.nlhpc.cl/index.php?title=SISTEMA_GESTOR_DE_RECURSOS&amp;diff=766"/>
		<updated>2024-04-29T22:00:21Z</updated>

		<summary type="html">&lt;p&gt;Jmorales: /* Estado de nodos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== SLURM Workload Manager ==&lt;br /&gt;
Es un sistema de programación de trabajos y gestión de clústeres de código abierto, tolerante a fallas y altamente escalable para clústeres Linux grandes y pequeños.&lt;br /&gt;
&lt;br /&gt;
Como administrador de carga de trabajo de clúster, Slurm tiene tres funciones clave. Primero, asigna acceso exclusivo y / o no exclusivo a los recursos (nodos de cómputo) a los usuarios durante un período de tiempo para que puedan realizar el trabajo. En segundo lugar, proporciona un marco para iniciar, ejecutar y monitorear el trabajo (normalmente un trabajo paralelo) en el conjunto de nodos asignados. Finalmente, arbitra la contención de recursos mediante la gestión de una cola de trabajo pendiente.&lt;br /&gt;
&lt;br /&gt;
SLURM es el gestor de colas instalado en muchos de los súper computadores del [https://www.top500.org/ TOP500], y también en el clúster del NLHPC. Si Ud. quiere lanzar tareas dentro de Leftaru, debe hacerlo a través de Slurm.&lt;br /&gt;
&lt;br /&gt;
== Conceptos clave ==&lt;br /&gt;
SLURM gestiona trabajos de usuario que tienen las siguientes características clave:&lt;br /&gt;
&lt;br /&gt;
* Conjunto de recursos solicitados:&lt;br /&gt;
** Número de recursos informáticos: nodos (incluidas todas sus CPUs y núcleos) o CPUs (incluidos todos sus núcleos) o solo núcleos&lt;br /&gt;
** Cantidad de memoria: por nodo o por CPU (lógica)&lt;br /&gt;
** Tiempo necesario para que las tareas del usuario completen su trabajo&lt;br /&gt;
* Una partición de nodo solicitada (cola de trabajos)&lt;br /&gt;
* Un nivel de calidad de servicio (QoS) solicitado que otorga a los usuarios accesos específicos&lt;br /&gt;
* Una cuenta solicitada con recursos limitados&lt;br /&gt;
&lt;br /&gt;
De manera predeterminada, los usuarios envían trabajos a una partición particular (marcada como tal para todos los usuarios) y bajo una cuenta particular (preestablecida por usuario).&lt;br /&gt;
&lt;br /&gt;
== Particiones SLURM ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 60%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nombre Particion&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nodos&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;CPUs&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;RAM&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Descripción&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;main&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;27&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;256&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;768GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;general&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;48&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;44&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;187GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;largemem&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;9&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;44&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;765GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;v100&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;44&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;187GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;4 GPUs Nvidia Tesla V100.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;mi100&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;128&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;502GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2 GPUs AMD Instinct MI100.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;debug&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;4&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;20&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;59GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Destinados a pruebas de máximo 30 minutos.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Introducción a los comandos slurm ==&lt;br /&gt;
&amp;lt;table class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 60%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Comando SLURM&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Descripción&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;srun&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ejecutar un comando en nodos de cómputo asignados.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;sbatch&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;presentar un script de trabajo&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;squeue&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Mostrar estado de los trabajos en la cola.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;scancel&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;eliminar un trabajo.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;sinfo&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Muestra el estado de los nodos de cómputo.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
Estos son los comandos básicos utilizados para realizar la mayoría de las operaciones básicas con SLURM.&lt;br /&gt;
&lt;br /&gt;
=== Estado de nodos ===&lt;br /&gt;
Para consultar el uso de nuestra infraestructura y qué particiones están más libres, le recomendamos el comando sinfo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# sinfo&lt;br /&gt;
PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST&lt;br /&gt;
all        up    infinite    16     mix   cn[001,005-006,010,034-035,037,041,045,050,057,108,121],sn[012,016,037]&lt;br /&gt;
all        up    infinite    95     alloc cn[011-033,038-044,046-049,071-120],cnf[001-004],sn[001-011,038-041,043-044]&lt;br /&gt;
all        up    infinite    33     idle  fn[001-009],gn[001-002],sn[018-035,045-048]&lt;br /&gt;
main*      up    infinite    20     alloc mn[001-011,014-022]&lt;br /&gt;
main*      up    infinite    7      idle [012-013,023-027]&lt;br /&gt;
debug      up    infinite    4      idle  leftraru[1-2]&lt;br /&gt;
general    up    infinite    4      mix   sn[012,016,037,042]&lt;br /&gt;
general    up    infinite    22     alloc sn[001-011,013-015,017,036,038-041,043-044]&lt;br /&gt;
general    up    infinite    22     idle  sn[018-035,045-048]&lt;br /&gt;
largemem   up    infinite    9      idle  fn[001-009]&lt;br /&gt;
v100       up    infinite    2      idle  gn[001-002]&lt;br /&gt;
mi100      up    infinite    1      idle  gna001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fijándose en el texto resaltado de la salida del comando sinfo, se puede comprobar que en la partición main hay 20 nodos que están completamente ocupados (estado alloc), 7 nodos que están libres (idle); por otro lado, en la partición general hay 22 nodos completamente ocupados, 4 parcialmente ocupados y 22 libres. Dado este escenario, está claro que debería de lanzar sus ejecuciones en los nodos de la partición general, por las razones anteriormente expuestas.&lt;br /&gt;
&lt;br /&gt;
Para lanzar en la partición general, debe tener en cuenta que tiene que indicar en su script que se use dicha partición en vez de, probablemente, main. Por supuesto, en esta partición cambian las características técnicas, se pasan a tener 44 cores por nodo (en vez de 256 en main) y una capacidad RAM de 187GB (en vez de 768GB en main). Puede ver más información de las particiones en este link(agregar link), donde podrá revisar que con la inclusión de Guacolda hemos añadido nodos con hasta 765GB de memoria RAM y nodos con GPUs Nvidia Tesla V100 y AMD Instinct MI100 .&lt;br /&gt;
&lt;br /&gt;
Para ver los nodos disponibles y poder determinar en que partición lanzar los trabajos se recomienda utilizar el siguiente comando.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;[prueba@leftraru1 ~]$ sinfo -o &amp;quot;%10P %6D %10t %10m %c&amp;quot; -t idle| egrep &amp;quot;PARTITION|main|general|largemem|v100&amp;quot;&lt;br /&gt;
PARTITION  NODES  STATE      MEMORY     CPUS&lt;br /&gt;
main*       27    idle       768000      256&lt;br /&gt;
general     2     idle       187000      44&lt;br /&gt;
largemem    7     idle       765000      44&lt;br /&gt;
v100        1     idle       187000      44 &lt;br /&gt;
mi100       1     idle       515047      128 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
El comando anterior muestra que main tiene 27 nodos libres, en este caso es recomendado lanzar en en main para evitar que el trabajo quede en cola por falta de recursos en otros nodos.&lt;br /&gt;
&lt;br /&gt;
Otro Ejemplo, se muestra sólo una partición específica&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;[prueba@leftraru1 ~]$ sinfo -p main&lt;br /&gt;
PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST&lt;br /&gt;
main*        up   infinite     15    mix mn[001-008,014-020]&lt;br /&gt;
main*        up   infinite     12   idle mn[009-013,021-027]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Comprobación del estado de tareas ===&lt;br /&gt;
squeue - Muestra el estatus de los trabajos&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;squeue                  # tus trabajos&lt;br /&gt;
squeue -u &amp;amp;lt;username&amp;amp;gt;    # trabajos por usuario &amp;amp;lt;username&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
squeue: Comprobar estados de los trabajos&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;&amp;quot; class=&amp;quot;mw-highlight mw-content-ltr&amp;quot; dir=&amp;quot;ltr&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  JOBID        PARTITION     NAME     USER    ST       TIME  	NODES 	NODELIST(REASON)&lt;br /&gt;
13951858_1     general	     test1    test1    R   1-18:35:14      2    cn[009-010]&lt;br /&gt;
13951857_2     general       test2    test1    R   1-18:36:11      2    cn[099-100]&lt;br /&gt;
13956453       gpu           test3    test3    R   1-03:42:08      1    cn039&lt;br /&gt;
13956449       largemem      test4    test4    R   1-05:42:08      1    cn044&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puede utilizar squeue para saber el estado de una o varias de sus tareas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ squeue -o &amp;quot;%.15i %.6P %.8j %.20S %.11M %.11L %.20V %.10Q %.4C %.2D %.6m&amp;quot; -S -t,-Q&lt;br /&gt;
 JOBID   PARTIT     NAME      START_TIME          TIME      TIME_LEFT     SUBMIT_TIME       PRIORITY CPUS NO MIN_ME&lt;br /&gt;
10837561 general   TEST1   2018-06-18T18:51:01    19:00:31  2-04:59:29  2018-06-18T18:51:01  119972    1  1  1000M&lt;br /&gt;
10838562 general   TEST2   2018-06-19T11:30:47    2:20:45   2-21:39:15  2018-06-19T11:30:46  119946    1  1  1000M&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
para mas opciones puede revisar con el comando [https://slurm.schedmd.com/squeue.html man squeue] las opciones restantes.&lt;br /&gt;
&lt;br /&gt;
=== Códigos de ESTADO de los trabajos ===&lt;br /&gt;
&lt;br /&gt;
Los trabajos suelen pasar por varios estados durante su ejecución. Los estados típicos son PENDIENTE, EN EJECUCIÓN, SUSPENDIDO, FINALIZANDO y TERMINADO. A continuación se explica cada estado.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;BF&#039;&#039;&#039; BOOT_FAIL&lt;br /&gt;
    Trabajo finalizado debido a un fallo de arranque, normalmente debido a un fallo de hardware (por ejemplo, no se puede arrancar el nodo o bloque y el trabajo no se puede volver a poner en cola). &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CA&#039;&#039;&#039; CANCELADO&lt;br /&gt;
    El trabajo ha sido cancelado explícitamente por el usuario o el administrador del sistema. El trabajo puede haberse iniciado o no. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CD&#039;&#039;&#039; TERMINADO&lt;br /&gt;
    El trabajo ha terminado todos los procesos en todos los nodos con un código de salida de cero. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CF&#039;&#039;&#039; CONFIGURANDO&lt;br /&gt;
    Al trabajo se le han asignado recursos, pero están esperando a que estén listos para su uso (por ejemplo, arrancando). &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CG&#039;&#039;&#039; COMPLETANDO&lt;br /&gt;
    El trabajo está en proceso de finalización. Algunos procesos en algunos nodos pueden estar aún activos. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DL&#039;&#039;&#039; FECHA LÍMITE&lt;br /&gt;
    El trabajo ha finalizado en la fecha límite. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;F&#039;&#039;&#039; FALLÓ&lt;br /&gt;
    Trabajo finalizado con un código de salida distinto de cero u otra condición de fallo. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NF&#039;&#039;&#039; NODO_FAIL&lt;br /&gt;
    Trabajo finalizado debido al fallo de uno o más nodos asignados. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;OOM&#039;&#039;&#039; OUT_OF_MEMORY&lt;br /&gt;
    El trabajo ha experimentado un error de memoria insuficiente. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PD&#039;&#039;&#039; PENDIENTE&lt;br /&gt;
    El trabajo está pendiente de asignación de recursos. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PR&#039;&#039;&#039; PREEMPTED&lt;br /&gt;
    El trabajo ha finalizado debido a una espera. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;R&#039;&#039;&#039; EN MARCHA&lt;br /&gt;
    El trabajo tiene actualmente una asignación. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RD&#039;&#039;&#039; RESV_DEL_HOLD&lt;br /&gt;
    El trabajo se está reteniendo después de que se eliminara la reserva solicitada. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RF&#039;&#039;&#039; REQUEUE_FED&lt;br /&gt;
    El trabajo está siendo solicitado por una federación. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RH&#039;&#039;&#039; REQUEUE_HOLD&lt;br /&gt;
    Se está volviendo a poner en cola un trabajo retenido. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RQ&#039;&#039;&#039; REQUEUED&lt;br /&gt;
    Se está poniendo en cola un trabajo que se está completando. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RS&#039;&#039;&#039; CAMBIO DE TAMAÑO&lt;br /&gt;
    El trabajo está a punto de cambiar de tamaño. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RV&#039;&#039;&#039; REVOCADO&lt;br /&gt;
    El trabajo se ha retirado del clúster debido a que otro clúster ha iniciado el trabajo. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SI&#039;&#039;&#039; SEÑALANDO&lt;br /&gt;
    El trabajo está siendo señalizado. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SE&#039;&#039;&#039; SPECIAL_EXIT&lt;br /&gt;
    El trabajo se ha puesto en cola en un estado especial. Este estado puede ser establecido por los usuarios, normalmente en EpilogSlurmctld, si el trabajo ha terminado con un valor de salida particular. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SO&#039;&#039;&#039; STAGE_OUT&lt;br /&gt;
    El trabajo está preparando los archivos. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ST&#039;&#039;&#039; PARADO&lt;br /&gt;
    El trabajo tiene una asignación, pero la ejecución se ha detenido con la señal SIGSTOP. Los CPUS han sido retenidos por este trabajo. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;S&#039;&#039;&#039; SUSPENDIDO&lt;br /&gt;
    El trabajo tiene una asignación, pero se ha suspendido la ejecución y se han liberado CPUs para otros trabajos. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TO&#039;&#039;&#039; TIMEOUT&lt;br /&gt;
    El trabajo ha finalizado al alcanzar su límite de tiempo.&lt;br /&gt;
&lt;br /&gt;
=== Cancelar un trabajo ===&lt;br /&gt;
Con scancel se puede cancelar un trabajo en ejecución&lt;br /&gt;
&amp;lt;pre&amp;gt;scancel &amp;amp;lt;jobID&amp;amp;gt;         # Matar proceso &amp;amp;lt;jobID&amp;amp;gt;. (puede obtener el ID del job con &amp;quot;squeue&amp;quot;)&lt;br /&gt;
scancel -u &amp;amp;lt;username&amp;amp;gt;   # Matar proceso por usuario &amp;amp;lt;username&amp;amp;gt;. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;[prueba@leftraru1 ~]$ squeue -u prueba&lt;br /&gt;
 JOBID  PARTITION    NAME     USER    ST   TIME  NODES  NODELIST(REASON)&lt;br /&gt;
 45594    slims      TEST    prueba   R    0:59   20    cn[001-020]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;[prueba@leftraru1 ~]$ scancel 45594&lt;br /&gt;
[prueba@leftraru1 ~]$ squeue -u prueba&lt;br /&gt;
JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)&lt;br /&gt;
[prueba@leftraru1 ~]$&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ver estado de trabajos ===&lt;br /&gt;
Para revisar el detalle de las opciones de un trabajo: scontrol show job&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ scontrol show job 10837561&lt;br /&gt;
JobId=10837561 JobName=TEST1&lt;br /&gt;
   UserId=usuario(1000) GroupId=group(1000) MCS_label=N/A&lt;br /&gt;
   Priority=1100 Nice=0 Account=account QOS=120&lt;br /&gt;
   JobState=RUNNING Reason=None Dependency=(null)&lt;br /&gt;
   Requeue=0 Restarts=0 BatchFlag=1 Reboot=0 ExitCode=0:0&lt;br /&gt;
   DerivedExitCode=0:0&lt;br /&gt;
   RunTime=19:03:08 TimeLimit=3-00:00:00 TimeMin=N/A&lt;br /&gt;
   SubmitTime=2018-06-18T18:51:01 EligibleTime=2018-06-18T18:51:01&lt;br /&gt;
   StartTime=2018-06-18T18:51:01 EndTime=2018-06-21T18:51:01 Deadline=N/A&lt;br /&gt;
   PreemptTime=None SuspendTime=None SecsPreSuspend=0&lt;br /&gt;
   Partition=slims AllocNode:Sid=leftraru2:5471&lt;br /&gt;
   ReqNodeList=(null) ExcNodeList=(null)&lt;br /&gt;
   NodeList=cn021&lt;br /&gt;
   BatchHost=cn021&lt;br /&gt;
   NumNodes=1 NumCPUs=1 NumTasks=1 CPUs/Task=1 ReqB:S:C:T=0:0:*:*&lt;br /&gt;
   TRES=cpu=1,mem=1000M,node=1&lt;br /&gt;
   Socks/Node=* NtasksPerN:B:S:C=1:0:*:* CoreSpec=*&lt;br /&gt;
     Nodes=cn021 CPU_IDs=1 Mem=1000 GRES_IDX=&lt;br /&gt;
   MinCPUsNode=1 MinMemoryCPU=1000M MinTmpDiskNode=0&lt;br /&gt;
   Features=(null) DelayBoot=00:00:00&lt;br /&gt;
   Gres=(null) Reservation=(null)&lt;br /&gt;
   OverSubscribe=OK Contiguous=0 Licenses=matlab Network=(null)&lt;br /&gt;
   Command=/home/usuario/script.sh&lt;br /&gt;
   WorkDir=/home/usuario/&lt;br /&gt;
   StdErr=/home/usuario/10837561_%x.err&lt;br /&gt;
   StdIn=/dev/null&lt;br /&gt;
   StdOut=/home/usuario/10837561_%x.out&lt;br /&gt;
   Power=&lt;br /&gt;
   BatchScript=&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para ver el script asociado a un trabajo: scontrol write batch_script &amp;lt;job_id&amp;gt; -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ scontrol write batch_script 10837561 -&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -J nombre_del_trabajo&lt;br /&gt;
#SBATCH -p slims&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
#SBATCH --ntasks-per-node=1&lt;br /&gt;
#SBATCH --mail-user=usaurio@correo.cl&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH -o nombre_del_trabajo%j_%x.out&lt;br /&gt;
#SBATCH -e nombre_del_trabajo%j_%x.err&lt;br /&gt;
#SBATCH --license=matlab &lt;br /&gt;
 &lt;br /&gt;
ml MATLAB/2017a&lt;br /&gt;
&lt;br /&gt;
matlab -nodisplay -nosplash -nodesktop &amp;lt; programa.m&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ejecutando trabajos ==&lt;br /&gt;
Actualmente contamos con 2 metodos de enviar trabajos bajo SLURM: &#039;&#039;&#039;sbatch&#039;&#039;&#039; and &#039;&#039;&#039;srun&#039;&#039;&#039;. A veces puede ser ventajoso ejecutar un solo comando en el clúster como prueba o realizar rápidamente una operación con recursos adicionales. &#039;srun&#039; permite a los usuarios hacer esto, y comparte las mismas variables que &#039;sbatch&#039; . STDOUT y STDERR para un trabajo &#039;srun&#039; serán redirigidos a la pantalla del usuario. Ctrl-C cancelará un trabajo srun. &#039;&#039;&#039;sbatch&#039;&#039;&#039; enviará un script de trabajo para que lo ejecute el clúster. Los scripts de trabajo bajo SLURM son simplemente scripts de shell (* .sh) con un conjunto de solicitudes de recursos en la parte superior del script.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Uso básico de srun:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
srun &amp;lt;algúnComando&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de salida (ejecutando el comando &amp;quot;hostname&amp;quot; para saber en que nodo se está ejecutando):&lt;br /&gt;
&amp;lt;pre&amp;gt; $ srun hostname&lt;br /&gt;
  cn003&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para enviar un script de trabajo a SLURM:&lt;br /&gt;
&amp;lt;pre&amp;gt;sbatch nombreScript.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example output:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sbatch test-job.sh&lt;br /&gt;
Submitted batch job 1169&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Variables Slurm ===&lt;br /&gt;
Las variables en esta sección son obligatorias, y SLURM las determina para determinar dónde y cuándo se ejecutarán sus trabajos. Si no asigna un valor para estos, el planificador asignará a sus trabajos el valor predeterminado. Si no solicita específicamente recursos para un trabajo, se le asignará un conjunto de recursos predeterminados. Para obtener una lista de todas las variables disponibles, consulte la documentación de SLURM en http://slurm.schedmd.com/sbatch.html. Las variables de este artículo estaban cubiertas porque eran las más relevantes para los casos de uso típicos.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Comando SLURM&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Descripción&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;--mem-per-cpu=&amp;amp;lt;megabytes&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Memoria requerida para el trabajo por CPU (en MegaBytes). El valor predeterminado es 1024 MB.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-p &amp;amp;lt;partition&amp;amp;gt;, --partition=&amp;amp;lt;partition&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Enviar un trabajo a una partición específica.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-n, --ntasks=&amp;amp;lt;cantidad de tareas&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Número de tareas que serán asignadas para el trabajo.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-c &amp;amp;lt;cpus&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Esta es la cantidad de CPU que necesita su trabajo. Tenga en cuenta que SLURM es relativamente generoso con las CPU, y el valor especificado aquí es el número &amp;quot;mínimo&amp;quot; de CPU que se asignará a su trabajo. Si hay CPU adicionales disponibles en un nodo más allá de lo solicitado, su trabajo recibirá esas CPU hasta que otros trabajos las necesiten. El valor predeterminado es 1 CPU. Intentar usar más CPU de las que se le asignaron dará como resultado que sus procesos adicionales se turnen en la misma CPU (ralentizando su trabajo).&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-J &amp;amp;lt;name&amp;amp;gt;, --jobname=&amp;amp;lt;name&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Especifica un nombre a tu trabajo.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;--mail-type=BEGIN,END,FAIL,ALL&amp;lt;b&amp;gt; and &amp;lt;/b&amp;gt;--mail-user=&amp;amp;lt;emailAddress&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Enviar por correo electrónico cuando su trabajo comienza / termina / falla. Puede especificar varios valores para esto (separados por comas) si es necesario.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-o &amp;amp;lt;STDOUT_log&amp;amp;gt;, --output=&amp;amp;lt;STDOUT_log&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Redirija la salida a los archivos de registro que especifique. Por defecto, ambos, STDOUT and STDERR son enviados a este archivo. Puedes especificar %j como parte del nombre de archivo de registro para indicar la ID del trabajo (como ejemplo, &amp;quot;#SBATCH -o ouptut_%j.o&amp;quot; redirigiría la salida a &amp;quot;output_123456.o&amp;quot;).&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-e &amp;amp;lt;STDERR_log&amp;amp;gt;, --error=&amp;amp;lt;STDERR_log&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Redireccionar STDERR a un archivo separado. Funciona exactamente igual que &amp;quot;-o&amp;quot;.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-t &amp;amp;lt;days-hours:minutes:seconds&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Walltime para tu trabajo. La duración del Walltime es el tiempo que espera que su trabajo se ejecute.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-a, --array=&amp;amp;lt;índices&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Envía una lista (arreglo) de trabajos identicos. Solo aplica para sbatch.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los scripts de trabajo especifican los recursos solicitados y otras consideraciones especiales con comentarios especiales &amp;quot;#SBATCH&amp;quot; en la parte superior de un script de trabajo. Aunque muchas de estas opciones son opcionales, las varibles que se ocupan de solicitudes de recursos (CPU, memoria y tiempo) son obligatorias. Todas las variables deben agregarse a sus scripts de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#SBATCH &amp;lt;variable&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Para especificar un nombre al job, por ejemplo, debe agregar lo siguiente a su secuencia de comandos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#SBATCH --job-name=nombreDeTrabajo&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Enviar un script===&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 #SBATCH -J example&lt;br /&gt;
 #SBATCH -p general&lt;br /&gt;
 #SBATCH -n 1&lt;br /&gt;
 #SBATCH --output=example_%j.out&lt;br /&gt;
 #SBATCH --error=example_%j.err&lt;br /&gt;
 #SBATCH --mail-user=user@example.com&lt;br /&gt;
 #SBATCH --mail-type=ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Como debe comenzar un script en Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre del trabajo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -J example&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre la partición donde desea ejecutar el Job:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -p general&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Número de tareas:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de salida:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -o example_%j.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de error:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -e example_%j.err&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Correo para notificaciones:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-user=user@example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Enviar correo en todos casos (verificar opciones arriba):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Programar tarea (uso de scrontab) ===&lt;br /&gt;
&#039;&#039;&#039;scrontab&#039;&#039;&#039; es una implementación del clásico planificador de tareas de linux &#039;&#039;&#039;crontab&#039;&#039;&#039; donde se guarda un listado de comandos a ejecutar en un tiempo determinado por el usuario.&lt;br /&gt;
&lt;br /&gt;
Para acceder a scrontab utilice el siguiente comando:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[prueba@leftraru1 ~]$ scrontab -e&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto le permitirá editar su archivo scrontab, asignando recursos como también el momento en que desea ejecutar su tarea. La estructura base a utilizar es la siguiente:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SCRON -J mi_tarea&lt;br /&gt;
#SCRON -p slims&lt;br /&gt;
#SCRON -n 1&lt;br /&gt;
#SCRON -c 1&lt;br /&gt;
#SCRON --mem-per-cpu=2300&lt;br /&gt;
#SCRON --mail-user=foo@bar.com&lt;br /&gt;
#SCRON --mail-type=ALL&lt;br /&gt;
#SCRON -o mi_tarea_%j.out&lt;br /&gt;
#SCRON -e mi_tarea_%j.err&lt;br /&gt;
# Example of job definition:&lt;br /&gt;
# .---------------- minute (0 - 59)&lt;br /&gt;
# |  .------------- hour (0 - 23)&lt;br /&gt;
# |  |  .---------- day of month (1 - 31)&lt;br /&gt;
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...&lt;br /&gt;
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat&lt;br /&gt;
# |  |  |  |  |&lt;br /&gt;
# *  *  *  *  *     command to be executed&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;minute&#039;&#039;&#039; - Corresponde al minuto en que se va a ejecutar el script, valor de 0 a 59.&lt;br /&gt;
* &#039;&#039;&#039;hour&#039;&#039;&#039; - Hora de ejecución, formato 24 horas, valor de 0 a 23, donde 0 son las 12:00 AM.&lt;br /&gt;
* &#039;&#039;&#039;day of month&#039;&#039;&#039; - Día del mes, la tarea se puede ejecutar cada x día, valor de 1 a 31.&lt;br /&gt;
* &#039;&#039;&#039;month&#039;&#039;&#039; - La tarea se puede ejecutar cada x mes, valor de 1 a 12.&lt;br /&gt;
* &#039;&#039;&#039;day of week&#039;&#039;&#039; - Día de la semana, valor de 0 a 6, donde 0 es Domingo.&lt;br /&gt;
* &#039;&#039;&#039;command to be executed&#039;&#039;&#039; - Script a ejecutar por el usuario.&lt;br /&gt;
 &lt;br /&gt;
Ejemplo envío de trabajo slurm:&lt;br /&gt;
&lt;br /&gt;
Para la asignación de recursos, utilizaremos la directriz &#039;&#039;&#039;#SCRON&#039;&#039;&#039;, que utiliza los mismos parámetros usados por &#039;&#039;&#039;#SBATCH&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Luego de asignar los recursos debemos especificar el tiempo, en este caso la tarea será ejecutada todos los días cada 20 minutos, luego debemos indicar el script enviado por el usuario y guardamos los cambios en el archivo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
*/20 * * * * /home/prueba/ejemplo/script.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es importante destacar que el script a lanzar &#039;&#039;&#039;/home/prueba/ejemplo/script.sh&#039;&#039;&#039; debe tener permisos de ejecución.&lt;br /&gt;
&lt;br /&gt;
Para revisar el listado de tareas existentes en nuestro scrontab, ejecutamos el comando:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[prueba@leftraru1 ~]$ scrontab -l&lt;br /&gt;
*/20 * * * * /home/prueba/ejemplo/script.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para borrar el contenido de nuestro scrontab:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[prueba@leftraru1 ~]$ scrontab -r&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Información a considerar:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Generar archivos de salida correctamente&lt;br /&gt;
** Para que el archivo error y out de tu script se generen en el directorio solicitado, ejemplo, /home/prueba/ejemplo/ en tu script debe estar presente el comando cd “/home/prueba/ejemplo”, esto hará que scrontab se posicione dentro del directorio de salida.&lt;br /&gt;
* Es distinto el tiempo de programar el envío de una tarea (scrontab) a que una tarea inicie en el clúster (running), ya que esto dependerá de los recursos libres que existan en ese momento en el clúster.&lt;br /&gt;
* Para revisar las tareas programadas debe ejecutar en cualquier nodo login el comando &#039;&#039;&#039;scrontab -l&#039;&#039;&#039; o revisar con el comando &#039;&#039;&#039;squeue&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[prueba@leftraru1 ~]$ squeue&lt;br /&gt;
24293471     slims /home/eg  prueba PD       0:00      1 (BeginTime)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Checkpointing ==&lt;br /&gt;
Es la acción de guardar el estado de un proceso en ejecución en un archivo de imagen de punto de control. Este proceso se puede reiniciar más tarde desde el archivo del punto de control, continuando la ejecución desde donde se detuvo, en la misma computadora o en una diferente.&lt;br /&gt;
&lt;br /&gt;
=== ¿Por qué utilizarlo? ===&lt;br /&gt;
* Permite ejecuciones de tarea largas que superen el tiempo de ejecución permitido en el cluster (30 días)&lt;br /&gt;
* Estar preparados ante fallas del sistema que nos puedan hacer perder resultados de nuestras simulaciones&lt;br /&gt;
&lt;br /&gt;
=== Utilización ===&lt;br /&gt;
Lo primero que debemos hacer en nuestro script es cargar el módulo de Mana:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ml mana/3.0.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Este módulo provee 3 ejecutables que necesitaremos:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;mana_coordinator:&#039;&#039;&#039; Coordina los checkpoints entre los distintos procesos&lt;br /&gt;
* &#039;&#039;&#039;mana_launch:&#039;&#039;&#039; Inicia un proceso con checkpoint&lt;br /&gt;
* &#039;&#039;&#039;mana_restart:&#039;&#039;&#039; Reinicia la ejecución desde una imagen del checkpoint&lt;br /&gt;
&lt;br /&gt;
Necesitaremos 2 scripts para trabajar con checkpoints: Inicio y reinicio&lt;br /&gt;
&lt;br /&gt;
=== Script de inicio (inicio.sh) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
##---------------SLURM Parameters - NLHPC ----------------&lt;br /&gt;
#SBATCH -J Testcheckpoint&lt;br /&gt;
#SBATCH -p general&lt;br /&gt;
#SBATCH -n 44&lt;br /&gt;
#SBATCH --ntasks-per-node=44&lt;br /&gt;
#SBATCH --mem-per-cpu=4363&lt;br /&gt;
#SBATCH --mail-user=test@nlhpc.cl&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH -o Testcheckpoint_%j.out&lt;br /&gt;
#SBATCH -e Testcheckpoint_%j.err&lt;br /&gt;
&lt;br /&gt;
# ----------------Modules----------------------------&lt;br /&gt;
ml mana/3.0.0&lt;br /&gt;
# ----------------Command--------------------------&lt;br /&gt;
#Checkpointing cada 1 hora&lt;br /&gt;
mana_cooridinator -i3600&lt;br /&gt;
#Ejecutamos nuestra tarea con checkpointing&lt;br /&gt;
srun mana_launch ./ejecutable&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Script de reinicio (reinicio.sh) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
##---------------SLURM Parameters - NLHPC ----------------&lt;br /&gt;
#SBATCH -J Testcheckpoint&lt;br /&gt;
#SBATCH -p general&lt;br /&gt;
#SBATCH -n 44&lt;br /&gt;
#SBATCH --ntasks-per-node=44&lt;br /&gt;
#SBATCH --mem-per-cpu=4363&lt;br /&gt;
#SBATCH --mail-user=test@nlhpc.cl&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH -o Testcheckpoint_%j.out&lt;br /&gt;
#SBATCH -e Testcheckpoint_%j.err&lt;br /&gt;
&lt;br /&gt;
# ----------------Modules----------------------------&lt;br /&gt;
ml mana/3.0.0&lt;br /&gt;
# ----------------Command--------------------------&lt;br /&gt;
#Checkpointing cada 1 hora&lt;br /&gt;
mana_cooridinator -i3600&lt;br /&gt;
#Reiniciar nuestra tarea desde los archivos de checkpoint&lt;br /&gt;
srun mana_restart&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para correr estos scripts se puede hacer utilizando la funcionalidad de dependencias de SLURM:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[test@leftraru2 test]$ sbatch inicio.sh&lt;br /&gt;
Submitted batch job 23574685&lt;br /&gt;
[test@leftraru2 test]$ sbatch --dependency=afterok:23574685 reinicio.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Trabajos ==&lt;br /&gt;
=== Trabajos paralelos ===&lt;br /&gt;
Muchos de los trabajos que se ejecutan en un clúster de producción implicarán más de un procesador (CPU, núcleo). Dichos trabajos paralelos deben solicitar la cantidad de recursos necesarios a través de opciones adicionales. Los más comunes son:&lt;br /&gt;
&lt;br /&gt;
Para diferentes tipos de trabajos paralelos, se especificarán diferentes opciones. Los trabajos paralelos más comunes son trabajos de MPI (memoria distribuida), trabajos de subprocesos múltiples (memoria compartida) y los llamados híbridos que son una combinación de los dos. Analicemos por separado con un n ejemplo para cada uno.&lt;br /&gt;
&lt;br /&gt;
=== Ejecución de programas con MPI ===&lt;br /&gt;
MPI (interfaz de paso de mensajes) es la API de comunicación estándar para trabajos paralelos de memoria distribuida capaz de implementarse en un clúster. Para programar dicho trabajo, es necesario especificar la cantidad de nodos del clúster que se utilizarán y la cantidad de procesos (tareas) que se ejecutarán en cada nodo.&lt;br /&gt;
&lt;br /&gt;
El siguiente es un ejemplo de ejecución de un programa compilado con Open MPI:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 #SBATCH -J example_mpi&lt;br /&gt;
 #SBATCH -p general&lt;br /&gt;
 #SBATCH -n 264&lt;br /&gt;
 #SBATCH --ntasks-per-node=44&lt;br /&gt;
 #SBATCH --output=example_%j.out&lt;br /&gt;
 #SBATCH --error=example_%j.err&lt;br /&gt;
 #SBATCH --mail-user=user@example.com&lt;br /&gt;
 #SBATCH --mail-type=ALL&lt;br /&gt;
 &lt;br /&gt;
 srun ./mpi_test&lt;br /&gt;
A continuacion se explica línea por líneael script.&lt;br /&gt;
&lt;br /&gt;
Como empieza un shell script en Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre del Job:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -J example_mpi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre la particion donde se desea ejecutar el trabajo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -p general&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Número de tareas. Debe de ser un número múltiplo del número de CPUs máximo que tenga un node de la partición donde se lanza:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -n 264&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Con esto se fuerza a que se lancen 44 tareas MPI en cada uno de los nodos, ocupando de este modo nodos completos. En este caso 6 nodos completos:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --ntasks-per-node=44&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de salida:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -o example_%j.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de error:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -e example_%j.err&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Correo para notificaciones:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-user=user@example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Envía correo en todos los casos:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Programa para ejecutar:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
srun ./mpi_test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nota&#039;&#039;&#039;: no se carga específicamente el módulo &amp;quot;mpi&amp;quot; ya que se carga siempre por defecto.&lt;br /&gt;
&lt;br /&gt;
Para enviarlo al clúster debe ejecutar el comando: &#039;&#039;sbatch script.sh&#039;&#039;. El ejemplo anterior ejecutará una tarea OpenMPI con 264 procesos reservando 264 cores para ello.&lt;br /&gt;
&lt;br /&gt;
=== Trabajos multiproceso OpenMP ===&lt;br /&gt;
Los trabajos paralelos diseñados para ejecutarse en un sistema multi-core (shared-memory) suelen ser &amp;quot;multi-threaded&amp;quot;. La programación de un job de este tipo requiere especificar el número de núcleos que se utilizan para acomodar los subprocesos.&lt;br /&gt;
&lt;br /&gt;
OpenMP es el conjunto común de variables de compilación para facilitar el desarrollo de programas multi-threaded. Un script típico de SLURM para un programa de este tipo se ve así:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 #SBATCH -J OMPtest&lt;br /&gt;
 #SBATCH -p general&lt;br /&gt;
 #SBATCH -n 1&lt;br /&gt;
 #SBATCH -c 44&lt;br /&gt;
 #SBATCH --ntasks-per-node=44&lt;br /&gt;
 #SBATCH --mem-per-cpu=1024&lt;br /&gt;
 #SBATCH -o example_%j.out&lt;br /&gt;
 #SBATCH -e example_%j.err&lt;br /&gt;
 #SBATCH --mail-user=user@example.com&lt;br /&gt;
 #SBATCH --mail-type=ALL&lt;br /&gt;
&lt;br /&gt;
 OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK time ./omp-program&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Como debe comenzar un script en Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre del Job:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -J OMPtest&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre la particion donde desea ejecutar el Job:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -p general&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Número de trabajos:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Número de tareas:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -c 44&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Con esto se fuerza a que se agrupen las 44 tareas en un nodo (en OpenMP no hay comunicación entre nodos, por lo que todas las tareas deben estar en el mismo nodo o no funcionaría):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --ntasks-per-node=44&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Memoria por core (MBytes):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem-per-cpu=1024&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de salida:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -o example_%j.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de error:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -e example_%j.err&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Correo para notificaciones:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-user=user@example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Enviar correo en todos los casos:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Programa para ejecutar:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK time ./omp-program &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cuando se utiliza un programa OpenMP, el número de subprocesos (y, por lo tanto, el número requerido de núcleos) se especifica a través de la variable de entorno OMP_NUM_THREADS que, por lo tanto, aparece en el script frente a la llamada al programa. Lo estamos configurando en la variable interna SLURM_CPUS_PER_TASK que se establece a través de la opción &amp;quot;-c&amp;quot; (a 44 en nuestro ejemplo, que sería el número total de cores de un nodo de la partición &amp;quot;general&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
La opción &amp;quot;-n&amp;quot; se mantiene en 1 para indicar un único trabajo principal que tiene 44 tareas. Para asegurarnos que todas las tareas se ejecutan en el mismo nodo, se añade la opción &amp;quot;--ntasks-per-node&amp;quot; con el máximo número de cores que tiene un nodo de la partición donde se está lanzando el trabajo.&lt;br /&gt;
&lt;br /&gt;
=== Ejecución de tareas en GPUs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -J ejemplo_gpus&lt;br /&gt;
#SBATCH -p v100&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
#SBATCH -o ejemplo_%j.out&lt;br /&gt;
#SBATCH -e ejemplo_%j.err&lt;br /&gt;
#SBATCH --mail-user=correo@gmail.com&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH --mem-per-cpu=4300&lt;br /&gt;
#SBATCH --gres=gpu:1&lt;br /&gt;
&lt;br /&gt;
./programa&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Inicio de un bash script en Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre del trabajo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -J ejemplo_gpus&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre la partición donde se ejecuta el trabajo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --partition=v100&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Número de tareas:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de salida:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -o ejemplo_%j.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de error:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -e ejemplo_%j.err&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Correo para notificaciones:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-user=user@example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Enviar correo en todos los casos:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Memoria por CPU (MB):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem-per-cpu=4365&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cantidad utilizada de GPUs. El parámetro gpu:1 indica la cantidad de tarjetas a utilizar (cada nodo tiene 2 GPUs):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --gres=gpu:1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Programa para ejecutar:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./programa&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Job Arrays ===&lt;br /&gt;
Cuando se ejecutan cientos o miles de simulaciones que utilizan la misma cantidad de recursos, puede ser una ventaja ejecutar estas simulaciones como un &amp;quot;job array&amp;quot;. Los job array le permiten enviar miles de dichos trabajos (llamados &amp;quot;job steps&amp;quot;) con un solo script. A cada simulación se le asignará un valor único para la variable de entorno SLURM_ARRAY_TASK_ID. Puede usar esta variable para leer parámetros para pasos individuales de una línea dada de un archivo.&lt;br /&gt;
&lt;br /&gt;
=== Caso de uso de un Script Job Array (Gaussian) ===&lt;br /&gt;
Tenemos usuarios que actualmente envían varias simulaciones al clúster que son similares en cuanto al uso de recursos, pero, la diferencia es que solo cambia la entrada que le entregan al programa. Para esta situación, recomendamos hacer uso de un script Job Array.&lt;br /&gt;
&lt;br /&gt;
En este ejemplo crearemos un script job array para el software Gaussian, el cual, realizará 63 simulaciones, cada una de estas utilizará 8 cores y podrá alcanzar un uso máximo de 8 Gb de memoria ram. Para este caso utilizaremos la partición slims donde cada nodo tiene 46 Gb de memoria ram y 20 cores.&lt;br /&gt;
&lt;br /&gt;
Script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# ----------------SLURM Parameters----------------&lt;br /&gt;
#SBATCH -J prueba&lt;br /&gt;
#SBATCH -p slims&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
#SBATCH -c 8&lt;br /&gt;
#SBATCH --mem-per-cpu=1000&lt;br /&gt;
#SBATCH --mail-user=prueba@nlhpc.cl&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH --array=1-63&lt;br /&gt;
#SBATCH -o prueba_%A_%a.out&lt;br /&gt;
#SBATCH -e prueba_%A_%a.err&lt;br /&gt;
#-----------------Toolchain---------------------------&lt;br /&gt;
ml purge&lt;br /&gt;
ml intel/2019b&lt;br /&gt;
# ----------------Módulos-----------------------------&lt;br /&gt;
ml g16/B.01&lt;br /&gt;
# ----------------Comandos--------------------------&lt;br /&gt;
file=$(ls Child_10_*.com | sed -n ${SLURM_ARRAY_TASK_ID}p)&lt;br /&gt;
srun g16 $file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
Descripción de comandos utilizados en script:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Inicio de un bash script en Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre de la simulación:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -J prueba&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre la partición donde se ejecuta la simulación:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -p slims&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Número de tareas (1 tarea va a ejecutar 63 simulaciones):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Core’s por tareas (cada tarea utilizará un máximo 8 cores):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -c 8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Memoria ram por cpu (cada tarea utilizará un máximo 8 Gb de ram):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH –mem-per-cpu=1000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Correo para activar el envío de notificaciones:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-user=prueba@nlhpc.cl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Permitir envío de notificaciones:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se generan 63 simulaciones diferentes:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --array=1-63&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de salida: (ejemplo: prueba_18455017_1.out)&lt;br /&gt;
&lt;br /&gt;
* %A corresponde al Job ID de nuestra tarea que le asignará Slurm → 18455017.&lt;br /&gt;
* %a corresponde a la simulación X de nuestra tarea que le asignará Slurm → 1.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -o prueba_%A_%a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de errores: (ejemplo: prueba_18455017_1.err)&lt;br /&gt;
&lt;br /&gt;
* %A corresponde al Job ID de nuestra tarea que le asignará Slurm → 18455017.&lt;br /&gt;
* %a corresponde a la simulación X de nuestra tarea que le asignará Slurm → 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -e prueba_%A_%a.err&lt;br /&gt;
Toolchain: en este apartado, limpiaremos nuestro entorno de software no deseados y luego escogemos la herramienta informática con la cual está compilado el software Gaussian (nosotros utilizamos el compilador Intel/2019b).&lt;br /&gt;
&lt;br /&gt;
#-----------------Toolchain---------------------------&lt;br /&gt;
ml purge&lt;br /&gt;
ml intel/2019b&lt;br /&gt;
Módulos: cargamos el software Gaussian versión 16/B.0.&lt;br /&gt;
&lt;br /&gt;
# ----------------Módulos-----------------------------&lt;br /&gt;
ml g16/B.01&lt;br /&gt;
Comandos: aquí definimos los comandos a ejecutar.&lt;br /&gt;
&lt;br /&gt;
# ----------------Comandos--------------------------&lt;br /&gt;
file=$(ls Child_10_*.com | sed -n ${SLURM_ARRAY_TASK_ID}p)&lt;br /&gt;
srun g16 $file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
file= variable que va a listar los archivos de entrada que comiencen por Child_10_ y terminen en .com&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Child.png|no]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sed -n ${SLURM_ARRAY_TASK_ID}p) ← Sed imprimirá las líneas de cada archivo de entrada y la variable $SLURM_ARRAY_TASK_ID asumirá estas entradas como matriz de simulación en nuestro job array, en este ejemplo tenemos 63 archivos de entrada.&lt;br /&gt;
&lt;br /&gt;
Para más detalles sobre los archivos stdin, stdout y stderr de una simulación % A será reemplazado por el valor de SLURM_ARRAY_JOB_ID que es el Job ID de nuestra tarea y %a será reemplazado por el valor de SLURM_ARRAY_TASK_ID que corresponde a la simulación X de nuestra tarea.&lt;br /&gt;
&lt;br /&gt;
Srun g16 $file: ejecutará el comando gaussian g16 interpretando la variable $file en los nodos de cómputo asignados.&lt;br /&gt;
&lt;br /&gt;
Enviar el script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[prueba@leftraru1 ~]$ sbatch prueba.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ejecución de una tarea que ocupa mucha RAM por CPU ===&lt;br /&gt;
Debemos tener en cuenta que la RAM que SLURM reserva por defecto son 1000 MB. Un típico error de cancelación de tarea por falta de memoria es el siguiente:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/tmp/slurmd/job136839939/slurm_script: line 15: 23547 Killed                  ./programa.sh&lt;br /&gt;
slurmstepd: error: Detected 1 oom-kill event(s) in step 136839939.batch cgroup. Some of your processes &lt;br /&gt;
may have been killed by the cgroup out-of-memory handler.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Si su tarea ocupa más de la memoria por defecto, puede utilizar el siguiente parámetro:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem-per-cpu=2300 #Máxima RAM por CPU&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Esto hará que SLURM reserve más RAM por CPU para sus tareas.&lt;br /&gt;
&lt;br /&gt;
Tenga en cuenta que nuestros nodos tienen 46 GB de memoria RAM (Partición slims), 187 GB (Partición general) y 765 GB (Partición largemem) por nodo. [https://wiki.nlhpc.cl/Hardware_Disponible Más información].&lt;br /&gt;
&lt;br /&gt;
Otra forma de reservar memoria es utilizando el siguiente parámetro:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem=2300&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
En este caso SLURM realizará una reserva de memoria de 2300 MB pero por la totalidad del trabajo.&lt;br /&gt;
&lt;br /&gt;
Los parámetros anteriores al igual que el número de CPUs que se van a usar, hay que afinarlos lo mejor posible. Para ello lo que se puede hacer es hacer pruebas en los nodos logins, sin lanzar en las colas, y así estudiar el uso de RAM y CPU por parte de sus procesos.&lt;br /&gt;
&lt;br /&gt;
=== Ejecución de una tarea con Dependencias ===&lt;br /&gt;
Las dependencias de trabajos se utilizan para aplazar el inicio de un trabajo hasta que se satisfagan las dependencias especificadas. Se especifican con la opción --dependency en el siguiente formato:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch --dependency=&amp;lt;type:job_id[:job_id][,type:job_id[:job_id]]&amp;gt; ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Los tipos de dependencias son las siguientes:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;after&#039;&#039;&#039;:jobid[:jobid...] - el trabajo puede empezar después de que los trabajos especificados comiencen&lt;br /&gt;
* &#039;&#039;&#039;afterany&#039;&#039;&#039;:jobid[:jobid...] - el trabajo puede empezar después de que los trabajos especificados terminen&lt;br /&gt;
* &#039;&#039;&#039;afternotok&#039;&#039;&#039;:jobid[:jobid...] - el trabajo puede empezar después que los trabajos especificados terminan fallidamente&lt;br /&gt;
* &#039;&#039;&#039;afterok&#039;&#039;&#039;:jobid[:jobid...] - el trabajo puede empezar después que los trabajos especificados terminan exitósamente&lt;br /&gt;
&lt;br /&gt;
La manera más simple de usar una dependencia del tipo afterok:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[prueba@leftraru1 ~]$ sbatch job1.sh&lt;br /&gt;
Submitted batch job 21363626&lt;br /&gt;
[prueba@leftraru1 ~]$ sbatch --dependency=afterok:21363626 job2.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora cuando job1.sh termine correctamente, el job2.sh entrará en ejecución. Si job1.sh termina fallidamente, job2.sh no entrará en ejecución nunca pero sí quedará en cola (debe cancelarse manualmente el trabajo).&lt;br /&gt;
&lt;br /&gt;
== Prioridad de tarea ==&lt;br /&gt;
Cómo ver la prioridad del trabajo. Los factores que determinan la prioridad del trabajo, incluyendo la fórmula y pesos.&lt;br /&gt;
&lt;br /&gt;
=== Factores que determinan prioridad de tarea ===&lt;br /&gt;
&amp;lt;table class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 60%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Comando SLURM&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Descripción&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Edad&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;la cantidad de tiempo que el trabajo ha estado esperando en la cola.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Tamaño de la tarea&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;número de nodos solicitados por el trabajo.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Partición&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;prioridad para una partición determinada.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Prioridad Baja&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Mientras más tareas se ejecuten en el cluster, menor será la prioridad.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Prioridad Alta&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Mientras menos tareas se ejecuten en el clúster, más alta es la prioridad.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Prioridad de tarea ==&lt;br /&gt;
Cómo ver la prioridad del trabajo. Los factores que determinan la prioridad del trabajo, incluyendo la fórmula y pesos.&lt;br /&gt;
&lt;br /&gt;
=== Factores que determinan prioridad de tarea ===&lt;br /&gt;
* Edad - la cantidad de tiempo que el trabajo ha estado esperando en la cola&lt;br /&gt;
* Tamaño Oficio - número de nodos solicitados por el trabajo&lt;br /&gt;
* Partición - prioridad para una partición determinada&lt;br /&gt;
* Contribución de prioridades basada en los recursos informáticos utilizados por los miembros de un grupo de investigación en los últimos 30 días - Fairshare.&lt;br /&gt;
* Mientras más tareas se ejecuten en el cluster, menor será la prioridad.&lt;br /&gt;
* Mientras menos tareas se ejecuten en el clúster, más alta es la prioridad.&lt;br /&gt;
Fórmula Prioridad de tarea&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Job_priority =&lt;br /&gt;
  (PriorityWeightAge) * (age_factor) +&lt;br /&gt;
  (PriorityWeightFairshare) * (fair-share_factor) +&lt;br /&gt;
  (PriorityWeightJobSize) * (job_size_factor) +&lt;br /&gt;
  (PriorityWeightPartition) * (partition_factor) +&lt;br /&gt;
  (PriorityWeightQOS) * (QOS_factor)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Visualización de sus Tareas ==&lt;br /&gt;
Si Ud. necesita visualizar información acerca de sus tareas de forma interactiva, puede utilizar el comando smap:&lt;br /&gt;
&lt;br /&gt;
smap -i 3&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Smap.png|no|700px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De esta forma, tendrá una actualización cada 3 segundos de sus tareas en ejecución incluyendo los nodos en los cuales se encuentran ejecutándose.&lt;br /&gt;
&lt;br /&gt;
== Bibliografía ==&lt;br /&gt;
[http://slurm.schedmd.com/documentation.html Manual Oficial de Slurm]&lt;br /&gt;
&lt;br /&gt;
[https://slurm.schedmd.com/scrontab.html Documentación scrontab]&lt;/div&gt;</summary>
		<author><name>Jmorales</name></author>
	</entry>
	<entry>
		<id>https://wiki.nlhpc.cl/index.php?title=SISTEMA_GESTOR_DE_RECURSOS&amp;diff=765</id>
		<title>SISTEMA GESTOR DE RECURSOS</title>
		<link rel="alternate" type="text/html" href="https://wiki.nlhpc.cl/index.php?title=SISTEMA_GESTOR_DE_RECURSOS&amp;diff=765"/>
		<updated>2024-04-29T21:59:39Z</updated>

		<summary type="html">&lt;p&gt;Jmorales: /* Estado de nodos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== SLURM Workload Manager ==&lt;br /&gt;
Es un sistema de programación de trabajos y gestión de clústeres de código abierto, tolerante a fallas y altamente escalable para clústeres Linux grandes y pequeños.&lt;br /&gt;
&lt;br /&gt;
Como administrador de carga de trabajo de clúster, Slurm tiene tres funciones clave. Primero, asigna acceso exclusivo y / o no exclusivo a los recursos (nodos de cómputo) a los usuarios durante un período de tiempo para que puedan realizar el trabajo. En segundo lugar, proporciona un marco para iniciar, ejecutar y monitorear el trabajo (normalmente un trabajo paralelo) en el conjunto de nodos asignados. Finalmente, arbitra la contención de recursos mediante la gestión de una cola de trabajo pendiente.&lt;br /&gt;
&lt;br /&gt;
SLURM es el gestor de colas instalado en muchos de los súper computadores del [https://www.top500.org/ TOP500], y también en el clúster del NLHPC. Si Ud. quiere lanzar tareas dentro de Leftaru, debe hacerlo a través de Slurm.&lt;br /&gt;
&lt;br /&gt;
== Conceptos clave ==&lt;br /&gt;
SLURM gestiona trabajos de usuario que tienen las siguientes características clave:&lt;br /&gt;
&lt;br /&gt;
* Conjunto de recursos solicitados:&lt;br /&gt;
** Número de recursos informáticos: nodos (incluidas todas sus CPUs y núcleos) o CPUs (incluidos todos sus núcleos) o solo núcleos&lt;br /&gt;
** Cantidad de memoria: por nodo o por CPU (lógica)&lt;br /&gt;
** Tiempo necesario para que las tareas del usuario completen su trabajo&lt;br /&gt;
* Una partición de nodo solicitada (cola de trabajos)&lt;br /&gt;
* Un nivel de calidad de servicio (QoS) solicitado que otorga a los usuarios accesos específicos&lt;br /&gt;
* Una cuenta solicitada con recursos limitados&lt;br /&gt;
&lt;br /&gt;
De manera predeterminada, los usuarios envían trabajos a una partición particular (marcada como tal para todos los usuarios) y bajo una cuenta particular (preestablecida por usuario).&lt;br /&gt;
&lt;br /&gt;
== Particiones SLURM ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 60%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nombre Particion&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nodos&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;CPUs&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;RAM&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Descripción&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;main&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;27&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;256&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;768GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;general&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;48&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;44&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;187GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;largemem&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;9&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;44&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;765GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;v100&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;44&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;187GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;4 GPUs Nvidia Tesla V100.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;mi100&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;128&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;502GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2 GPUs AMD Instinct MI100.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;debug&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;4&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;20&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;59GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Destinados a pruebas de máximo 30 minutos.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Introducción a los comandos slurm ==&lt;br /&gt;
&amp;lt;table class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 60%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Comando SLURM&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Descripción&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;srun&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ejecutar un comando en nodos de cómputo asignados.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;sbatch&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;presentar un script de trabajo&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;squeue&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Mostrar estado de los trabajos en la cola.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;scancel&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;eliminar un trabajo.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;sinfo&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Muestra el estado de los nodos de cómputo.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
Estos son los comandos básicos utilizados para realizar la mayoría de las operaciones básicas con SLURM.&lt;br /&gt;
&lt;br /&gt;
=== Estado de nodos ===&lt;br /&gt;
Para consultar el uso de nuestra infraestructura y qué particiones están más libres, le recomendamos el comando sinfo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# sinfo&lt;br /&gt;
PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST&lt;br /&gt;
all        up    infinite    16     mix   cn[001,005-006,010,034-035,037,041,045,050,057,108,121],sn[012,016,037]&lt;br /&gt;
all        up    infinite    95     alloc cn[011-033,038-044,046-049,071-120],cnf[001-004],sn[001-011,038-041,043-044]&lt;br /&gt;
all        up    infinite    33     idle  fn[001-009],gn[001-002],sn[018-035,045-048]&lt;br /&gt;
main*      up    infinite    20     alloc mn[001-011,014-022]&lt;br /&gt;
main*      up    infinite    7      idle [012-013,023-027]&lt;br /&gt;
debug      up    infinite    4      idle  leftraru[1-2]&lt;br /&gt;
general    up    infinite    4      mix   sn[012,016,037,042]&lt;br /&gt;
general    up    infinite    22     alloc sn[001-011,013-015,017,036,038-041,043-044]&lt;br /&gt;
general    up    infinite    22     idle  sn[018-035,045-048]&lt;br /&gt;
largemem   up    infinite    9      idle  fn[001-009]&lt;br /&gt;
v100       up    infinite    2      idle  gn[001-002]&lt;br /&gt;
mi100      up    infinite    1      idle  gna001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fijándose en el texto resaltado de la salida del comando sinfo, se puede comprobar que en la partición main hay 20 nodos que están completamente ocupados (estado alloc), 7 nodos que están libres (idle); por otro lado, en la partición general hay 22 nodos completamente ocupados, 4 parcialmente ocupados y 22 libres. Dado este escenario, está claro que debería de lanzar sus ejecuciones en los nodos de la partición general, por las razones anteriormente expuestas.&lt;br /&gt;
&lt;br /&gt;
Para lanzar en la partición general, debe tener en cuenta que tiene que indicar en su script que se use dicha partición en vez de, probablemente, main. Por supuesto, en esta partición cambian las características técnicas, se pasan a tener 44 cores por nodo (en vez de 256 en main) y una capacidad RAM de 187GB (en vez de 768GB en main). Puede ver más información de las particiones en este link(agregar link), donde podrá revisar que con la inclusión de Guacolda hemos añadido nodos con hasta 765GB de memoria RAM y nodos con GPUs Nvidia Tesla V100 y AMD Instinct MI100 .&lt;br /&gt;
&lt;br /&gt;
Para ver los nodos disponibles y poder determinar en que partición lanzar los trabajos se recomienda utilizar el siguiente comando.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;[prueba@leftraru1 ~]$ sinfo -o &amp;quot;%10P %6D %10t %10m %c&amp;quot; -t idle| egrep &amp;quot;PARTITION|slims|general|largemem|v100&amp;quot;&lt;br /&gt;
PARTITION  NODES  STATE      MEMORY     CPUS&lt;br /&gt;
main*       27    idle       768000      256&lt;br /&gt;
general     2     idle       187000      44&lt;br /&gt;
largemem    7     idle       765000      44&lt;br /&gt;
v100        1     idle       187000      44 &lt;br /&gt;
mi100       1     idle       515047      128 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
El comando anterior muestra que main tiene 27 nodos libres, en este caso es recomendado lanzar en en main para evitar que el trabajo quede en cola por falta de recursos en otros nodos.&lt;br /&gt;
&lt;br /&gt;
Otro Ejemplo, se muestra sólo una partición específica&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;[prueba@leftraru1 ~]$ sinfo -p main&lt;br /&gt;
PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST&lt;br /&gt;
main*        up   infinite     15    mix mn[001-008,014-020]&lt;br /&gt;
main*        up   infinite     12   idle mn[009-013,021-027]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Comprobación del estado de tareas ===&lt;br /&gt;
squeue - Muestra el estatus de los trabajos&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;squeue                  # tus trabajos&lt;br /&gt;
squeue -u &amp;amp;lt;username&amp;amp;gt;    # trabajos por usuario &amp;amp;lt;username&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
squeue: Comprobar estados de los trabajos&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;&amp;quot; class=&amp;quot;mw-highlight mw-content-ltr&amp;quot; dir=&amp;quot;ltr&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  JOBID        PARTITION     NAME     USER    ST       TIME  	NODES 	NODELIST(REASON)&lt;br /&gt;
13951858_1     general	     test1    test1    R   1-18:35:14      2    cn[009-010]&lt;br /&gt;
13951857_2     general       test2    test1    R   1-18:36:11      2    cn[099-100]&lt;br /&gt;
13956453       gpu           test3    test3    R   1-03:42:08      1    cn039&lt;br /&gt;
13956449       largemem      test4    test4    R   1-05:42:08      1    cn044&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puede utilizar squeue para saber el estado de una o varias de sus tareas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ squeue -o &amp;quot;%.15i %.6P %.8j %.20S %.11M %.11L %.20V %.10Q %.4C %.2D %.6m&amp;quot; -S -t,-Q&lt;br /&gt;
 JOBID   PARTIT     NAME      START_TIME          TIME      TIME_LEFT     SUBMIT_TIME       PRIORITY CPUS NO MIN_ME&lt;br /&gt;
10837561 general   TEST1   2018-06-18T18:51:01    19:00:31  2-04:59:29  2018-06-18T18:51:01  119972    1  1  1000M&lt;br /&gt;
10838562 general   TEST2   2018-06-19T11:30:47    2:20:45   2-21:39:15  2018-06-19T11:30:46  119946    1  1  1000M&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
para mas opciones puede revisar con el comando [https://slurm.schedmd.com/squeue.html man squeue] las opciones restantes.&lt;br /&gt;
&lt;br /&gt;
=== Códigos de ESTADO de los trabajos ===&lt;br /&gt;
&lt;br /&gt;
Los trabajos suelen pasar por varios estados durante su ejecución. Los estados típicos son PENDIENTE, EN EJECUCIÓN, SUSPENDIDO, FINALIZANDO y TERMINADO. A continuación se explica cada estado.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;BF&#039;&#039;&#039; BOOT_FAIL&lt;br /&gt;
    Trabajo finalizado debido a un fallo de arranque, normalmente debido a un fallo de hardware (por ejemplo, no se puede arrancar el nodo o bloque y el trabajo no se puede volver a poner en cola). &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CA&#039;&#039;&#039; CANCELADO&lt;br /&gt;
    El trabajo ha sido cancelado explícitamente por el usuario o el administrador del sistema. El trabajo puede haberse iniciado o no. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CD&#039;&#039;&#039; TERMINADO&lt;br /&gt;
    El trabajo ha terminado todos los procesos en todos los nodos con un código de salida de cero. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CF&#039;&#039;&#039; CONFIGURANDO&lt;br /&gt;
    Al trabajo se le han asignado recursos, pero están esperando a que estén listos para su uso (por ejemplo, arrancando). &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CG&#039;&#039;&#039; COMPLETANDO&lt;br /&gt;
    El trabajo está en proceso de finalización. Algunos procesos en algunos nodos pueden estar aún activos. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DL&#039;&#039;&#039; FECHA LÍMITE&lt;br /&gt;
    El trabajo ha finalizado en la fecha límite. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;F&#039;&#039;&#039; FALLÓ&lt;br /&gt;
    Trabajo finalizado con un código de salida distinto de cero u otra condición de fallo. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NF&#039;&#039;&#039; NODO_FAIL&lt;br /&gt;
    Trabajo finalizado debido al fallo de uno o más nodos asignados. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;OOM&#039;&#039;&#039; OUT_OF_MEMORY&lt;br /&gt;
    El trabajo ha experimentado un error de memoria insuficiente. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PD&#039;&#039;&#039; PENDIENTE&lt;br /&gt;
    El trabajo está pendiente de asignación de recursos. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PR&#039;&#039;&#039; PREEMPTED&lt;br /&gt;
    El trabajo ha finalizado debido a una espera. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;R&#039;&#039;&#039; EN MARCHA&lt;br /&gt;
    El trabajo tiene actualmente una asignación. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RD&#039;&#039;&#039; RESV_DEL_HOLD&lt;br /&gt;
    El trabajo se está reteniendo después de que se eliminara la reserva solicitada. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RF&#039;&#039;&#039; REQUEUE_FED&lt;br /&gt;
    El trabajo está siendo solicitado por una federación. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RH&#039;&#039;&#039; REQUEUE_HOLD&lt;br /&gt;
    Se está volviendo a poner en cola un trabajo retenido. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RQ&#039;&#039;&#039; REQUEUED&lt;br /&gt;
    Se está poniendo en cola un trabajo que se está completando. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RS&#039;&#039;&#039; CAMBIO DE TAMAÑO&lt;br /&gt;
    El trabajo está a punto de cambiar de tamaño. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RV&#039;&#039;&#039; REVOCADO&lt;br /&gt;
    El trabajo se ha retirado del clúster debido a que otro clúster ha iniciado el trabajo. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SI&#039;&#039;&#039; SEÑALANDO&lt;br /&gt;
    El trabajo está siendo señalizado. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SE&#039;&#039;&#039; SPECIAL_EXIT&lt;br /&gt;
    El trabajo se ha puesto en cola en un estado especial. Este estado puede ser establecido por los usuarios, normalmente en EpilogSlurmctld, si el trabajo ha terminado con un valor de salida particular. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SO&#039;&#039;&#039; STAGE_OUT&lt;br /&gt;
    El trabajo está preparando los archivos. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ST&#039;&#039;&#039; PARADO&lt;br /&gt;
    El trabajo tiene una asignación, pero la ejecución se ha detenido con la señal SIGSTOP. Los CPUS han sido retenidos por este trabajo. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;S&#039;&#039;&#039; SUSPENDIDO&lt;br /&gt;
    El trabajo tiene una asignación, pero se ha suspendido la ejecución y se han liberado CPUs para otros trabajos. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TO&#039;&#039;&#039; TIMEOUT&lt;br /&gt;
    El trabajo ha finalizado al alcanzar su límite de tiempo.&lt;br /&gt;
&lt;br /&gt;
=== Cancelar un trabajo ===&lt;br /&gt;
Con scancel se puede cancelar un trabajo en ejecución&lt;br /&gt;
&amp;lt;pre&amp;gt;scancel &amp;amp;lt;jobID&amp;amp;gt;         # Matar proceso &amp;amp;lt;jobID&amp;amp;gt;. (puede obtener el ID del job con &amp;quot;squeue&amp;quot;)&lt;br /&gt;
scancel -u &amp;amp;lt;username&amp;amp;gt;   # Matar proceso por usuario &amp;amp;lt;username&amp;amp;gt;. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;[prueba@leftraru1 ~]$ squeue -u prueba&lt;br /&gt;
 JOBID  PARTITION    NAME     USER    ST   TIME  NODES  NODELIST(REASON)&lt;br /&gt;
 45594    slims      TEST    prueba   R    0:59   20    cn[001-020]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;[prueba@leftraru1 ~]$ scancel 45594&lt;br /&gt;
[prueba@leftraru1 ~]$ squeue -u prueba&lt;br /&gt;
JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)&lt;br /&gt;
[prueba@leftraru1 ~]$&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ver estado de trabajos ===&lt;br /&gt;
Para revisar el detalle de las opciones de un trabajo: scontrol show job&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ scontrol show job 10837561&lt;br /&gt;
JobId=10837561 JobName=TEST1&lt;br /&gt;
   UserId=usuario(1000) GroupId=group(1000) MCS_label=N/A&lt;br /&gt;
   Priority=1100 Nice=0 Account=account QOS=120&lt;br /&gt;
   JobState=RUNNING Reason=None Dependency=(null)&lt;br /&gt;
   Requeue=0 Restarts=0 BatchFlag=1 Reboot=0 ExitCode=0:0&lt;br /&gt;
   DerivedExitCode=0:0&lt;br /&gt;
   RunTime=19:03:08 TimeLimit=3-00:00:00 TimeMin=N/A&lt;br /&gt;
   SubmitTime=2018-06-18T18:51:01 EligibleTime=2018-06-18T18:51:01&lt;br /&gt;
   StartTime=2018-06-18T18:51:01 EndTime=2018-06-21T18:51:01 Deadline=N/A&lt;br /&gt;
   PreemptTime=None SuspendTime=None SecsPreSuspend=0&lt;br /&gt;
   Partition=slims AllocNode:Sid=leftraru2:5471&lt;br /&gt;
   ReqNodeList=(null) ExcNodeList=(null)&lt;br /&gt;
   NodeList=cn021&lt;br /&gt;
   BatchHost=cn021&lt;br /&gt;
   NumNodes=1 NumCPUs=1 NumTasks=1 CPUs/Task=1 ReqB:S:C:T=0:0:*:*&lt;br /&gt;
   TRES=cpu=1,mem=1000M,node=1&lt;br /&gt;
   Socks/Node=* NtasksPerN:B:S:C=1:0:*:* CoreSpec=*&lt;br /&gt;
     Nodes=cn021 CPU_IDs=1 Mem=1000 GRES_IDX=&lt;br /&gt;
   MinCPUsNode=1 MinMemoryCPU=1000M MinTmpDiskNode=0&lt;br /&gt;
   Features=(null) DelayBoot=00:00:00&lt;br /&gt;
   Gres=(null) Reservation=(null)&lt;br /&gt;
   OverSubscribe=OK Contiguous=0 Licenses=matlab Network=(null)&lt;br /&gt;
   Command=/home/usuario/script.sh&lt;br /&gt;
   WorkDir=/home/usuario/&lt;br /&gt;
   StdErr=/home/usuario/10837561_%x.err&lt;br /&gt;
   StdIn=/dev/null&lt;br /&gt;
   StdOut=/home/usuario/10837561_%x.out&lt;br /&gt;
   Power=&lt;br /&gt;
   BatchScript=&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para ver el script asociado a un trabajo: scontrol write batch_script &amp;lt;job_id&amp;gt; -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ scontrol write batch_script 10837561 -&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -J nombre_del_trabajo&lt;br /&gt;
#SBATCH -p slims&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
#SBATCH --ntasks-per-node=1&lt;br /&gt;
#SBATCH --mail-user=usaurio@correo.cl&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH -o nombre_del_trabajo%j_%x.out&lt;br /&gt;
#SBATCH -e nombre_del_trabajo%j_%x.err&lt;br /&gt;
#SBATCH --license=matlab &lt;br /&gt;
 &lt;br /&gt;
ml MATLAB/2017a&lt;br /&gt;
&lt;br /&gt;
matlab -nodisplay -nosplash -nodesktop &amp;lt; programa.m&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ejecutando trabajos ==&lt;br /&gt;
Actualmente contamos con 2 metodos de enviar trabajos bajo SLURM: &#039;&#039;&#039;sbatch&#039;&#039;&#039; and &#039;&#039;&#039;srun&#039;&#039;&#039;. A veces puede ser ventajoso ejecutar un solo comando en el clúster como prueba o realizar rápidamente una operación con recursos adicionales. &#039;srun&#039; permite a los usuarios hacer esto, y comparte las mismas variables que &#039;sbatch&#039; . STDOUT y STDERR para un trabajo &#039;srun&#039; serán redirigidos a la pantalla del usuario. Ctrl-C cancelará un trabajo srun. &#039;&#039;&#039;sbatch&#039;&#039;&#039; enviará un script de trabajo para que lo ejecute el clúster. Los scripts de trabajo bajo SLURM son simplemente scripts de shell (* .sh) con un conjunto de solicitudes de recursos en la parte superior del script.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Uso básico de srun:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
srun &amp;lt;algúnComando&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de salida (ejecutando el comando &amp;quot;hostname&amp;quot; para saber en que nodo se está ejecutando):&lt;br /&gt;
&amp;lt;pre&amp;gt; $ srun hostname&lt;br /&gt;
  cn003&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para enviar un script de trabajo a SLURM:&lt;br /&gt;
&amp;lt;pre&amp;gt;sbatch nombreScript.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example output:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sbatch test-job.sh&lt;br /&gt;
Submitted batch job 1169&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Variables Slurm ===&lt;br /&gt;
Las variables en esta sección son obligatorias, y SLURM las determina para determinar dónde y cuándo se ejecutarán sus trabajos. Si no asigna un valor para estos, el planificador asignará a sus trabajos el valor predeterminado. Si no solicita específicamente recursos para un trabajo, se le asignará un conjunto de recursos predeterminados. Para obtener una lista de todas las variables disponibles, consulte la documentación de SLURM en http://slurm.schedmd.com/sbatch.html. Las variables de este artículo estaban cubiertas porque eran las más relevantes para los casos de uso típicos.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Comando SLURM&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Descripción&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;--mem-per-cpu=&amp;amp;lt;megabytes&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Memoria requerida para el trabajo por CPU (en MegaBytes). El valor predeterminado es 1024 MB.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-p &amp;amp;lt;partition&amp;amp;gt;, --partition=&amp;amp;lt;partition&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Enviar un trabajo a una partición específica.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-n, --ntasks=&amp;amp;lt;cantidad de tareas&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Número de tareas que serán asignadas para el trabajo.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-c &amp;amp;lt;cpus&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Esta es la cantidad de CPU que necesita su trabajo. Tenga en cuenta que SLURM es relativamente generoso con las CPU, y el valor especificado aquí es el número &amp;quot;mínimo&amp;quot; de CPU que se asignará a su trabajo. Si hay CPU adicionales disponibles en un nodo más allá de lo solicitado, su trabajo recibirá esas CPU hasta que otros trabajos las necesiten. El valor predeterminado es 1 CPU. Intentar usar más CPU de las que se le asignaron dará como resultado que sus procesos adicionales se turnen en la misma CPU (ralentizando su trabajo).&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-J &amp;amp;lt;name&amp;amp;gt;, --jobname=&amp;amp;lt;name&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Especifica un nombre a tu trabajo.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;--mail-type=BEGIN,END,FAIL,ALL&amp;lt;b&amp;gt; and &amp;lt;/b&amp;gt;--mail-user=&amp;amp;lt;emailAddress&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Enviar por correo electrónico cuando su trabajo comienza / termina / falla. Puede especificar varios valores para esto (separados por comas) si es necesario.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-o &amp;amp;lt;STDOUT_log&amp;amp;gt;, --output=&amp;amp;lt;STDOUT_log&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Redirija la salida a los archivos de registro que especifique. Por defecto, ambos, STDOUT and STDERR son enviados a este archivo. Puedes especificar %j como parte del nombre de archivo de registro para indicar la ID del trabajo (como ejemplo, &amp;quot;#SBATCH -o ouptut_%j.o&amp;quot; redirigiría la salida a &amp;quot;output_123456.o&amp;quot;).&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-e &amp;amp;lt;STDERR_log&amp;amp;gt;, --error=&amp;amp;lt;STDERR_log&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Redireccionar STDERR a un archivo separado. Funciona exactamente igual que &amp;quot;-o&amp;quot;.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-t &amp;amp;lt;days-hours:minutes:seconds&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Walltime para tu trabajo. La duración del Walltime es el tiempo que espera que su trabajo se ejecute.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-a, --array=&amp;amp;lt;índices&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Envía una lista (arreglo) de trabajos identicos. Solo aplica para sbatch.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los scripts de trabajo especifican los recursos solicitados y otras consideraciones especiales con comentarios especiales &amp;quot;#SBATCH&amp;quot; en la parte superior de un script de trabajo. Aunque muchas de estas opciones son opcionales, las varibles que se ocupan de solicitudes de recursos (CPU, memoria y tiempo) son obligatorias. Todas las variables deben agregarse a sus scripts de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#SBATCH &amp;lt;variable&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Para especificar un nombre al job, por ejemplo, debe agregar lo siguiente a su secuencia de comandos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#SBATCH --job-name=nombreDeTrabajo&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Enviar un script===&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 #SBATCH -J example&lt;br /&gt;
 #SBATCH -p general&lt;br /&gt;
 #SBATCH -n 1&lt;br /&gt;
 #SBATCH --output=example_%j.out&lt;br /&gt;
 #SBATCH --error=example_%j.err&lt;br /&gt;
 #SBATCH --mail-user=user@example.com&lt;br /&gt;
 #SBATCH --mail-type=ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Como debe comenzar un script en Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre del trabajo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -J example&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre la partición donde desea ejecutar el Job:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -p general&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Número de tareas:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de salida:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -o example_%j.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de error:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -e example_%j.err&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Correo para notificaciones:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-user=user@example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Enviar correo en todos casos (verificar opciones arriba):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Programar tarea (uso de scrontab) ===&lt;br /&gt;
&#039;&#039;&#039;scrontab&#039;&#039;&#039; es una implementación del clásico planificador de tareas de linux &#039;&#039;&#039;crontab&#039;&#039;&#039; donde se guarda un listado de comandos a ejecutar en un tiempo determinado por el usuario.&lt;br /&gt;
&lt;br /&gt;
Para acceder a scrontab utilice el siguiente comando:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[prueba@leftraru1 ~]$ scrontab -e&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto le permitirá editar su archivo scrontab, asignando recursos como también el momento en que desea ejecutar su tarea. La estructura base a utilizar es la siguiente:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SCRON -J mi_tarea&lt;br /&gt;
#SCRON -p slims&lt;br /&gt;
#SCRON -n 1&lt;br /&gt;
#SCRON -c 1&lt;br /&gt;
#SCRON --mem-per-cpu=2300&lt;br /&gt;
#SCRON --mail-user=foo@bar.com&lt;br /&gt;
#SCRON --mail-type=ALL&lt;br /&gt;
#SCRON -o mi_tarea_%j.out&lt;br /&gt;
#SCRON -e mi_tarea_%j.err&lt;br /&gt;
# Example of job definition:&lt;br /&gt;
# .---------------- minute (0 - 59)&lt;br /&gt;
# |  .------------- hour (0 - 23)&lt;br /&gt;
# |  |  .---------- day of month (1 - 31)&lt;br /&gt;
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...&lt;br /&gt;
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat&lt;br /&gt;
# |  |  |  |  |&lt;br /&gt;
# *  *  *  *  *     command to be executed&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;minute&#039;&#039;&#039; - Corresponde al minuto en que se va a ejecutar el script, valor de 0 a 59.&lt;br /&gt;
* &#039;&#039;&#039;hour&#039;&#039;&#039; - Hora de ejecución, formato 24 horas, valor de 0 a 23, donde 0 son las 12:00 AM.&lt;br /&gt;
* &#039;&#039;&#039;day of month&#039;&#039;&#039; - Día del mes, la tarea se puede ejecutar cada x día, valor de 1 a 31.&lt;br /&gt;
* &#039;&#039;&#039;month&#039;&#039;&#039; - La tarea se puede ejecutar cada x mes, valor de 1 a 12.&lt;br /&gt;
* &#039;&#039;&#039;day of week&#039;&#039;&#039; - Día de la semana, valor de 0 a 6, donde 0 es Domingo.&lt;br /&gt;
* &#039;&#039;&#039;command to be executed&#039;&#039;&#039; - Script a ejecutar por el usuario.&lt;br /&gt;
 &lt;br /&gt;
Ejemplo envío de trabajo slurm:&lt;br /&gt;
&lt;br /&gt;
Para la asignación de recursos, utilizaremos la directriz &#039;&#039;&#039;#SCRON&#039;&#039;&#039;, que utiliza los mismos parámetros usados por &#039;&#039;&#039;#SBATCH&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Luego de asignar los recursos debemos especificar el tiempo, en este caso la tarea será ejecutada todos los días cada 20 minutos, luego debemos indicar el script enviado por el usuario y guardamos los cambios en el archivo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
*/20 * * * * /home/prueba/ejemplo/script.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es importante destacar que el script a lanzar &#039;&#039;&#039;/home/prueba/ejemplo/script.sh&#039;&#039;&#039; debe tener permisos de ejecución.&lt;br /&gt;
&lt;br /&gt;
Para revisar el listado de tareas existentes en nuestro scrontab, ejecutamos el comando:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[prueba@leftraru1 ~]$ scrontab -l&lt;br /&gt;
*/20 * * * * /home/prueba/ejemplo/script.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para borrar el contenido de nuestro scrontab:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[prueba@leftraru1 ~]$ scrontab -r&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Información a considerar:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Generar archivos de salida correctamente&lt;br /&gt;
** Para que el archivo error y out de tu script se generen en el directorio solicitado, ejemplo, /home/prueba/ejemplo/ en tu script debe estar presente el comando cd “/home/prueba/ejemplo”, esto hará que scrontab se posicione dentro del directorio de salida.&lt;br /&gt;
* Es distinto el tiempo de programar el envío de una tarea (scrontab) a que una tarea inicie en el clúster (running), ya que esto dependerá de los recursos libres que existan en ese momento en el clúster.&lt;br /&gt;
* Para revisar las tareas programadas debe ejecutar en cualquier nodo login el comando &#039;&#039;&#039;scrontab -l&#039;&#039;&#039; o revisar con el comando &#039;&#039;&#039;squeue&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[prueba@leftraru1 ~]$ squeue&lt;br /&gt;
24293471     slims /home/eg  prueba PD       0:00      1 (BeginTime)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Checkpointing ==&lt;br /&gt;
Es la acción de guardar el estado de un proceso en ejecución en un archivo de imagen de punto de control. Este proceso se puede reiniciar más tarde desde el archivo del punto de control, continuando la ejecución desde donde se detuvo, en la misma computadora o en una diferente.&lt;br /&gt;
&lt;br /&gt;
=== ¿Por qué utilizarlo? ===&lt;br /&gt;
* Permite ejecuciones de tarea largas que superen el tiempo de ejecución permitido en el cluster (30 días)&lt;br /&gt;
* Estar preparados ante fallas del sistema que nos puedan hacer perder resultados de nuestras simulaciones&lt;br /&gt;
&lt;br /&gt;
=== Utilización ===&lt;br /&gt;
Lo primero que debemos hacer en nuestro script es cargar el módulo de Mana:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ml mana/3.0.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Este módulo provee 3 ejecutables que necesitaremos:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;mana_coordinator:&#039;&#039;&#039; Coordina los checkpoints entre los distintos procesos&lt;br /&gt;
* &#039;&#039;&#039;mana_launch:&#039;&#039;&#039; Inicia un proceso con checkpoint&lt;br /&gt;
* &#039;&#039;&#039;mana_restart:&#039;&#039;&#039; Reinicia la ejecución desde una imagen del checkpoint&lt;br /&gt;
&lt;br /&gt;
Necesitaremos 2 scripts para trabajar con checkpoints: Inicio y reinicio&lt;br /&gt;
&lt;br /&gt;
=== Script de inicio (inicio.sh) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
##---------------SLURM Parameters - NLHPC ----------------&lt;br /&gt;
#SBATCH -J Testcheckpoint&lt;br /&gt;
#SBATCH -p general&lt;br /&gt;
#SBATCH -n 44&lt;br /&gt;
#SBATCH --ntasks-per-node=44&lt;br /&gt;
#SBATCH --mem-per-cpu=4363&lt;br /&gt;
#SBATCH --mail-user=test@nlhpc.cl&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH -o Testcheckpoint_%j.out&lt;br /&gt;
#SBATCH -e Testcheckpoint_%j.err&lt;br /&gt;
&lt;br /&gt;
# ----------------Modules----------------------------&lt;br /&gt;
ml mana/3.0.0&lt;br /&gt;
# ----------------Command--------------------------&lt;br /&gt;
#Checkpointing cada 1 hora&lt;br /&gt;
mana_cooridinator -i3600&lt;br /&gt;
#Ejecutamos nuestra tarea con checkpointing&lt;br /&gt;
srun mana_launch ./ejecutable&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Script de reinicio (reinicio.sh) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
##---------------SLURM Parameters - NLHPC ----------------&lt;br /&gt;
#SBATCH -J Testcheckpoint&lt;br /&gt;
#SBATCH -p general&lt;br /&gt;
#SBATCH -n 44&lt;br /&gt;
#SBATCH --ntasks-per-node=44&lt;br /&gt;
#SBATCH --mem-per-cpu=4363&lt;br /&gt;
#SBATCH --mail-user=test@nlhpc.cl&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH -o Testcheckpoint_%j.out&lt;br /&gt;
#SBATCH -e Testcheckpoint_%j.err&lt;br /&gt;
&lt;br /&gt;
# ----------------Modules----------------------------&lt;br /&gt;
ml mana/3.0.0&lt;br /&gt;
# ----------------Command--------------------------&lt;br /&gt;
#Checkpointing cada 1 hora&lt;br /&gt;
mana_cooridinator -i3600&lt;br /&gt;
#Reiniciar nuestra tarea desde los archivos de checkpoint&lt;br /&gt;
srun mana_restart&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para correr estos scripts se puede hacer utilizando la funcionalidad de dependencias de SLURM:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[test@leftraru2 test]$ sbatch inicio.sh&lt;br /&gt;
Submitted batch job 23574685&lt;br /&gt;
[test@leftraru2 test]$ sbatch --dependency=afterok:23574685 reinicio.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Trabajos ==&lt;br /&gt;
=== Trabajos paralelos ===&lt;br /&gt;
Muchos de los trabajos que se ejecutan en un clúster de producción implicarán más de un procesador (CPU, núcleo). Dichos trabajos paralelos deben solicitar la cantidad de recursos necesarios a través de opciones adicionales. Los más comunes son:&lt;br /&gt;
&lt;br /&gt;
Para diferentes tipos de trabajos paralelos, se especificarán diferentes opciones. Los trabajos paralelos más comunes son trabajos de MPI (memoria distribuida), trabajos de subprocesos múltiples (memoria compartida) y los llamados híbridos que son una combinación de los dos. Analicemos por separado con un n ejemplo para cada uno.&lt;br /&gt;
&lt;br /&gt;
=== Ejecución de programas con MPI ===&lt;br /&gt;
MPI (interfaz de paso de mensajes) es la API de comunicación estándar para trabajos paralelos de memoria distribuida capaz de implementarse en un clúster. Para programar dicho trabajo, es necesario especificar la cantidad de nodos del clúster que se utilizarán y la cantidad de procesos (tareas) que se ejecutarán en cada nodo.&lt;br /&gt;
&lt;br /&gt;
El siguiente es un ejemplo de ejecución de un programa compilado con Open MPI:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 #SBATCH -J example_mpi&lt;br /&gt;
 #SBATCH -p general&lt;br /&gt;
 #SBATCH -n 264&lt;br /&gt;
 #SBATCH --ntasks-per-node=44&lt;br /&gt;
 #SBATCH --output=example_%j.out&lt;br /&gt;
 #SBATCH --error=example_%j.err&lt;br /&gt;
 #SBATCH --mail-user=user@example.com&lt;br /&gt;
 #SBATCH --mail-type=ALL&lt;br /&gt;
 &lt;br /&gt;
 srun ./mpi_test&lt;br /&gt;
A continuacion se explica línea por líneael script.&lt;br /&gt;
&lt;br /&gt;
Como empieza un shell script en Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre del Job:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -J example_mpi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre la particion donde se desea ejecutar el trabajo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -p general&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Número de tareas. Debe de ser un número múltiplo del número de CPUs máximo que tenga un node de la partición donde se lanza:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -n 264&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Con esto se fuerza a que se lancen 44 tareas MPI en cada uno de los nodos, ocupando de este modo nodos completos. En este caso 6 nodos completos:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --ntasks-per-node=44&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de salida:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -o example_%j.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de error:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -e example_%j.err&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Correo para notificaciones:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-user=user@example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Envía correo en todos los casos:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Programa para ejecutar:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
srun ./mpi_test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nota&#039;&#039;&#039;: no se carga específicamente el módulo &amp;quot;mpi&amp;quot; ya que se carga siempre por defecto.&lt;br /&gt;
&lt;br /&gt;
Para enviarlo al clúster debe ejecutar el comando: &#039;&#039;sbatch script.sh&#039;&#039;. El ejemplo anterior ejecutará una tarea OpenMPI con 264 procesos reservando 264 cores para ello.&lt;br /&gt;
&lt;br /&gt;
=== Trabajos multiproceso OpenMP ===&lt;br /&gt;
Los trabajos paralelos diseñados para ejecutarse en un sistema multi-core (shared-memory) suelen ser &amp;quot;multi-threaded&amp;quot;. La programación de un job de este tipo requiere especificar el número de núcleos que se utilizan para acomodar los subprocesos.&lt;br /&gt;
&lt;br /&gt;
OpenMP es el conjunto común de variables de compilación para facilitar el desarrollo de programas multi-threaded. Un script típico de SLURM para un programa de este tipo se ve así:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 #SBATCH -J OMPtest&lt;br /&gt;
 #SBATCH -p general&lt;br /&gt;
 #SBATCH -n 1&lt;br /&gt;
 #SBATCH -c 44&lt;br /&gt;
 #SBATCH --ntasks-per-node=44&lt;br /&gt;
 #SBATCH --mem-per-cpu=1024&lt;br /&gt;
 #SBATCH -o example_%j.out&lt;br /&gt;
 #SBATCH -e example_%j.err&lt;br /&gt;
 #SBATCH --mail-user=user@example.com&lt;br /&gt;
 #SBATCH --mail-type=ALL&lt;br /&gt;
&lt;br /&gt;
 OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK time ./omp-program&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Como debe comenzar un script en Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre del Job:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -J OMPtest&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre la particion donde desea ejecutar el Job:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -p general&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Número de trabajos:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Número de tareas:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -c 44&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Con esto se fuerza a que se agrupen las 44 tareas en un nodo (en OpenMP no hay comunicación entre nodos, por lo que todas las tareas deben estar en el mismo nodo o no funcionaría):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --ntasks-per-node=44&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Memoria por core (MBytes):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem-per-cpu=1024&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de salida:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -o example_%j.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de error:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -e example_%j.err&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Correo para notificaciones:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-user=user@example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Enviar correo en todos los casos:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Programa para ejecutar:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK time ./omp-program &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cuando se utiliza un programa OpenMP, el número de subprocesos (y, por lo tanto, el número requerido de núcleos) se especifica a través de la variable de entorno OMP_NUM_THREADS que, por lo tanto, aparece en el script frente a la llamada al programa. Lo estamos configurando en la variable interna SLURM_CPUS_PER_TASK que se establece a través de la opción &amp;quot;-c&amp;quot; (a 44 en nuestro ejemplo, que sería el número total de cores de un nodo de la partición &amp;quot;general&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
La opción &amp;quot;-n&amp;quot; se mantiene en 1 para indicar un único trabajo principal que tiene 44 tareas. Para asegurarnos que todas las tareas se ejecutan en el mismo nodo, se añade la opción &amp;quot;--ntasks-per-node&amp;quot; con el máximo número de cores que tiene un nodo de la partición donde se está lanzando el trabajo.&lt;br /&gt;
&lt;br /&gt;
=== Ejecución de tareas en GPUs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -J ejemplo_gpus&lt;br /&gt;
#SBATCH -p v100&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
#SBATCH -o ejemplo_%j.out&lt;br /&gt;
#SBATCH -e ejemplo_%j.err&lt;br /&gt;
#SBATCH --mail-user=correo@gmail.com&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH --mem-per-cpu=4300&lt;br /&gt;
#SBATCH --gres=gpu:1&lt;br /&gt;
&lt;br /&gt;
./programa&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Inicio de un bash script en Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre del trabajo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -J ejemplo_gpus&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre la partición donde se ejecuta el trabajo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --partition=v100&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Número de tareas:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de salida:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -o ejemplo_%j.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de error:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -e ejemplo_%j.err&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Correo para notificaciones:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-user=user@example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Enviar correo en todos los casos:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Memoria por CPU (MB):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem-per-cpu=4365&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cantidad utilizada de GPUs. El parámetro gpu:1 indica la cantidad de tarjetas a utilizar (cada nodo tiene 2 GPUs):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --gres=gpu:1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Programa para ejecutar:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./programa&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Job Arrays ===&lt;br /&gt;
Cuando se ejecutan cientos o miles de simulaciones que utilizan la misma cantidad de recursos, puede ser una ventaja ejecutar estas simulaciones como un &amp;quot;job array&amp;quot;. Los job array le permiten enviar miles de dichos trabajos (llamados &amp;quot;job steps&amp;quot;) con un solo script. A cada simulación se le asignará un valor único para la variable de entorno SLURM_ARRAY_TASK_ID. Puede usar esta variable para leer parámetros para pasos individuales de una línea dada de un archivo.&lt;br /&gt;
&lt;br /&gt;
=== Caso de uso de un Script Job Array (Gaussian) ===&lt;br /&gt;
Tenemos usuarios que actualmente envían varias simulaciones al clúster que son similares en cuanto al uso de recursos, pero, la diferencia es que solo cambia la entrada que le entregan al programa. Para esta situación, recomendamos hacer uso de un script Job Array.&lt;br /&gt;
&lt;br /&gt;
En este ejemplo crearemos un script job array para el software Gaussian, el cual, realizará 63 simulaciones, cada una de estas utilizará 8 cores y podrá alcanzar un uso máximo de 8 Gb de memoria ram. Para este caso utilizaremos la partición slims donde cada nodo tiene 46 Gb de memoria ram y 20 cores.&lt;br /&gt;
&lt;br /&gt;
Script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# ----------------SLURM Parameters----------------&lt;br /&gt;
#SBATCH -J prueba&lt;br /&gt;
#SBATCH -p slims&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
#SBATCH -c 8&lt;br /&gt;
#SBATCH --mem-per-cpu=1000&lt;br /&gt;
#SBATCH --mail-user=prueba@nlhpc.cl&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH --array=1-63&lt;br /&gt;
#SBATCH -o prueba_%A_%a.out&lt;br /&gt;
#SBATCH -e prueba_%A_%a.err&lt;br /&gt;
#-----------------Toolchain---------------------------&lt;br /&gt;
ml purge&lt;br /&gt;
ml intel/2019b&lt;br /&gt;
# ----------------Módulos-----------------------------&lt;br /&gt;
ml g16/B.01&lt;br /&gt;
# ----------------Comandos--------------------------&lt;br /&gt;
file=$(ls Child_10_*.com | sed -n ${SLURM_ARRAY_TASK_ID}p)&lt;br /&gt;
srun g16 $file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
Descripción de comandos utilizados en script:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Inicio de un bash script en Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre de la simulación:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -J prueba&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre la partición donde se ejecuta la simulación:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -p slims&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Número de tareas (1 tarea va a ejecutar 63 simulaciones):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Core’s por tareas (cada tarea utilizará un máximo 8 cores):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -c 8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Memoria ram por cpu (cada tarea utilizará un máximo 8 Gb de ram):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH –mem-per-cpu=1000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Correo para activar el envío de notificaciones:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-user=prueba@nlhpc.cl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Permitir envío de notificaciones:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se generan 63 simulaciones diferentes:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --array=1-63&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de salida: (ejemplo: prueba_18455017_1.out)&lt;br /&gt;
&lt;br /&gt;
* %A corresponde al Job ID de nuestra tarea que le asignará Slurm → 18455017.&lt;br /&gt;
* %a corresponde a la simulación X de nuestra tarea que le asignará Slurm → 1.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -o prueba_%A_%a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de errores: (ejemplo: prueba_18455017_1.err)&lt;br /&gt;
&lt;br /&gt;
* %A corresponde al Job ID de nuestra tarea que le asignará Slurm → 18455017.&lt;br /&gt;
* %a corresponde a la simulación X de nuestra tarea que le asignará Slurm → 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -e prueba_%A_%a.err&lt;br /&gt;
Toolchain: en este apartado, limpiaremos nuestro entorno de software no deseados y luego escogemos la herramienta informática con la cual está compilado el software Gaussian (nosotros utilizamos el compilador Intel/2019b).&lt;br /&gt;
&lt;br /&gt;
#-----------------Toolchain---------------------------&lt;br /&gt;
ml purge&lt;br /&gt;
ml intel/2019b&lt;br /&gt;
Módulos: cargamos el software Gaussian versión 16/B.0.&lt;br /&gt;
&lt;br /&gt;
# ----------------Módulos-----------------------------&lt;br /&gt;
ml g16/B.01&lt;br /&gt;
Comandos: aquí definimos los comandos a ejecutar.&lt;br /&gt;
&lt;br /&gt;
# ----------------Comandos--------------------------&lt;br /&gt;
file=$(ls Child_10_*.com | sed -n ${SLURM_ARRAY_TASK_ID}p)&lt;br /&gt;
srun g16 $file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
file= variable que va a listar los archivos de entrada que comiencen por Child_10_ y terminen en .com&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Child.png|no]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sed -n ${SLURM_ARRAY_TASK_ID}p) ← Sed imprimirá las líneas de cada archivo de entrada y la variable $SLURM_ARRAY_TASK_ID asumirá estas entradas como matriz de simulación en nuestro job array, en este ejemplo tenemos 63 archivos de entrada.&lt;br /&gt;
&lt;br /&gt;
Para más detalles sobre los archivos stdin, stdout y stderr de una simulación % A será reemplazado por el valor de SLURM_ARRAY_JOB_ID que es el Job ID de nuestra tarea y %a será reemplazado por el valor de SLURM_ARRAY_TASK_ID que corresponde a la simulación X de nuestra tarea.&lt;br /&gt;
&lt;br /&gt;
Srun g16 $file: ejecutará el comando gaussian g16 interpretando la variable $file en los nodos de cómputo asignados.&lt;br /&gt;
&lt;br /&gt;
Enviar el script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[prueba@leftraru1 ~]$ sbatch prueba.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ejecución de una tarea que ocupa mucha RAM por CPU ===&lt;br /&gt;
Debemos tener en cuenta que la RAM que SLURM reserva por defecto son 1000 MB. Un típico error de cancelación de tarea por falta de memoria es el siguiente:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/tmp/slurmd/job136839939/slurm_script: line 15: 23547 Killed                  ./programa.sh&lt;br /&gt;
slurmstepd: error: Detected 1 oom-kill event(s) in step 136839939.batch cgroup. Some of your processes &lt;br /&gt;
may have been killed by the cgroup out-of-memory handler.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Si su tarea ocupa más de la memoria por defecto, puede utilizar el siguiente parámetro:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem-per-cpu=2300 #Máxima RAM por CPU&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Esto hará que SLURM reserve más RAM por CPU para sus tareas.&lt;br /&gt;
&lt;br /&gt;
Tenga en cuenta que nuestros nodos tienen 46 GB de memoria RAM (Partición slims), 187 GB (Partición general) y 765 GB (Partición largemem) por nodo. [https://wiki.nlhpc.cl/Hardware_Disponible Más información].&lt;br /&gt;
&lt;br /&gt;
Otra forma de reservar memoria es utilizando el siguiente parámetro:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem=2300&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
En este caso SLURM realizará una reserva de memoria de 2300 MB pero por la totalidad del trabajo.&lt;br /&gt;
&lt;br /&gt;
Los parámetros anteriores al igual que el número de CPUs que se van a usar, hay que afinarlos lo mejor posible. Para ello lo que se puede hacer es hacer pruebas en los nodos logins, sin lanzar en las colas, y así estudiar el uso de RAM y CPU por parte de sus procesos.&lt;br /&gt;
&lt;br /&gt;
=== Ejecución de una tarea con Dependencias ===&lt;br /&gt;
Las dependencias de trabajos se utilizan para aplazar el inicio de un trabajo hasta que se satisfagan las dependencias especificadas. Se especifican con la opción --dependency en el siguiente formato:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch --dependency=&amp;lt;type:job_id[:job_id][,type:job_id[:job_id]]&amp;gt; ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Los tipos de dependencias son las siguientes:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;after&#039;&#039;&#039;:jobid[:jobid...] - el trabajo puede empezar después de que los trabajos especificados comiencen&lt;br /&gt;
* &#039;&#039;&#039;afterany&#039;&#039;&#039;:jobid[:jobid...] - el trabajo puede empezar después de que los trabajos especificados terminen&lt;br /&gt;
* &#039;&#039;&#039;afternotok&#039;&#039;&#039;:jobid[:jobid...] - el trabajo puede empezar después que los trabajos especificados terminan fallidamente&lt;br /&gt;
* &#039;&#039;&#039;afterok&#039;&#039;&#039;:jobid[:jobid...] - el trabajo puede empezar después que los trabajos especificados terminan exitósamente&lt;br /&gt;
&lt;br /&gt;
La manera más simple de usar una dependencia del tipo afterok:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[prueba@leftraru1 ~]$ sbatch job1.sh&lt;br /&gt;
Submitted batch job 21363626&lt;br /&gt;
[prueba@leftraru1 ~]$ sbatch --dependency=afterok:21363626 job2.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora cuando job1.sh termine correctamente, el job2.sh entrará en ejecución. Si job1.sh termina fallidamente, job2.sh no entrará en ejecución nunca pero sí quedará en cola (debe cancelarse manualmente el trabajo).&lt;br /&gt;
&lt;br /&gt;
== Prioridad de tarea ==&lt;br /&gt;
Cómo ver la prioridad del trabajo. Los factores que determinan la prioridad del trabajo, incluyendo la fórmula y pesos.&lt;br /&gt;
&lt;br /&gt;
=== Factores que determinan prioridad de tarea ===&lt;br /&gt;
&amp;lt;table class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 60%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Comando SLURM&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Descripción&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Edad&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;la cantidad de tiempo que el trabajo ha estado esperando en la cola.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Tamaño de la tarea&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;número de nodos solicitados por el trabajo.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Partición&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;prioridad para una partición determinada.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Prioridad Baja&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Mientras más tareas se ejecuten en el cluster, menor será la prioridad.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Prioridad Alta&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Mientras menos tareas se ejecuten en el clúster, más alta es la prioridad.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Prioridad de tarea ==&lt;br /&gt;
Cómo ver la prioridad del trabajo. Los factores que determinan la prioridad del trabajo, incluyendo la fórmula y pesos.&lt;br /&gt;
&lt;br /&gt;
=== Factores que determinan prioridad de tarea ===&lt;br /&gt;
* Edad - la cantidad de tiempo que el trabajo ha estado esperando en la cola&lt;br /&gt;
* Tamaño Oficio - número de nodos solicitados por el trabajo&lt;br /&gt;
* Partición - prioridad para una partición determinada&lt;br /&gt;
* Contribución de prioridades basada en los recursos informáticos utilizados por los miembros de un grupo de investigación en los últimos 30 días - Fairshare.&lt;br /&gt;
* Mientras más tareas se ejecuten en el cluster, menor será la prioridad.&lt;br /&gt;
* Mientras menos tareas se ejecuten en el clúster, más alta es la prioridad.&lt;br /&gt;
Fórmula Prioridad de tarea&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Job_priority =&lt;br /&gt;
  (PriorityWeightAge) * (age_factor) +&lt;br /&gt;
  (PriorityWeightFairshare) * (fair-share_factor) +&lt;br /&gt;
  (PriorityWeightJobSize) * (job_size_factor) +&lt;br /&gt;
  (PriorityWeightPartition) * (partition_factor) +&lt;br /&gt;
  (PriorityWeightQOS) * (QOS_factor)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Visualización de sus Tareas ==&lt;br /&gt;
Si Ud. necesita visualizar información acerca de sus tareas de forma interactiva, puede utilizar el comando smap:&lt;br /&gt;
&lt;br /&gt;
smap -i 3&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Smap.png|no|700px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De esta forma, tendrá una actualización cada 3 segundos de sus tareas en ejecución incluyendo los nodos en los cuales se encuentran ejecutándose.&lt;br /&gt;
&lt;br /&gt;
== Bibliografía ==&lt;br /&gt;
[http://slurm.schedmd.com/documentation.html Manual Oficial de Slurm]&lt;br /&gt;
&lt;br /&gt;
[https://slurm.schedmd.com/scrontab.html Documentación scrontab]&lt;/div&gt;</summary>
		<author><name>Jmorales</name></author>
	</entry>
	<entry>
		<id>https://wiki.nlhpc.cl/index.php?title=SISTEMA_GESTOR_DE_RECURSOS&amp;diff=764</id>
		<title>SISTEMA GESTOR DE RECURSOS</title>
		<link rel="alternate" type="text/html" href="https://wiki.nlhpc.cl/index.php?title=SISTEMA_GESTOR_DE_RECURSOS&amp;diff=764"/>
		<updated>2024-04-29T21:51:57Z</updated>

		<summary type="html">&lt;p&gt;Jmorales: /* Particiones SLURM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== SLURM Workload Manager ==&lt;br /&gt;
Es un sistema de programación de trabajos y gestión de clústeres de código abierto, tolerante a fallas y altamente escalable para clústeres Linux grandes y pequeños.&lt;br /&gt;
&lt;br /&gt;
Como administrador de carga de trabajo de clúster, Slurm tiene tres funciones clave. Primero, asigna acceso exclusivo y / o no exclusivo a los recursos (nodos de cómputo) a los usuarios durante un período de tiempo para que puedan realizar el trabajo. En segundo lugar, proporciona un marco para iniciar, ejecutar y monitorear el trabajo (normalmente un trabajo paralelo) en el conjunto de nodos asignados. Finalmente, arbitra la contención de recursos mediante la gestión de una cola de trabajo pendiente.&lt;br /&gt;
&lt;br /&gt;
SLURM es el gestor de colas instalado en muchos de los súper computadores del [https://www.top500.org/ TOP500], y también en el clúster del NLHPC. Si Ud. quiere lanzar tareas dentro de Leftaru, debe hacerlo a través de Slurm.&lt;br /&gt;
&lt;br /&gt;
== Conceptos clave ==&lt;br /&gt;
SLURM gestiona trabajos de usuario que tienen las siguientes características clave:&lt;br /&gt;
&lt;br /&gt;
* Conjunto de recursos solicitados:&lt;br /&gt;
** Número de recursos informáticos: nodos (incluidas todas sus CPUs y núcleos) o CPUs (incluidos todos sus núcleos) o solo núcleos&lt;br /&gt;
** Cantidad de memoria: por nodo o por CPU (lógica)&lt;br /&gt;
** Tiempo necesario para que las tareas del usuario completen su trabajo&lt;br /&gt;
* Una partición de nodo solicitada (cola de trabajos)&lt;br /&gt;
* Un nivel de calidad de servicio (QoS) solicitado que otorga a los usuarios accesos específicos&lt;br /&gt;
* Una cuenta solicitada con recursos limitados&lt;br /&gt;
&lt;br /&gt;
De manera predeterminada, los usuarios envían trabajos a una partición particular (marcada como tal para todos los usuarios) y bajo una cuenta particular (preestablecida por usuario).&lt;br /&gt;
&lt;br /&gt;
== Particiones SLURM ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 60%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nombre Particion&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nodos&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;CPUs&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;RAM&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Descripción&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;main&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;27&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;256&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;768GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;general&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;48&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;44&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;187GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;largemem&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;9&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;44&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;765GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;v100&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;44&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;187GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;4 GPUs Nvidia Tesla V100.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;mi100&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;128&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;502GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2 GPUs AMD Instinct MI100.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;debug&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;4&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;20&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;59GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Destinados a pruebas de máximo 30 minutos.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Introducción a los comandos slurm ==&lt;br /&gt;
&amp;lt;table class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 60%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Comando SLURM&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Descripción&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;srun&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ejecutar un comando en nodos de cómputo asignados.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;sbatch&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;presentar un script de trabajo&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;squeue&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Mostrar estado de los trabajos en la cola.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;scancel&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;eliminar un trabajo.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;sinfo&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Muestra el estado de los nodos de cómputo.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
Estos son los comandos básicos utilizados para realizar la mayoría de las operaciones básicas con SLURM.&lt;br /&gt;
&lt;br /&gt;
=== Estado de nodos ===&lt;br /&gt;
Para consultar el uso de nuestra infraestructura y qué particiones están más libres, le recomendamos el comando sinfo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# sinfo&lt;br /&gt;
PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST&lt;br /&gt;
all        up    infinite    16     mix   cn[001,005-006,010,034-035,037,041,045,050,057,108,121],sn[012,016,037]&lt;br /&gt;
all        up    infinite    95     alloc cn[011-033,038-044,046-049,071-120],cnf[001-004],sn[001-011,038-041,043-044]&lt;br /&gt;
all        up    infinite    33     idle  fn[001-009],gn[001-002],sn[018-035,045-048]&lt;br /&gt;
slims*     up    infinite    18     mix   cn[001,003,005-006,010,034-035,043,045,050,057,070,079,085,095,098,108,121]&lt;br /&gt;
slims*     up    infinite    75     alloc cn[007-009,011-033,038-040,051-056,058-069,071-078,086-094,122-128],cnf[001-004]&lt;br /&gt;
debug      up    infinite    4      idle  leftraru[1-2]&lt;br /&gt;
general    up    infinite    4      mix   sn[012,016,037,042]&lt;br /&gt;
general    up    infinite    22     alloc sn[001-011,013-015,017,036,038-041,043-044]&lt;br /&gt;
general    up    infinite    22     idle  sn[018-035,045-048]&lt;br /&gt;
largemem   up    infinite    9      idle  fn[001-009]&lt;br /&gt;
v100       up    infinite    2      idle  gn[001-002]&lt;br /&gt;
mi100      up    infinite    1      idle  gna001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fijándose en el texto resaltado de la salida del comando sinfo, se puede comprobar que en la partición slims hay 112 nodos que están completamente ocupados (estado alloc), 20 nodos que están parcialmente ocupados (mix) y ninguno libre (idle); por otro lado, en la partición general hay 22 nodos completamente ocupados, 4 parcialmente ocupados y 22 libres. Dado este escenario, está claro que debería de lanzar sus ejecuciones en los nodos de la partición general, por las razones anteriormente expuestas.&lt;br /&gt;
&lt;br /&gt;
Para lanzar en la partición general, debe tener en cuenta que tiene que indicar en su script que se use dicha partición en vez de, probablemente, slims. Por supuesto, en esta partición cambian las características técnicas, se pasan a tener 44 cores por nodo (en vez de 20 en slims) y una capacidad RAM de 187GB (en vez de 46GB en slims). Puede ver más información de las particiones en este link(agregar link), donde podrá revisar que con la inclusión de Guacolda hemos añadido nodos con hasta 765GB de memoria RAM y nodos con GPUs Nvidia Tesla V100 y AMD Instinct MI100 .&lt;br /&gt;
&lt;br /&gt;
Para ver los nodos disponibles y poder determinar en que partición lanzar los trabajos se recomienda utilizar el siguiente comando.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;[prueba@leftraru1 ~]$ sinfo -o &amp;quot;%10P %6D %10t %10m %c&amp;quot; -t idle| egrep &amp;quot;PARTITION|slims|general|largemem|v100&amp;quot;&lt;br /&gt;
PARTITION  NODES  STATE      MEMORY     CPUS&lt;br /&gt;
slims*      32    idle       46000       20&lt;br /&gt;
general     2     idle       187000      44&lt;br /&gt;
largemem    7     idle       765000      44&lt;br /&gt;
v100        1     idle       187000      44 &lt;br /&gt;
mi100       1     idle       515047      128 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
El comando anterior muestra que slims tiene 32 nodos libres, en este caso es recomendado lanzar en en slims para evitar que el trabajo quede en cola por falta de recursos en otros nodos.&lt;br /&gt;
&lt;br /&gt;
Otro Ejemplo, se muestra sólo una partición específica&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;[prueba@leftraru1 ~]$ sinfo -p slims&lt;br /&gt;
PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST&lt;br /&gt;
slims*     up    infinite    24    mix     cn[015,033,036-038,041-050,053-054,075-080,104]&lt;br /&gt;
slims*     up    infinite    76    alloc   cn[001-009,019-032,039-040,051-090,093-094,097-099],cnf[001-004]&lt;br /&gt;
slims*     up    infinite    32    idle    cn[010-014,016-018,034-035,056-058,073-074,091-100,120-122,125-127]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Comprobación del estado de tareas ===&lt;br /&gt;
squeue - Muestra el estatus de los trabajos&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;squeue                  # tus trabajos&lt;br /&gt;
squeue -u &amp;amp;lt;username&amp;amp;gt;    # trabajos por usuario &amp;amp;lt;username&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
squeue: Comprobar estados de los trabajos&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;&amp;quot; class=&amp;quot;mw-highlight mw-content-ltr&amp;quot; dir=&amp;quot;ltr&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  JOBID        PARTITION     NAME     USER    ST       TIME  	NODES 	NODELIST(REASON)&lt;br /&gt;
13951858_1     general	     test1    test1    R   1-18:35:14      2    cn[009-010]&lt;br /&gt;
13951857_2     general       test2    test1    R   1-18:36:11      2    cn[099-100]&lt;br /&gt;
13956453       gpu           test3    test3    R   1-03:42:08      1    cn039&lt;br /&gt;
13956449       largemem      test4    test4    R   1-05:42:08      1    cn044&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puede utilizar squeue para saber el estado de una o varias de sus tareas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ squeue -o &amp;quot;%.15i %.6P %.8j %.20S %.11M %.11L %.20V %.10Q %.4C %.2D %.6m&amp;quot; -S -t,-Q&lt;br /&gt;
 JOBID   PARTIT     NAME      START_TIME          TIME      TIME_LEFT     SUBMIT_TIME       PRIORITY CPUS NO MIN_ME&lt;br /&gt;
10837561 general   TEST1   2018-06-18T18:51:01    19:00:31  2-04:59:29  2018-06-18T18:51:01  119972    1  1  1000M&lt;br /&gt;
10838562 general   TEST2   2018-06-19T11:30:47    2:20:45   2-21:39:15  2018-06-19T11:30:46  119946    1  1  1000M&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
para mas opciones puede revisar con el comando [https://slurm.schedmd.com/squeue.html man squeue] las opciones restantes.&lt;br /&gt;
&lt;br /&gt;
=== Códigos de ESTADO de los trabajos ===&lt;br /&gt;
&lt;br /&gt;
Los trabajos suelen pasar por varios estados durante su ejecución. Los estados típicos son PENDIENTE, EN EJECUCIÓN, SUSPENDIDO, FINALIZANDO y TERMINADO. A continuación se explica cada estado.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;BF&#039;&#039;&#039; BOOT_FAIL&lt;br /&gt;
    Trabajo finalizado debido a un fallo de arranque, normalmente debido a un fallo de hardware (por ejemplo, no se puede arrancar el nodo o bloque y el trabajo no se puede volver a poner en cola). &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CA&#039;&#039;&#039; CANCELADO&lt;br /&gt;
    El trabajo ha sido cancelado explícitamente por el usuario o el administrador del sistema. El trabajo puede haberse iniciado o no. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CD&#039;&#039;&#039; TERMINADO&lt;br /&gt;
    El trabajo ha terminado todos los procesos en todos los nodos con un código de salida de cero. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CF&#039;&#039;&#039; CONFIGURANDO&lt;br /&gt;
    Al trabajo se le han asignado recursos, pero están esperando a que estén listos para su uso (por ejemplo, arrancando). &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CG&#039;&#039;&#039; COMPLETANDO&lt;br /&gt;
    El trabajo está en proceso de finalización. Algunos procesos en algunos nodos pueden estar aún activos. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DL&#039;&#039;&#039; FECHA LÍMITE&lt;br /&gt;
    El trabajo ha finalizado en la fecha límite. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;F&#039;&#039;&#039; FALLÓ&lt;br /&gt;
    Trabajo finalizado con un código de salida distinto de cero u otra condición de fallo. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NF&#039;&#039;&#039; NODO_FAIL&lt;br /&gt;
    Trabajo finalizado debido al fallo de uno o más nodos asignados. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;OOM&#039;&#039;&#039; OUT_OF_MEMORY&lt;br /&gt;
    El trabajo ha experimentado un error de memoria insuficiente. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PD&#039;&#039;&#039; PENDIENTE&lt;br /&gt;
    El trabajo está pendiente de asignación de recursos. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PR&#039;&#039;&#039; PREEMPTED&lt;br /&gt;
    El trabajo ha finalizado debido a una espera. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;R&#039;&#039;&#039; EN MARCHA&lt;br /&gt;
    El trabajo tiene actualmente una asignación. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RD&#039;&#039;&#039; RESV_DEL_HOLD&lt;br /&gt;
    El trabajo se está reteniendo después de que se eliminara la reserva solicitada. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RF&#039;&#039;&#039; REQUEUE_FED&lt;br /&gt;
    El trabajo está siendo solicitado por una federación. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RH&#039;&#039;&#039; REQUEUE_HOLD&lt;br /&gt;
    Se está volviendo a poner en cola un trabajo retenido. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RQ&#039;&#039;&#039; REQUEUED&lt;br /&gt;
    Se está poniendo en cola un trabajo que se está completando. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RS&#039;&#039;&#039; CAMBIO DE TAMAÑO&lt;br /&gt;
    El trabajo está a punto de cambiar de tamaño. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RV&#039;&#039;&#039; REVOCADO&lt;br /&gt;
    El trabajo se ha retirado del clúster debido a que otro clúster ha iniciado el trabajo. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SI&#039;&#039;&#039; SEÑALANDO&lt;br /&gt;
    El trabajo está siendo señalizado. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SE&#039;&#039;&#039; SPECIAL_EXIT&lt;br /&gt;
    El trabajo se ha puesto en cola en un estado especial. Este estado puede ser establecido por los usuarios, normalmente en EpilogSlurmctld, si el trabajo ha terminado con un valor de salida particular. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SO&#039;&#039;&#039; STAGE_OUT&lt;br /&gt;
    El trabajo está preparando los archivos. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ST&#039;&#039;&#039; PARADO&lt;br /&gt;
    El trabajo tiene una asignación, pero la ejecución se ha detenido con la señal SIGSTOP. Los CPUS han sido retenidos por este trabajo. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;S&#039;&#039;&#039; SUSPENDIDO&lt;br /&gt;
    El trabajo tiene una asignación, pero se ha suspendido la ejecución y se han liberado CPUs para otros trabajos. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TO&#039;&#039;&#039; TIMEOUT&lt;br /&gt;
    El trabajo ha finalizado al alcanzar su límite de tiempo.&lt;br /&gt;
&lt;br /&gt;
=== Cancelar un trabajo ===&lt;br /&gt;
Con scancel se puede cancelar un trabajo en ejecución&lt;br /&gt;
&amp;lt;pre&amp;gt;scancel &amp;amp;lt;jobID&amp;amp;gt;         # Matar proceso &amp;amp;lt;jobID&amp;amp;gt;. (puede obtener el ID del job con &amp;quot;squeue&amp;quot;)&lt;br /&gt;
scancel -u &amp;amp;lt;username&amp;amp;gt;   # Matar proceso por usuario &amp;amp;lt;username&amp;amp;gt;. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;[prueba@leftraru1 ~]$ squeue -u prueba&lt;br /&gt;
 JOBID  PARTITION    NAME     USER    ST   TIME  NODES  NODELIST(REASON)&lt;br /&gt;
 45594    slims      TEST    prueba   R    0:59   20    cn[001-020]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;[prueba@leftraru1 ~]$ scancel 45594&lt;br /&gt;
[prueba@leftraru1 ~]$ squeue -u prueba&lt;br /&gt;
JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)&lt;br /&gt;
[prueba@leftraru1 ~]$&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ver estado de trabajos ===&lt;br /&gt;
Para revisar el detalle de las opciones de un trabajo: scontrol show job&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ scontrol show job 10837561&lt;br /&gt;
JobId=10837561 JobName=TEST1&lt;br /&gt;
   UserId=usuario(1000) GroupId=group(1000) MCS_label=N/A&lt;br /&gt;
   Priority=1100 Nice=0 Account=account QOS=120&lt;br /&gt;
   JobState=RUNNING Reason=None Dependency=(null)&lt;br /&gt;
   Requeue=0 Restarts=0 BatchFlag=1 Reboot=0 ExitCode=0:0&lt;br /&gt;
   DerivedExitCode=0:0&lt;br /&gt;
   RunTime=19:03:08 TimeLimit=3-00:00:00 TimeMin=N/A&lt;br /&gt;
   SubmitTime=2018-06-18T18:51:01 EligibleTime=2018-06-18T18:51:01&lt;br /&gt;
   StartTime=2018-06-18T18:51:01 EndTime=2018-06-21T18:51:01 Deadline=N/A&lt;br /&gt;
   PreemptTime=None SuspendTime=None SecsPreSuspend=0&lt;br /&gt;
   Partition=slims AllocNode:Sid=leftraru2:5471&lt;br /&gt;
   ReqNodeList=(null) ExcNodeList=(null)&lt;br /&gt;
   NodeList=cn021&lt;br /&gt;
   BatchHost=cn021&lt;br /&gt;
   NumNodes=1 NumCPUs=1 NumTasks=1 CPUs/Task=1 ReqB:S:C:T=0:0:*:*&lt;br /&gt;
   TRES=cpu=1,mem=1000M,node=1&lt;br /&gt;
   Socks/Node=* NtasksPerN:B:S:C=1:0:*:* CoreSpec=*&lt;br /&gt;
     Nodes=cn021 CPU_IDs=1 Mem=1000 GRES_IDX=&lt;br /&gt;
   MinCPUsNode=1 MinMemoryCPU=1000M MinTmpDiskNode=0&lt;br /&gt;
   Features=(null) DelayBoot=00:00:00&lt;br /&gt;
   Gres=(null) Reservation=(null)&lt;br /&gt;
   OverSubscribe=OK Contiguous=0 Licenses=matlab Network=(null)&lt;br /&gt;
   Command=/home/usuario/script.sh&lt;br /&gt;
   WorkDir=/home/usuario/&lt;br /&gt;
   StdErr=/home/usuario/10837561_%x.err&lt;br /&gt;
   StdIn=/dev/null&lt;br /&gt;
   StdOut=/home/usuario/10837561_%x.out&lt;br /&gt;
   Power=&lt;br /&gt;
   BatchScript=&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para ver el script asociado a un trabajo: scontrol write batch_script &amp;lt;job_id&amp;gt; -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ scontrol write batch_script 10837561 -&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -J nombre_del_trabajo&lt;br /&gt;
#SBATCH -p slims&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
#SBATCH --ntasks-per-node=1&lt;br /&gt;
#SBATCH --mail-user=usaurio@correo.cl&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH -o nombre_del_trabajo%j_%x.out&lt;br /&gt;
#SBATCH -e nombre_del_trabajo%j_%x.err&lt;br /&gt;
#SBATCH --license=matlab &lt;br /&gt;
 &lt;br /&gt;
ml MATLAB/2017a&lt;br /&gt;
&lt;br /&gt;
matlab -nodisplay -nosplash -nodesktop &amp;lt; programa.m&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ejecutando trabajos ==&lt;br /&gt;
Actualmente contamos con 2 metodos de enviar trabajos bajo SLURM: &#039;&#039;&#039;sbatch&#039;&#039;&#039; and &#039;&#039;&#039;srun&#039;&#039;&#039;. A veces puede ser ventajoso ejecutar un solo comando en el clúster como prueba o realizar rápidamente una operación con recursos adicionales. &#039;srun&#039; permite a los usuarios hacer esto, y comparte las mismas variables que &#039;sbatch&#039; . STDOUT y STDERR para un trabajo &#039;srun&#039; serán redirigidos a la pantalla del usuario. Ctrl-C cancelará un trabajo srun. &#039;&#039;&#039;sbatch&#039;&#039;&#039; enviará un script de trabajo para que lo ejecute el clúster. Los scripts de trabajo bajo SLURM son simplemente scripts de shell (* .sh) con un conjunto de solicitudes de recursos en la parte superior del script.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Uso básico de srun:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
srun &amp;lt;algúnComando&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de salida (ejecutando el comando &amp;quot;hostname&amp;quot; para saber en que nodo se está ejecutando):&lt;br /&gt;
&amp;lt;pre&amp;gt; $ srun hostname&lt;br /&gt;
  cn003&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para enviar un script de trabajo a SLURM:&lt;br /&gt;
&amp;lt;pre&amp;gt;sbatch nombreScript.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example output:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sbatch test-job.sh&lt;br /&gt;
Submitted batch job 1169&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Variables Slurm ===&lt;br /&gt;
Las variables en esta sección son obligatorias, y SLURM las determina para determinar dónde y cuándo se ejecutarán sus trabajos. Si no asigna un valor para estos, el planificador asignará a sus trabajos el valor predeterminado. Si no solicita específicamente recursos para un trabajo, se le asignará un conjunto de recursos predeterminados. Para obtener una lista de todas las variables disponibles, consulte la documentación de SLURM en http://slurm.schedmd.com/sbatch.html. Las variables de este artículo estaban cubiertas porque eran las más relevantes para los casos de uso típicos.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Comando SLURM&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Descripción&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;--mem-per-cpu=&amp;amp;lt;megabytes&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Memoria requerida para el trabajo por CPU (en MegaBytes). El valor predeterminado es 1024 MB.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-p &amp;amp;lt;partition&amp;amp;gt;, --partition=&amp;amp;lt;partition&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Enviar un trabajo a una partición específica.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-n, --ntasks=&amp;amp;lt;cantidad de tareas&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Número de tareas que serán asignadas para el trabajo.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-c &amp;amp;lt;cpus&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Esta es la cantidad de CPU que necesita su trabajo. Tenga en cuenta que SLURM es relativamente generoso con las CPU, y el valor especificado aquí es el número &amp;quot;mínimo&amp;quot; de CPU que se asignará a su trabajo. Si hay CPU adicionales disponibles en un nodo más allá de lo solicitado, su trabajo recibirá esas CPU hasta que otros trabajos las necesiten. El valor predeterminado es 1 CPU. Intentar usar más CPU de las que se le asignaron dará como resultado que sus procesos adicionales se turnen en la misma CPU (ralentizando su trabajo).&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-J &amp;amp;lt;name&amp;amp;gt;, --jobname=&amp;amp;lt;name&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Especifica un nombre a tu trabajo.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;--mail-type=BEGIN,END,FAIL,ALL&amp;lt;b&amp;gt; and &amp;lt;/b&amp;gt;--mail-user=&amp;amp;lt;emailAddress&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Enviar por correo electrónico cuando su trabajo comienza / termina / falla. Puede especificar varios valores para esto (separados por comas) si es necesario.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-o &amp;amp;lt;STDOUT_log&amp;amp;gt;, --output=&amp;amp;lt;STDOUT_log&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Redirija la salida a los archivos de registro que especifique. Por defecto, ambos, STDOUT and STDERR son enviados a este archivo. Puedes especificar %j como parte del nombre de archivo de registro para indicar la ID del trabajo (como ejemplo, &amp;quot;#SBATCH -o ouptut_%j.o&amp;quot; redirigiría la salida a &amp;quot;output_123456.o&amp;quot;).&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-e &amp;amp;lt;STDERR_log&amp;amp;gt;, --error=&amp;amp;lt;STDERR_log&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Redireccionar STDERR a un archivo separado. Funciona exactamente igual que &amp;quot;-o&amp;quot;.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-t &amp;amp;lt;days-hours:minutes:seconds&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Walltime para tu trabajo. La duración del Walltime es el tiempo que espera que su trabajo se ejecute.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-a, --array=&amp;amp;lt;índices&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Envía una lista (arreglo) de trabajos identicos. Solo aplica para sbatch.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los scripts de trabajo especifican los recursos solicitados y otras consideraciones especiales con comentarios especiales &amp;quot;#SBATCH&amp;quot; en la parte superior de un script de trabajo. Aunque muchas de estas opciones son opcionales, las varibles que se ocupan de solicitudes de recursos (CPU, memoria y tiempo) son obligatorias. Todas las variables deben agregarse a sus scripts de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#SBATCH &amp;lt;variable&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Para especificar un nombre al job, por ejemplo, debe agregar lo siguiente a su secuencia de comandos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#SBATCH --job-name=nombreDeTrabajo&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Enviar un script===&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 #SBATCH -J example&lt;br /&gt;
 #SBATCH -p general&lt;br /&gt;
 #SBATCH -n 1&lt;br /&gt;
 #SBATCH --output=example_%j.out&lt;br /&gt;
 #SBATCH --error=example_%j.err&lt;br /&gt;
 #SBATCH --mail-user=user@example.com&lt;br /&gt;
 #SBATCH --mail-type=ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Como debe comenzar un script en Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre del trabajo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -J example&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre la partición donde desea ejecutar el Job:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -p general&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Número de tareas:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de salida:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -o example_%j.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de error:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -e example_%j.err&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Correo para notificaciones:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-user=user@example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Enviar correo en todos casos (verificar opciones arriba):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Programar tarea (uso de scrontab) ===&lt;br /&gt;
&#039;&#039;&#039;scrontab&#039;&#039;&#039; es una implementación del clásico planificador de tareas de linux &#039;&#039;&#039;crontab&#039;&#039;&#039; donde se guarda un listado de comandos a ejecutar en un tiempo determinado por el usuario.&lt;br /&gt;
&lt;br /&gt;
Para acceder a scrontab utilice el siguiente comando:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[prueba@leftraru1 ~]$ scrontab -e&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto le permitirá editar su archivo scrontab, asignando recursos como también el momento en que desea ejecutar su tarea. La estructura base a utilizar es la siguiente:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SCRON -J mi_tarea&lt;br /&gt;
#SCRON -p slims&lt;br /&gt;
#SCRON -n 1&lt;br /&gt;
#SCRON -c 1&lt;br /&gt;
#SCRON --mem-per-cpu=2300&lt;br /&gt;
#SCRON --mail-user=foo@bar.com&lt;br /&gt;
#SCRON --mail-type=ALL&lt;br /&gt;
#SCRON -o mi_tarea_%j.out&lt;br /&gt;
#SCRON -e mi_tarea_%j.err&lt;br /&gt;
# Example of job definition:&lt;br /&gt;
# .---------------- minute (0 - 59)&lt;br /&gt;
# |  .------------- hour (0 - 23)&lt;br /&gt;
# |  |  .---------- day of month (1 - 31)&lt;br /&gt;
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...&lt;br /&gt;
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat&lt;br /&gt;
# |  |  |  |  |&lt;br /&gt;
# *  *  *  *  *     command to be executed&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;minute&#039;&#039;&#039; - Corresponde al minuto en que se va a ejecutar el script, valor de 0 a 59.&lt;br /&gt;
* &#039;&#039;&#039;hour&#039;&#039;&#039; - Hora de ejecución, formato 24 horas, valor de 0 a 23, donde 0 son las 12:00 AM.&lt;br /&gt;
* &#039;&#039;&#039;day of month&#039;&#039;&#039; - Día del mes, la tarea se puede ejecutar cada x día, valor de 1 a 31.&lt;br /&gt;
* &#039;&#039;&#039;month&#039;&#039;&#039; - La tarea se puede ejecutar cada x mes, valor de 1 a 12.&lt;br /&gt;
* &#039;&#039;&#039;day of week&#039;&#039;&#039; - Día de la semana, valor de 0 a 6, donde 0 es Domingo.&lt;br /&gt;
* &#039;&#039;&#039;command to be executed&#039;&#039;&#039; - Script a ejecutar por el usuario.&lt;br /&gt;
 &lt;br /&gt;
Ejemplo envío de trabajo slurm:&lt;br /&gt;
&lt;br /&gt;
Para la asignación de recursos, utilizaremos la directriz &#039;&#039;&#039;#SCRON&#039;&#039;&#039;, que utiliza los mismos parámetros usados por &#039;&#039;&#039;#SBATCH&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Luego de asignar los recursos debemos especificar el tiempo, en este caso la tarea será ejecutada todos los días cada 20 minutos, luego debemos indicar el script enviado por el usuario y guardamos los cambios en el archivo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
*/20 * * * * /home/prueba/ejemplo/script.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es importante destacar que el script a lanzar &#039;&#039;&#039;/home/prueba/ejemplo/script.sh&#039;&#039;&#039; debe tener permisos de ejecución.&lt;br /&gt;
&lt;br /&gt;
Para revisar el listado de tareas existentes en nuestro scrontab, ejecutamos el comando:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[prueba@leftraru1 ~]$ scrontab -l&lt;br /&gt;
*/20 * * * * /home/prueba/ejemplo/script.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para borrar el contenido de nuestro scrontab:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[prueba@leftraru1 ~]$ scrontab -r&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Información a considerar:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Generar archivos de salida correctamente&lt;br /&gt;
** Para que el archivo error y out de tu script se generen en el directorio solicitado, ejemplo, /home/prueba/ejemplo/ en tu script debe estar presente el comando cd “/home/prueba/ejemplo”, esto hará que scrontab se posicione dentro del directorio de salida.&lt;br /&gt;
* Es distinto el tiempo de programar el envío de una tarea (scrontab) a que una tarea inicie en el clúster (running), ya que esto dependerá de los recursos libres que existan en ese momento en el clúster.&lt;br /&gt;
* Para revisar las tareas programadas debe ejecutar en cualquier nodo login el comando &#039;&#039;&#039;scrontab -l&#039;&#039;&#039; o revisar con el comando &#039;&#039;&#039;squeue&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[prueba@leftraru1 ~]$ squeue&lt;br /&gt;
24293471     slims /home/eg  prueba PD       0:00      1 (BeginTime)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Checkpointing ==&lt;br /&gt;
Es la acción de guardar el estado de un proceso en ejecución en un archivo de imagen de punto de control. Este proceso se puede reiniciar más tarde desde el archivo del punto de control, continuando la ejecución desde donde se detuvo, en la misma computadora o en una diferente.&lt;br /&gt;
&lt;br /&gt;
=== ¿Por qué utilizarlo? ===&lt;br /&gt;
* Permite ejecuciones de tarea largas que superen el tiempo de ejecución permitido en el cluster (30 días)&lt;br /&gt;
* Estar preparados ante fallas del sistema que nos puedan hacer perder resultados de nuestras simulaciones&lt;br /&gt;
&lt;br /&gt;
=== Utilización ===&lt;br /&gt;
Lo primero que debemos hacer en nuestro script es cargar el módulo de Mana:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ml mana/3.0.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Este módulo provee 3 ejecutables que necesitaremos:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;mana_coordinator:&#039;&#039;&#039; Coordina los checkpoints entre los distintos procesos&lt;br /&gt;
* &#039;&#039;&#039;mana_launch:&#039;&#039;&#039; Inicia un proceso con checkpoint&lt;br /&gt;
* &#039;&#039;&#039;mana_restart:&#039;&#039;&#039; Reinicia la ejecución desde una imagen del checkpoint&lt;br /&gt;
&lt;br /&gt;
Necesitaremos 2 scripts para trabajar con checkpoints: Inicio y reinicio&lt;br /&gt;
&lt;br /&gt;
=== Script de inicio (inicio.sh) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
##---------------SLURM Parameters - NLHPC ----------------&lt;br /&gt;
#SBATCH -J Testcheckpoint&lt;br /&gt;
#SBATCH -p general&lt;br /&gt;
#SBATCH -n 44&lt;br /&gt;
#SBATCH --ntasks-per-node=44&lt;br /&gt;
#SBATCH --mem-per-cpu=4363&lt;br /&gt;
#SBATCH --mail-user=test@nlhpc.cl&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH -o Testcheckpoint_%j.out&lt;br /&gt;
#SBATCH -e Testcheckpoint_%j.err&lt;br /&gt;
&lt;br /&gt;
# ----------------Modules----------------------------&lt;br /&gt;
ml mana/3.0.0&lt;br /&gt;
# ----------------Command--------------------------&lt;br /&gt;
#Checkpointing cada 1 hora&lt;br /&gt;
mana_cooridinator -i3600&lt;br /&gt;
#Ejecutamos nuestra tarea con checkpointing&lt;br /&gt;
srun mana_launch ./ejecutable&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Script de reinicio (reinicio.sh) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
##---------------SLURM Parameters - NLHPC ----------------&lt;br /&gt;
#SBATCH -J Testcheckpoint&lt;br /&gt;
#SBATCH -p general&lt;br /&gt;
#SBATCH -n 44&lt;br /&gt;
#SBATCH --ntasks-per-node=44&lt;br /&gt;
#SBATCH --mem-per-cpu=4363&lt;br /&gt;
#SBATCH --mail-user=test@nlhpc.cl&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH -o Testcheckpoint_%j.out&lt;br /&gt;
#SBATCH -e Testcheckpoint_%j.err&lt;br /&gt;
&lt;br /&gt;
# ----------------Modules----------------------------&lt;br /&gt;
ml mana/3.0.0&lt;br /&gt;
# ----------------Command--------------------------&lt;br /&gt;
#Checkpointing cada 1 hora&lt;br /&gt;
mana_cooridinator -i3600&lt;br /&gt;
#Reiniciar nuestra tarea desde los archivos de checkpoint&lt;br /&gt;
srun mana_restart&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para correr estos scripts se puede hacer utilizando la funcionalidad de dependencias de SLURM:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[test@leftraru2 test]$ sbatch inicio.sh&lt;br /&gt;
Submitted batch job 23574685&lt;br /&gt;
[test@leftraru2 test]$ sbatch --dependency=afterok:23574685 reinicio.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Trabajos ==&lt;br /&gt;
=== Trabajos paralelos ===&lt;br /&gt;
Muchos de los trabajos que se ejecutan en un clúster de producción implicarán más de un procesador (CPU, núcleo). Dichos trabajos paralelos deben solicitar la cantidad de recursos necesarios a través de opciones adicionales. Los más comunes son:&lt;br /&gt;
&lt;br /&gt;
Para diferentes tipos de trabajos paralelos, se especificarán diferentes opciones. Los trabajos paralelos más comunes son trabajos de MPI (memoria distribuida), trabajos de subprocesos múltiples (memoria compartida) y los llamados híbridos que son una combinación de los dos. Analicemos por separado con un n ejemplo para cada uno.&lt;br /&gt;
&lt;br /&gt;
=== Ejecución de programas con MPI ===&lt;br /&gt;
MPI (interfaz de paso de mensajes) es la API de comunicación estándar para trabajos paralelos de memoria distribuida capaz de implementarse en un clúster. Para programar dicho trabajo, es necesario especificar la cantidad de nodos del clúster que se utilizarán y la cantidad de procesos (tareas) que se ejecutarán en cada nodo.&lt;br /&gt;
&lt;br /&gt;
El siguiente es un ejemplo de ejecución de un programa compilado con Open MPI:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 #SBATCH -J example_mpi&lt;br /&gt;
 #SBATCH -p general&lt;br /&gt;
 #SBATCH -n 264&lt;br /&gt;
 #SBATCH --ntasks-per-node=44&lt;br /&gt;
 #SBATCH --output=example_%j.out&lt;br /&gt;
 #SBATCH --error=example_%j.err&lt;br /&gt;
 #SBATCH --mail-user=user@example.com&lt;br /&gt;
 #SBATCH --mail-type=ALL&lt;br /&gt;
 &lt;br /&gt;
 srun ./mpi_test&lt;br /&gt;
A continuacion se explica línea por líneael script.&lt;br /&gt;
&lt;br /&gt;
Como empieza un shell script en Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre del Job:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -J example_mpi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre la particion donde se desea ejecutar el trabajo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -p general&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Número de tareas. Debe de ser un número múltiplo del número de CPUs máximo que tenga un node de la partición donde se lanza:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -n 264&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Con esto se fuerza a que se lancen 44 tareas MPI en cada uno de los nodos, ocupando de este modo nodos completos. En este caso 6 nodos completos:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --ntasks-per-node=44&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de salida:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -o example_%j.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de error:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -e example_%j.err&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Correo para notificaciones:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-user=user@example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Envía correo en todos los casos:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Programa para ejecutar:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
srun ./mpi_test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nota&#039;&#039;&#039;: no se carga específicamente el módulo &amp;quot;mpi&amp;quot; ya que se carga siempre por defecto.&lt;br /&gt;
&lt;br /&gt;
Para enviarlo al clúster debe ejecutar el comando: &#039;&#039;sbatch script.sh&#039;&#039;. El ejemplo anterior ejecutará una tarea OpenMPI con 264 procesos reservando 264 cores para ello.&lt;br /&gt;
&lt;br /&gt;
=== Trabajos multiproceso OpenMP ===&lt;br /&gt;
Los trabajos paralelos diseñados para ejecutarse en un sistema multi-core (shared-memory) suelen ser &amp;quot;multi-threaded&amp;quot;. La programación de un job de este tipo requiere especificar el número de núcleos que se utilizan para acomodar los subprocesos.&lt;br /&gt;
&lt;br /&gt;
OpenMP es el conjunto común de variables de compilación para facilitar el desarrollo de programas multi-threaded. Un script típico de SLURM para un programa de este tipo se ve así:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 #SBATCH -J OMPtest&lt;br /&gt;
 #SBATCH -p general&lt;br /&gt;
 #SBATCH -n 1&lt;br /&gt;
 #SBATCH -c 44&lt;br /&gt;
 #SBATCH --ntasks-per-node=44&lt;br /&gt;
 #SBATCH --mem-per-cpu=1024&lt;br /&gt;
 #SBATCH -o example_%j.out&lt;br /&gt;
 #SBATCH -e example_%j.err&lt;br /&gt;
 #SBATCH --mail-user=user@example.com&lt;br /&gt;
 #SBATCH --mail-type=ALL&lt;br /&gt;
&lt;br /&gt;
 OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK time ./omp-program&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Como debe comenzar un script en Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre del Job:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -J OMPtest&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre la particion donde desea ejecutar el Job:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -p general&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Número de trabajos:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Número de tareas:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -c 44&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Con esto se fuerza a que se agrupen las 44 tareas en un nodo (en OpenMP no hay comunicación entre nodos, por lo que todas las tareas deben estar en el mismo nodo o no funcionaría):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --ntasks-per-node=44&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Memoria por core (MBytes):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem-per-cpu=1024&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de salida:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -o example_%j.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de error:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -e example_%j.err&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Correo para notificaciones:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-user=user@example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Enviar correo en todos los casos:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Programa para ejecutar:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK time ./omp-program &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cuando se utiliza un programa OpenMP, el número de subprocesos (y, por lo tanto, el número requerido de núcleos) se especifica a través de la variable de entorno OMP_NUM_THREADS que, por lo tanto, aparece en el script frente a la llamada al programa. Lo estamos configurando en la variable interna SLURM_CPUS_PER_TASK que se establece a través de la opción &amp;quot;-c&amp;quot; (a 44 en nuestro ejemplo, que sería el número total de cores de un nodo de la partición &amp;quot;general&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
La opción &amp;quot;-n&amp;quot; se mantiene en 1 para indicar un único trabajo principal que tiene 44 tareas. Para asegurarnos que todas las tareas se ejecutan en el mismo nodo, se añade la opción &amp;quot;--ntasks-per-node&amp;quot; con el máximo número de cores que tiene un nodo de la partición donde se está lanzando el trabajo.&lt;br /&gt;
&lt;br /&gt;
=== Ejecución de tareas en GPUs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -J ejemplo_gpus&lt;br /&gt;
#SBATCH -p v100&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
#SBATCH -o ejemplo_%j.out&lt;br /&gt;
#SBATCH -e ejemplo_%j.err&lt;br /&gt;
#SBATCH --mail-user=correo@gmail.com&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH --mem-per-cpu=4300&lt;br /&gt;
#SBATCH --gres=gpu:1&lt;br /&gt;
&lt;br /&gt;
./programa&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Inicio de un bash script en Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre del trabajo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -J ejemplo_gpus&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre la partición donde se ejecuta el trabajo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --partition=v100&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Número de tareas:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de salida:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -o ejemplo_%j.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de error:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -e ejemplo_%j.err&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Correo para notificaciones:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-user=user@example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Enviar correo en todos los casos:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Memoria por CPU (MB):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem-per-cpu=4365&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cantidad utilizada de GPUs. El parámetro gpu:1 indica la cantidad de tarjetas a utilizar (cada nodo tiene 2 GPUs):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --gres=gpu:1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Programa para ejecutar:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./programa&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Job Arrays ===&lt;br /&gt;
Cuando se ejecutan cientos o miles de simulaciones que utilizan la misma cantidad de recursos, puede ser una ventaja ejecutar estas simulaciones como un &amp;quot;job array&amp;quot;. Los job array le permiten enviar miles de dichos trabajos (llamados &amp;quot;job steps&amp;quot;) con un solo script. A cada simulación se le asignará un valor único para la variable de entorno SLURM_ARRAY_TASK_ID. Puede usar esta variable para leer parámetros para pasos individuales de una línea dada de un archivo.&lt;br /&gt;
&lt;br /&gt;
=== Caso de uso de un Script Job Array (Gaussian) ===&lt;br /&gt;
Tenemos usuarios que actualmente envían varias simulaciones al clúster que son similares en cuanto al uso de recursos, pero, la diferencia es que solo cambia la entrada que le entregan al programa. Para esta situación, recomendamos hacer uso de un script Job Array.&lt;br /&gt;
&lt;br /&gt;
En este ejemplo crearemos un script job array para el software Gaussian, el cual, realizará 63 simulaciones, cada una de estas utilizará 8 cores y podrá alcanzar un uso máximo de 8 Gb de memoria ram. Para este caso utilizaremos la partición slims donde cada nodo tiene 46 Gb de memoria ram y 20 cores.&lt;br /&gt;
&lt;br /&gt;
Script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# ----------------SLURM Parameters----------------&lt;br /&gt;
#SBATCH -J prueba&lt;br /&gt;
#SBATCH -p slims&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
#SBATCH -c 8&lt;br /&gt;
#SBATCH --mem-per-cpu=1000&lt;br /&gt;
#SBATCH --mail-user=prueba@nlhpc.cl&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH --array=1-63&lt;br /&gt;
#SBATCH -o prueba_%A_%a.out&lt;br /&gt;
#SBATCH -e prueba_%A_%a.err&lt;br /&gt;
#-----------------Toolchain---------------------------&lt;br /&gt;
ml purge&lt;br /&gt;
ml intel/2019b&lt;br /&gt;
# ----------------Módulos-----------------------------&lt;br /&gt;
ml g16/B.01&lt;br /&gt;
# ----------------Comandos--------------------------&lt;br /&gt;
file=$(ls Child_10_*.com | sed -n ${SLURM_ARRAY_TASK_ID}p)&lt;br /&gt;
srun g16 $file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
Descripción de comandos utilizados en script:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Inicio de un bash script en Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre de la simulación:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -J prueba&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre la partición donde se ejecuta la simulación:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -p slims&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Número de tareas (1 tarea va a ejecutar 63 simulaciones):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Core’s por tareas (cada tarea utilizará un máximo 8 cores):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -c 8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Memoria ram por cpu (cada tarea utilizará un máximo 8 Gb de ram):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH –mem-per-cpu=1000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Correo para activar el envío de notificaciones:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-user=prueba@nlhpc.cl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Permitir envío de notificaciones:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se generan 63 simulaciones diferentes:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --array=1-63&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de salida: (ejemplo: prueba_18455017_1.out)&lt;br /&gt;
&lt;br /&gt;
* %A corresponde al Job ID de nuestra tarea que le asignará Slurm → 18455017.&lt;br /&gt;
* %a corresponde a la simulación X de nuestra tarea que le asignará Slurm → 1.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -o prueba_%A_%a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de errores: (ejemplo: prueba_18455017_1.err)&lt;br /&gt;
&lt;br /&gt;
* %A corresponde al Job ID de nuestra tarea que le asignará Slurm → 18455017.&lt;br /&gt;
* %a corresponde a la simulación X de nuestra tarea que le asignará Slurm → 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -e prueba_%A_%a.err&lt;br /&gt;
Toolchain: en este apartado, limpiaremos nuestro entorno de software no deseados y luego escogemos la herramienta informática con la cual está compilado el software Gaussian (nosotros utilizamos el compilador Intel/2019b).&lt;br /&gt;
&lt;br /&gt;
#-----------------Toolchain---------------------------&lt;br /&gt;
ml purge&lt;br /&gt;
ml intel/2019b&lt;br /&gt;
Módulos: cargamos el software Gaussian versión 16/B.0.&lt;br /&gt;
&lt;br /&gt;
# ----------------Módulos-----------------------------&lt;br /&gt;
ml g16/B.01&lt;br /&gt;
Comandos: aquí definimos los comandos a ejecutar.&lt;br /&gt;
&lt;br /&gt;
# ----------------Comandos--------------------------&lt;br /&gt;
file=$(ls Child_10_*.com | sed -n ${SLURM_ARRAY_TASK_ID}p)&lt;br /&gt;
srun g16 $file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
file= variable que va a listar los archivos de entrada que comiencen por Child_10_ y terminen en .com&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Child.png|no]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sed -n ${SLURM_ARRAY_TASK_ID}p) ← Sed imprimirá las líneas de cada archivo de entrada y la variable $SLURM_ARRAY_TASK_ID asumirá estas entradas como matriz de simulación en nuestro job array, en este ejemplo tenemos 63 archivos de entrada.&lt;br /&gt;
&lt;br /&gt;
Para más detalles sobre los archivos stdin, stdout y stderr de una simulación % A será reemplazado por el valor de SLURM_ARRAY_JOB_ID que es el Job ID de nuestra tarea y %a será reemplazado por el valor de SLURM_ARRAY_TASK_ID que corresponde a la simulación X de nuestra tarea.&lt;br /&gt;
&lt;br /&gt;
Srun g16 $file: ejecutará el comando gaussian g16 interpretando la variable $file en los nodos de cómputo asignados.&lt;br /&gt;
&lt;br /&gt;
Enviar el script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[prueba@leftraru1 ~]$ sbatch prueba.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ejecución de una tarea que ocupa mucha RAM por CPU ===&lt;br /&gt;
Debemos tener en cuenta que la RAM que SLURM reserva por defecto son 1000 MB. Un típico error de cancelación de tarea por falta de memoria es el siguiente:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/tmp/slurmd/job136839939/slurm_script: line 15: 23547 Killed                  ./programa.sh&lt;br /&gt;
slurmstepd: error: Detected 1 oom-kill event(s) in step 136839939.batch cgroup. Some of your processes &lt;br /&gt;
may have been killed by the cgroup out-of-memory handler.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Si su tarea ocupa más de la memoria por defecto, puede utilizar el siguiente parámetro:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem-per-cpu=2300 #Máxima RAM por CPU&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Esto hará que SLURM reserve más RAM por CPU para sus tareas.&lt;br /&gt;
&lt;br /&gt;
Tenga en cuenta que nuestros nodos tienen 46 GB de memoria RAM (Partición slims), 187 GB (Partición general) y 765 GB (Partición largemem) por nodo. [https://wiki.nlhpc.cl/Hardware_Disponible Más información].&lt;br /&gt;
&lt;br /&gt;
Otra forma de reservar memoria es utilizando el siguiente parámetro:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem=2300&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
En este caso SLURM realizará una reserva de memoria de 2300 MB pero por la totalidad del trabajo.&lt;br /&gt;
&lt;br /&gt;
Los parámetros anteriores al igual que el número de CPUs que se van a usar, hay que afinarlos lo mejor posible. Para ello lo que se puede hacer es hacer pruebas en los nodos logins, sin lanzar en las colas, y así estudiar el uso de RAM y CPU por parte de sus procesos.&lt;br /&gt;
&lt;br /&gt;
=== Ejecución de una tarea con Dependencias ===&lt;br /&gt;
Las dependencias de trabajos se utilizan para aplazar el inicio de un trabajo hasta que se satisfagan las dependencias especificadas. Se especifican con la opción --dependency en el siguiente formato:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch --dependency=&amp;lt;type:job_id[:job_id][,type:job_id[:job_id]]&amp;gt; ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Los tipos de dependencias son las siguientes:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;after&#039;&#039;&#039;:jobid[:jobid...] - el trabajo puede empezar después de que los trabajos especificados comiencen&lt;br /&gt;
* &#039;&#039;&#039;afterany&#039;&#039;&#039;:jobid[:jobid...] - el trabajo puede empezar después de que los trabajos especificados terminen&lt;br /&gt;
* &#039;&#039;&#039;afternotok&#039;&#039;&#039;:jobid[:jobid...] - el trabajo puede empezar después que los trabajos especificados terminan fallidamente&lt;br /&gt;
* &#039;&#039;&#039;afterok&#039;&#039;&#039;:jobid[:jobid...] - el trabajo puede empezar después que los trabajos especificados terminan exitósamente&lt;br /&gt;
&lt;br /&gt;
La manera más simple de usar una dependencia del tipo afterok:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[prueba@leftraru1 ~]$ sbatch job1.sh&lt;br /&gt;
Submitted batch job 21363626&lt;br /&gt;
[prueba@leftraru1 ~]$ sbatch --dependency=afterok:21363626 job2.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora cuando job1.sh termine correctamente, el job2.sh entrará en ejecución. Si job1.sh termina fallidamente, job2.sh no entrará en ejecución nunca pero sí quedará en cola (debe cancelarse manualmente el trabajo).&lt;br /&gt;
&lt;br /&gt;
== Prioridad de tarea ==&lt;br /&gt;
Cómo ver la prioridad del trabajo. Los factores que determinan la prioridad del trabajo, incluyendo la fórmula y pesos.&lt;br /&gt;
&lt;br /&gt;
=== Factores que determinan prioridad de tarea ===&lt;br /&gt;
&amp;lt;table class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 60%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Comando SLURM&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Descripción&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Edad&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;la cantidad de tiempo que el trabajo ha estado esperando en la cola.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Tamaño de la tarea&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;número de nodos solicitados por el trabajo.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Partición&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;prioridad para una partición determinada.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Prioridad Baja&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Mientras más tareas se ejecuten en el cluster, menor será la prioridad.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Prioridad Alta&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Mientras menos tareas se ejecuten en el clúster, más alta es la prioridad.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Prioridad de tarea ==&lt;br /&gt;
Cómo ver la prioridad del trabajo. Los factores que determinan la prioridad del trabajo, incluyendo la fórmula y pesos.&lt;br /&gt;
&lt;br /&gt;
=== Factores que determinan prioridad de tarea ===&lt;br /&gt;
* Edad - la cantidad de tiempo que el trabajo ha estado esperando en la cola&lt;br /&gt;
* Tamaño Oficio - número de nodos solicitados por el trabajo&lt;br /&gt;
* Partición - prioridad para una partición determinada&lt;br /&gt;
* Contribución de prioridades basada en los recursos informáticos utilizados por los miembros de un grupo de investigación en los últimos 30 días - Fairshare.&lt;br /&gt;
* Mientras más tareas se ejecuten en el cluster, menor será la prioridad.&lt;br /&gt;
* Mientras menos tareas se ejecuten en el clúster, más alta es la prioridad.&lt;br /&gt;
Fórmula Prioridad de tarea&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Job_priority =&lt;br /&gt;
  (PriorityWeightAge) * (age_factor) +&lt;br /&gt;
  (PriorityWeightFairshare) * (fair-share_factor) +&lt;br /&gt;
  (PriorityWeightJobSize) * (job_size_factor) +&lt;br /&gt;
  (PriorityWeightPartition) * (partition_factor) +&lt;br /&gt;
  (PriorityWeightQOS) * (QOS_factor)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Visualización de sus Tareas ==&lt;br /&gt;
Si Ud. necesita visualizar información acerca de sus tareas de forma interactiva, puede utilizar el comando smap:&lt;br /&gt;
&lt;br /&gt;
smap -i 3&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Smap.png|no|700px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De esta forma, tendrá una actualización cada 3 segundos de sus tareas en ejecución incluyendo los nodos en los cuales se encuentran ejecutándose.&lt;br /&gt;
&lt;br /&gt;
== Bibliografía ==&lt;br /&gt;
[http://slurm.schedmd.com/documentation.html Manual Oficial de Slurm]&lt;br /&gt;
&lt;br /&gt;
[https://slurm.schedmd.com/scrontab.html Documentación scrontab]&lt;/div&gt;</summary>
		<author><name>Jmorales</name></author>
	</entry>
	<entry>
		<id>https://wiki.nlhpc.cl/index.php?title=Como_abrir_un_ticket&amp;diff=763</id>
		<title>Como abrir un ticket</title>
		<link rel="alternate" type="text/html" href="https://wiki.nlhpc.cl/index.php?title=Como_abrir_un_ticket&amp;diff=763"/>
		<updated>2024-04-29T21:48:02Z</updated>

		<summary type="html">&lt;p&gt;Jmorales: /* Asunto o Subject */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introducción ==&lt;br /&gt;
La intención del siguiente documento es la de indicar algunas buenas prácticas al momento de solicitar al equipo del NLHPC soporte con distintas situaciones que pueda enfrentar, con la intención de que se otorgue la información necesaria de su requerimiento para lograr una atención adecuada por parte de nuestro equipo de trabajo.&lt;br /&gt;
&lt;br /&gt;
== A modo de resumen ==&lt;br /&gt;
&lt;br /&gt;
Siempre considere lo siguiente a la hora de solicitar soporte:&lt;br /&gt;
&lt;br /&gt;
* Indique un &#039;&#039;asunto&#039;&#039; o &#039;&#039;subject&#039;&#039; específico y claro&lt;br /&gt;
* Datos importantes a considerar en su mensaje&lt;br /&gt;
** Solicitud clara&lt;br /&gt;
*** Explicación de qué desea lograr&lt;br /&gt;
*** Mención de qué pasos ha seguido para obtener su resultado actual&lt;br /&gt;
** Sobre la ejecución de tareas&lt;br /&gt;
*** Indicar Job ID&lt;br /&gt;
*** Indicar script utilizado&lt;br /&gt;
*** Rutas de archivos de entradas y scripts&lt;br /&gt;
** Sobre la instalación de software&lt;br /&gt;
*** Indicar URL de página oficial&lt;br /&gt;
*** Versión requerida&lt;br /&gt;
*** Otorgar Licencia de ser requerida&lt;br /&gt;
* Tickets cerrados&lt;br /&gt;
** No contestar mensajes cerrados, a menos que su requerimiento no haya sido resuelto&lt;br /&gt;
** Abrir tickets nuevos, en vez de reabrir tickets antiguos&lt;br /&gt;
&lt;br /&gt;
Si necesita soporte por temas distintos, agradecemos nos envíe correos independientes para poder hacer un seguimiento adecuado a cada una de sus solicitudes. Esto también nos permitirá asignar distintas tareas entre el personal de nuestro equipo.&lt;br /&gt;
&lt;br /&gt;
== Qué es un ticket ==&lt;br /&gt;
&#039;&#039;Un ticket es un correo que se envía a soporte@nlhpc.cl el que será atendido por nuestro personal.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Un ticket es la representación de un requerimiento enviado por el usuario mediante un correo electrónico a una casilla de correo específica.&lt;br /&gt;
&lt;br /&gt;
El ticket es recibido en un sistema que permite organizar por tipo de requerimiento, nivel de urgencia y eventual asignación al equipo de trabajo adecuado.&lt;br /&gt;
&lt;br /&gt;
Mediante el sistema de gestión de tickets, se responderá a su requerimiento y nos pondremos en contacto con el solicitante. &lt;br /&gt;
&lt;br /&gt;
A efectos prácticos, el usuario verá una respuesta de correo en su casilla, y si tiene comentarios u observaciones sobre el servicio otorgado, bastará que responda dicho correo.&lt;br /&gt;
&lt;br /&gt;
=== Otras vías de comunicación ===&lt;br /&gt;
&lt;br /&gt;
En el caso que se reciban requerimientos por medios no convencionales o informales, solicitaremos al usuario que debe enviar un mensaje a soporte@nlhpc.cl con su requerimiento para continuar con el procedimiento formal de creación de ticket, lo que permite la gestión correcta de los distintos requerimientos que recibimos.&lt;br /&gt;
&lt;br /&gt;
== Qué información debe tener un ticket ==&lt;br /&gt;
&lt;br /&gt;
=== Asunto o Subject ===&lt;br /&gt;
&#039;&#039;Ser claro y específico en el requerimiento le permitirá tener una respuesta más precisa a su requerimiento.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Cuando un usuario realiza una solicitud para obtener asistencia, debe considerar que a mayor cantidad de información útil que otorgue, más acertada y pronta será la respuesta que recibirá.&lt;br /&gt;
&lt;br /&gt;
La primera información que se lee es el &#039;&#039;asunto&#039;&#039; o &#039;&#039;subject&#039;&#039; del correo electrónico, por lo que recomendamos que utilice un descriptor que englobe su solicitud.&lt;br /&gt;
&lt;br /&gt;
Algunos buenos ejemplos de un buen &#039;&#039;asunto&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Problema de falta de memoria en Job ID 2504311&lt;br /&gt;
* Ejecución de tarea en partición GENERAL con entorno virtual de Python&lt;br /&gt;
* Cómo copiar archivos desde mi computadora al cluster&lt;br /&gt;
* Solicitud de instalación de software FOOBAR versión 1.2.3&lt;br /&gt;
&lt;br /&gt;
Algunos malos ejemplos:&lt;br /&gt;
&lt;br /&gt;
* Ayuda&lt;br /&gt;
* Error&lt;br /&gt;
* &#039;&#039;Asunto dejado vacío por el propio usuario&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Solicitud de instalación de software ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;¿Ya ha buscado ejecutando &amp;lt;code&amp;gt;ml avail&amp;lt;/code&amp;gt;?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Actualmente contamos con una gran cantidad de software disponible en el clúster.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
En el caso de requerir la instalación de un nuevo software, indicar:&lt;br /&gt;
&lt;br /&gt;
* Nombre del software&lt;br /&gt;
* Versión o versiones requeridas&lt;br /&gt;
* URL oficial para la obtención del código fuente o página oficial&lt;br /&gt;
* Si se requiere licencia, el usuario debe otorgar la licencia para su uso&lt;br /&gt;
&lt;br /&gt;
=== Solicitud de verificación de tarea ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Recuerde visitar nuestro [https://wiki.nlhpc.cl/Generador%20Scripts Generador de Scripts] como también nuestra [https://wiki.nlhpc.cl Wiki] para conocer cómo editar scripts y ejecutarlos de manera exitosa.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Las tareas que los usuarios lanzan pueden presentar distintas situaciones, como subutilización de recursos, fallas de ejecución, problemas de módulos, asignaciones incorrectas y otras situaciones.&lt;br /&gt;
&lt;br /&gt;
En el caso de requerir soporte con alguna tarea o información sobre cómo ejecutar tareas en el cluster, recomendamos indicar:&lt;br /&gt;
&lt;br /&gt;
* Nombre del usuario que ejecuta la tarea&lt;br /&gt;
* Nombre del script que utiliza&lt;br /&gt;
* Ruta de la ubicación del script&lt;br /&gt;
* Software utilizado&lt;br /&gt;
* Si ha ejecutado ya su tarea&lt;br /&gt;
** Job ID de la tarea ejecutada si aplica&lt;br /&gt;
** Archivos de salida/error obtenidos si ha ejecutado su tarea&lt;br /&gt;
** Resultado obtenido&lt;br /&gt;
** Pasos seguidos para obtener el resultado actual&lt;br /&gt;
** Resultado esperado&lt;br /&gt;
&lt;br /&gt;
=== Problemas de acceso al clúster ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tenemos un vídeo tutorial de acceso vía SSH en nuestro [https://www.youtube.com/watch?v=TSUQpsttRio canal de youtube].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Cuando ocurren problemas de acceso, lo principal es poder identificar:&lt;br /&gt;
&lt;br /&gt;
* Usuario que se quiere conectar&lt;br /&gt;
* Software utilizado para conectarse&lt;br /&gt;
* IPv4 desde la cual se está conectado (puede consultarlo [https://miip.cl/ aquí])&lt;br /&gt;
* Error obtenido&lt;br /&gt;
&lt;br /&gt;
Con lo anterior podremos descartar problemas de comunicación, credenciales y validez de la cuenta.&lt;br /&gt;
&lt;br /&gt;
=== Otros requerimientos ===&lt;br /&gt;
&lt;br /&gt;
Si tiene algún otro tipo de requerimiento, siempre considere indicar:&lt;br /&gt;
&lt;br /&gt;
* Usuario utilizado&lt;br /&gt;
* Pasos seguidos para obtener el resultado actual&lt;br /&gt;
* Resultado esperado&lt;br /&gt;
* Aplicaciones usadas y versiones de las mismas&lt;br /&gt;
* Otros datos que considere útiles que puedan ayudar a dar una mejor respuesta&lt;br /&gt;
&lt;br /&gt;
== Cierre de tickets ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Agradecemos no responda los tickets que indiquen que se han cerrado. En vez de eso, recuerde siempre enviar un nuevo correo.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Una vez que se ha otorgado una respuesta que satisfaga el requerimiento del usuario, solicitaremos no contestar los correos enviados.&lt;br /&gt;
&lt;br /&gt;
De esta manera, el ticket será cerrado.&lt;br /&gt;
&lt;br /&gt;
Si es necesario, el usuario puede volver a enviar &#039;&#039;&#039;un nuevo correo&#039;&#039;&#039; lo que creará una nueva solicitud.&lt;br /&gt;
&lt;br /&gt;
Esto último permitirá gestionar de mejor manera los requerimientos que se atienden, verificar las tareas en las que se invierte tiempo en nuestros usuarios, como también verificar los distintos temas que se abordan.&lt;br /&gt;
&lt;br /&gt;
En el caso de que un requerimiento sea similar a uno anterior, también es una buena práctica enviar &#039;&#039;&#039;un nuevo correo&#039;&#039;&#039; para crear un nuevo ticket.&lt;br /&gt;
&lt;br /&gt;
Si responde un ticket antiguo, esto nos impedirá gestionar de mejor manera las tareas como también el reporte de las mismas.&lt;br /&gt;
&lt;br /&gt;
== Otras fuentes de ayuda ==&lt;br /&gt;
&lt;br /&gt;
Disponemos, además de una [https://wiki.nlhpc.cl Wiki] en donde podrá leer información importante sobre características del clúster y su uso. &lt;br /&gt;
&lt;br /&gt;
También realizamos cursos básicos, avanzados y específicos, los cuales se pueden ver en nuestra página de [https://www.nlhpc.cl/eventos eventos].&lt;br /&gt;
&lt;br /&gt;
Y nuestro canal de [https://www.youtube.com/@nlhpc_chile YouTube] donde podrá ver cursos anteriores y tutoriales que nuestro equipo prepara con el fin de entregar las herramientas adecuadas para el uso del Cluster Guacolda-Leftraru Epu.&lt;/div&gt;</summary>
		<author><name>Jmorales</name></author>
	</entry>
	<entry>
		<id>https://wiki.nlhpc.cl/index.php?title=Uso_de_conda&amp;diff=762</id>
		<title>Uso de conda</title>
		<link rel="alternate" type="text/html" href="https://wiki.nlhpc.cl/index.php?title=Uso_de_conda&amp;diff=762"/>
		<updated>2024-04-29T21:45:03Z</updated>

		<summary type="html">&lt;p&gt;Jmorales: /* Uso de entornos conda con scripts Sbatch */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introducción =&lt;br /&gt;
&lt;br /&gt;
Si necesita utilizar entornos virtuales de Conda, el siguiente procedimiento muestra los pasos básicos para crear su primer entorno virtual.&lt;br /&gt;
&lt;br /&gt;
Debe recordar que al ser entornos virtuales, estos estarán almacenados bajo su directorio &amp;lt;code&amp;gt;$HOME&amp;lt;/code&amp;gt; y las instalaciones de software bajo este entorno deben ser administradas por el propio usuario.&lt;br /&gt;
&lt;br /&gt;
= Módulos para Conda =&lt;br /&gt;
&lt;br /&gt;
Actualmente en el cluster contamos con distintos módulos que pueden ser utilizados para la creación de entornos virtuales de &#039;&#039;&#039;Conda&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 Anaconda2/5.3.0&lt;br /&gt;
 Anaconda3/5.1.0&lt;br /&gt;
 Anaconda3/5.3.0&lt;br /&gt;
 Anaconda3/2020.02&lt;br /&gt;
 Miniconda2/4.7.10&lt;br /&gt;
 Miniconda3/4.5.12&lt;br /&gt;
&lt;br /&gt;
Para nuestro ejemplo utilizaremos &amp;lt;code&amp;gt;Miniconda3/4.5.12&amp;lt;/code&amp;gt;, pero puede utilizar el módulo que se adapte a sus necesidades.&lt;br /&gt;
&lt;br /&gt;
= Carga de módulo y activación inicial de Conda =&lt;br /&gt;
&lt;br /&gt;
El siguiente paso debe realizarse una única vez, posterior a esto, el usuario deberá crear, activar y administrar sus propios entornos virtuales.&lt;br /&gt;
&lt;br /&gt;
== Carga de módulo ==&lt;br /&gt;
&lt;br /&gt;
Cargaremos el módulo &amp;lt;code&amp;gt;Miniconda3/4.5.12&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Recuerde que si omite la versión del módulo a cargar, se utilizará el que esté por defecto.&lt;br /&gt;
&lt;br /&gt;
 ml purge&lt;br /&gt;
 ml intel&lt;br /&gt;
 ml Miniconda3&lt;br /&gt;
&lt;br /&gt;
== Activación de Conda ==&lt;br /&gt;
&lt;br /&gt;
Activaremos el uso de conda con el comando:&lt;br /&gt;
&lt;br /&gt;
 conda init bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Este comando editará su archivo &amp;lt;code&amp;gt;~/.bashrc&amp;lt;/code&amp;gt; con un contenido similar a:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # &amp;gt;&amp;gt;&amp;gt; conda initialize &amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
 # !! Contents within this block are managed by &#039;conda init&#039; !!&lt;br /&gt;
 __conda_setup=&amp;quot;$(&#039;/home/lmod/software/Core/Miniconda3/4.5.12/bin/conda&#039; &#039;shell.bash&#039; &#039;hook&#039; 2&amp;gt; /dev/null)&amp;quot;&lt;br /&gt;
 if [ $? -eq 0 ]; then&lt;br /&gt;
     eval &amp;quot;$__conda_setup&amp;quot;&lt;br /&gt;
 else&lt;br /&gt;
     if [ -f &amp;quot;/home/lmod/software/Core/Miniconda3/4.5.12/etc/profile.d/conda.sh&amp;quot; ]; then&lt;br /&gt;
         . &amp;quot;/home/lmod/software/Core/Miniconda3/4.5.12/etc/profile.d/conda.sh&amp;quot;&lt;br /&gt;
     else&lt;br /&gt;
         export PATH=&amp;quot;/home/lmod/software/Core/Miniconda3/4.5.12/bin:$PATH&amp;quot;&lt;br /&gt;
     fi&lt;br /&gt;
 fi&lt;br /&gt;
 unset __conda_setup&lt;br /&gt;
 # &amp;lt;&amp;lt;&amp;lt; conda initialize &amp;lt;&amp;lt;&amp;lt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Si elimina estas líneas, deberá cargar el módulo y activar conda nuevamente.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
En este punto, es necesario puede salir de su sesión y volver a acceder, o ejecutar el siguiente comando para activar volver a cargar su archivo &amp;lt;code&amp;gt;~/.bashrc&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 source ~/.bashrc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Y ya tendrá disponible el comando &amp;lt;code&amp;gt;conda&amp;lt;/code&amp;gt; disponible en su sesión.&lt;br /&gt;
&lt;br /&gt;
= Creación de entorno virtual =&lt;br /&gt;
&lt;br /&gt;
Los siguientes pasos permitirán crear un entorno virtual bajo su cuenta personal.&lt;br /&gt;
&lt;br /&gt;
== Creando nuestro entorno virtual ==&lt;br /&gt;
&lt;br /&gt;
Crearemos nuestro entorno virtual con el comando:&lt;br /&gt;
&lt;br /&gt;
 conda create -n mi_primer_entorno&lt;br /&gt;
&lt;br /&gt;
Una vez que este entorno se haya creado, lo podremos activar con:&lt;br /&gt;
&lt;br /&gt;
 conda activate mi_primer_entorno&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Fíjese que el prompt de su cuenta indicará el nombre del entorno virtual que esté activo. En una primera instancia verá un cambio de &#039;&#039;&#039;base&#039;&#039;&#039; por &#039;&#039;&#039;mi_primer_entorno&#039;&#039;&#039; &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Creando un entorno virtual con Python 3.9.5 ==&lt;br /&gt;
&lt;br /&gt;
En el caso de querer crear un entorno virtual y en el mismo paso instalar Python en una versión específica, puede usar el comando:&lt;br /&gt;
&lt;br /&gt;
 conda create -n mi_entorno_con_python python=3.9.5&lt;br /&gt;
&lt;br /&gt;
Este comando creará el entorno &amp;lt;code&amp;gt;mi_entorno_con_python&amp;lt;/code&amp;gt; e instalará la versión &#039;&#039;&#039;3.9.5&#039;&#039;&#039; de &#039;&#039;&#039;Python&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Eventualmente, y luego que su entorno haya sido creado, podrá activar este nuevo entorno y verificar la ubicación del comando &amp;lt;code&amp;gt;python&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 conda activate mi_entorno_con_python&lt;br /&gt;
 which python&lt;br /&gt;
&lt;br /&gt;
= Instalación de software adicional =&lt;br /&gt;
&lt;br /&gt;
Cuando requiera instalar nuevo software, bastará que active su entorno virtual y use el comando &amp;lt;code&amp;gt;conda&amp;lt;/code&amp;gt; para la instalación de software.&lt;br /&gt;
&lt;br /&gt;
Por ejemplo, si queremos instalar &#039;&#039;&#039;Tensorflow&#039;&#039;&#039; en nuestro entorno &amp;lt;code&amp;gt;mi_primer_entorno&amp;lt;/code&amp;gt;, podemos ejecutar:&lt;br /&gt;
&lt;br /&gt;
 conda activate mi_primer_entorno&lt;br /&gt;
 conda install Tensorflow&lt;br /&gt;
&lt;br /&gt;
=== Un ejemplo práctico e instalación de &amp;lt;code&amp;gt;numpy&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Veamos un ejemplo real: Muchos de nuestros usuarios que utilizan &#039;&#039;&#039;Python&#039;&#039;&#039; requieren el uso de &#039;&#039;&#039;NumPy&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Para la instalación bajo nuestro entorno que ya tiene Python instalado, ejecutaremos&lt;br /&gt;
&lt;br /&gt;
 conda activate mi_entorno_con_python&lt;br /&gt;
 conda install numpy&lt;br /&gt;
&lt;br /&gt;
Veremos un mensaje similar a:&lt;br /&gt;
&lt;br /&gt;
 Collecting package metadata (current_repodata.json): done&lt;br /&gt;
 Solving environment: done&lt;br /&gt;
 ## Package Plan ##&lt;br /&gt;
   environment location: /home/dbowman/.conda/envs/my_env&lt;br /&gt;
   added / updated specs:&lt;br /&gt;
     - numpy&lt;br /&gt;
 The following packages will be installed:&lt;br /&gt;
   ca-certificates                       2023.5.7-hbcca054_0 --&amp;gt; 2023.7.22-hbcca054_0&lt;br /&gt;
   certifi                             2023.5.7-pyhd8ed1ab_0 --&amp;gt; 2023.7.22-pyhd8ed1ab_0&lt;br /&gt;
   numpy                              1.24.3-py311h64a7726_0 --&amp;gt; 1.25.1-py311h64a7726_0&lt;br /&gt;
   openssl                                  3.1.0-hd590300_3 --&amp;gt; 3.1.1-hd590300_1&lt;br /&gt;
   ...&lt;br /&gt;
 Proceed ([y]/n)? &lt;br /&gt;
&lt;br /&gt;
Si aceptamos las dependencias se realizará la instalación y veremos un mensaje de finalización exitoso similar a:&lt;br /&gt;
&lt;br /&gt;
 Preparing transaction: done&lt;br /&gt;
 Verifying transaction: done&lt;br /&gt;
 Executing transaction: done&lt;br /&gt;
&lt;br /&gt;
= Uso de entornos conda con scripts Sbatch =&lt;br /&gt;
&lt;br /&gt;
Ya hemos creado nuestros entornos virtuales, como también hemos instalado el software que vamos a necesitar.&lt;br /&gt;
&lt;br /&gt;
Ahora necesitamos ejecutar nuestras simulaciones en los nodos de cómputo, y para esto debemos indicar en nuestro script SBatch las siguientes instrucciones luego de haber realizado una reserva de recursos:&lt;br /&gt;
&lt;br /&gt;
 eval &amp;quot;$(conda shell.bash hook)&amp;quot;&lt;br /&gt;
 conda activate mi_primer_entorno&lt;br /&gt;
&lt;br /&gt;
De esa manera será posible crear un script que se verá similar a:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 #SBATCH -J conda_test&lt;br /&gt;
 #SBATCH -p main&lt;br /&gt;
 #SBATCH -n 1&lt;br /&gt;
 #SBATCH -c 1&lt;br /&gt;
 #SBATCH --mem-per-cpu=2300&lt;br /&gt;
 #SBATCH --mail-user=foo@example.com&lt;br /&gt;
 #SBATCH --mail-type=ALL&lt;br /&gt;
 #SBATCH -o conda_test_%j.out&lt;br /&gt;
 eval &amp;quot;$(conda shell.bash hook)&amp;quot;&lt;br /&gt;
 conda activate mi_primer_entorno&lt;br /&gt;
 ... mis comandos...&lt;br /&gt;
&lt;br /&gt;
= Eliminación de Conda y entornos virtuales =&lt;br /&gt;
&lt;br /&gt;
== Eliminación de Entornos ==&lt;br /&gt;
&lt;br /&gt;
Puede listar sus entornos virtuales con el comando:&lt;br /&gt;
&lt;br /&gt;
 conda env list&lt;br /&gt;
&lt;br /&gt;
Y en el caso de querer eliminar un entorno virtual puede ejecutar indicando el nombre de entorno:&lt;br /&gt;
&lt;br /&gt;
 conda-env remove -n mi_primer_entorno&lt;br /&gt;
&lt;br /&gt;
También puede eliminar &#039;&#039;&#039;todos los entornos&#039;&#039;&#039; borrando la carpeta contenedora:&lt;br /&gt;
&lt;br /&gt;
 rm -rf ~/.conda&lt;br /&gt;
&lt;br /&gt;
== Eliminación de Conda y del entorno ==&lt;br /&gt;
&lt;br /&gt;
Para eliminar el uso de Conda de nuestro archivo debemos editar nuestro archivo &amp;lt;code&amp;gt;~/.bashrc&amp;lt;/code&amp;gt; y &#039;&#039;&#039;eliminar&#039;&#039;&#039; el contenido similar a:&lt;br /&gt;
&lt;br /&gt;
 # &amp;gt;&amp;gt;&amp;gt; conda initialize &amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
 # !! Contents within this block are managed by &#039;conda init&#039; !!&lt;br /&gt;
 __conda_setup=&amp;quot;$(&#039;/home/lmod/software/Miniconda3/4.9.2/bin/conda&#039; &#039;shell.bash&#039; &#039;hook&#039; 2&amp;gt; /dev/null)&amp;quot;&lt;br /&gt;
 if [ $? -eq 0 ]; then&lt;br /&gt;
     eval &amp;quot;$__conda_setup&amp;quot;&lt;br /&gt;
 else&lt;br /&gt;
     if [ -f &amp;quot;/home/lmod/software/Miniconda3/4.9.2/etc/profile.d/conda.sh&amp;quot; ]; then&lt;br /&gt;
         . &amp;quot;/home/lmod/software/Miniconda3/4.9.2/etc/profile.d/conda.sh&amp;quot;&lt;br /&gt;
     else&lt;br /&gt;
         export PATH=&amp;quot;/home/lmod/software/Miniconda3/4.9.2/bin:$PATH&amp;quot;&lt;br /&gt;
     fi&lt;br /&gt;
 fi&lt;br /&gt;
 unset __conda_setup&lt;br /&gt;
 # &amp;lt;&amp;lt;&amp;lt; conda initialize &amp;lt;&amp;lt;&amp;lt;&lt;br /&gt;
&lt;br /&gt;
Se debe guardar los cambios y salir de la sesión.&lt;br /&gt;
&lt;br /&gt;
La próxima vez que se acceda a nuestra cuenta, ya no estará disponible para su uso.&lt;br /&gt;
&lt;br /&gt;
Si se requiere volver a utilizar Conda, será necesario inicializar nuevamente nuestro entorno.&lt;br /&gt;
&lt;br /&gt;
= Buenas prácticas =&lt;br /&gt;
&lt;br /&gt;
En los ejemplos vistos, tenemos dos entornos virtuales: &amp;lt;code&amp;gt;mi_primer_entorno&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;mi_entorno_con_python&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pero estos nombres no nos dicen mucho.&lt;br /&gt;
&lt;br /&gt;
Debe recordar que cada entorno virtual puede contener distintas colecciones de software, por lo que es una buena práctica que el nombre del entorno virtual sea descriptivo para su uso.&lt;br /&gt;
&lt;br /&gt;
De esta manera, se mostrará las dependencias necesarias y deberá aceptar la instalación.&lt;br /&gt;
&lt;br /&gt;
Si desea instalar y aceptar todas las dependencias de manera automática puede ejecutar:&lt;br /&gt;
&lt;br /&gt;
 conda install -y Tensorflow&lt;br /&gt;
&lt;br /&gt;
También es necesario mencionar que debe cuidar al cargar otros módulos, ya que pueden generar conflictos con versiones de software disponibles en el cluster en comparación a los que un entorno virtual les pueda ofrecer.&lt;br /&gt;
&lt;br /&gt;
Por ejemplo, si cargamos un módulo de Python y verificamos la ubicación del interprete de Python veremos lo siguiente:&lt;br /&gt;
&lt;br /&gt;
 [dbowman@leftraru1 ~]$ ml Python&lt;br /&gt;
 [dbowman@leftraru1 ~]$ which python&lt;br /&gt;
 /home/lmod/software/Python/3.9.5-intel-2019b/bin/python&lt;br /&gt;
 [dbowman@leftraru1 ~]$ conda activate mi_entorno_con_python&lt;br /&gt;
 [dbowman@leftraru1 ~]$ which python&lt;br /&gt;
 ~/.conda/envs/mi_entorno_con_python/bin/python&lt;br /&gt;
 [dbowman@leftraru1 ~]$ ml Python&lt;br /&gt;
 [dbowman@leftraru1 ~]$ which python&lt;br /&gt;
 /home/lmod/software/Python/3.9.5-intel-2019b/bin/python&lt;br /&gt;
&lt;br /&gt;
En el ejemplo anterior vemos que se carga el módulo de Python &amp;lt;code&amp;gt;Python/3.9.5&amp;lt;/code&amp;gt; y el interprete corresponde a &amp;lt;code&amp;gt; /home/lmod/software/Python/3.9.5-intel-2019b/bin/python&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Posterior a eso se activa el entorno virtual &amp;lt;code&amp;gt;mi_entorno_con_python&amp;lt;/code&amp;gt; y el interprete corresponde a &amp;lt;code&amp;gt;~/.conda/envs/mi_entorno_con_python/bin/python&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Nuevamente cargamos  el módulo de Python &amp;lt;code&amp;gt;Python/3.9.5&amp;lt;/code&amp;gt; y el interprete corresponde a &amp;lt;code&amp;gt; /home/lmod/software/Python/3.9.5-intel-2019b/bin/python&amp;lt;/code&amp;gt;. Y aunque nuestro entorno sigue activo, al momento de utilizar el comando &amp;lt;code&amp;gt;python&amp;lt;/code&amp;gt; puede que estemos utilizando otro.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
= Más información =&lt;br /&gt;
&lt;br /&gt;
Le invitamos a visitar https://anaconda.org/ donde encontrará más información como software disponible para instalar.&lt;br /&gt;
&lt;br /&gt;
También lo invitamos a escribirnos a soporte@nlhpc.cl si necesita soporte.&lt;br /&gt;
&lt;br /&gt;
= Enlaces de interés =&lt;br /&gt;
&lt;br /&gt;
* Uso de [https://wiki.nlhpc.cl/Jupyter_bajo_Conda Jupyter] bajo conda&lt;br /&gt;
* Como solicitar soporte creando un [https://wiki.nlhpc.cl/Como_abrir_un_ticket ticket]&lt;br /&gt;
* Uso del gestor de tareas [https://wiki.nlhpc.cl/SISTEMA_GESTOR_DE_RECURSOS SLURM]&lt;/div&gt;</summary>
		<author><name>Jmorales</name></author>
	</entry>
	<entry>
		<id>https://wiki.nlhpc.cl/index.php?title=Uso_de_SWAN&amp;diff=761</id>
		<title>Uso de SWAN</title>
		<link rel="alternate" type="text/html" href="https://wiki.nlhpc.cl/index.php?title=Uso_de_SWAN&amp;diff=761"/>
		<updated>2024-04-29T21:44:39Z</updated>

		<summary type="html">&lt;p&gt;Jmorales: /* Ejecución de SWAN en nodo de cómputo con 20 CPU asignadas */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introducción ==&lt;br /&gt;
&lt;br /&gt;
En la presente wiki se indican algunas recomendaciones para el uso de SWAN en la infraestructura del NLHPC.&lt;br /&gt;
&lt;br /&gt;
Algunas consideraciones que cada usuario debe tener en consideración son los nombres de archivo de entrada y salida que cada uno debe tener.&lt;br /&gt;
&lt;br /&gt;
== Cargando SWAN ==&lt;br /&gt;
&lt;br /&gt;
Para la carga de SWAN, ejecutaremos lo siguiente:\&lt;br /&gt;
&lt;br /&gt;
 ml purge&lt;br /&gt;
 ml intel&lt;br /&gt;
 ml SWAN/41.31-omp&lt;br /&gt;
&lt;br /&gt;
Una vez se tengan estos módulos cargados, se tendrá acceso al ejecutable&lt;br /&gt;
&lt;br /&gt;
 swan.exe&lt;br /&gt;
&lt;br /&gt;
== Archivos necesarios y preparación inicial ==&lt;br /&gt;
&lt;br /&gt;
El usuario debe proveer los siguientes archivos:&lt;br /&gt;
&lt;br /&gt;
* Archivo de entrada, usualmente llamado &#039;&#039;&#039;input.swn&#039;&#039;&#039;&lt;br /&gt;
* Otros archivos de entradas indicados en el archivo &#039;&#039;&#039;input.swn&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
La aplicación &#039;&#039;&#039;swan.exe&#039;&#039;&#039; buscará un archivo llamado &#039;&#039;&#039;INPUT&#039;&#039;&#039; por lo que será necesario renombrar nuestro archivo de entrada ejecutando:&lt;br /&gt;
&lt;br /&gt;
 cp input.swn INPUT&lt;br /&gt;
&lt;br /&gt;
=== Ejemplo de archivo de entrada ===&lt;br /&gt;
&lt;br /&gt;
 $*************************HEADING************************&lt;br /&gt;
 $ SWAN Canal&lt;br /&gt;
 PROJ &#039;example&#039; &#039;01&#039;&lt;br /&gt;
 SET NAUTICAL&lt;br /&gt;
 NUMERIC ACCUR 0.02 0.02 0.02 98. STAT 20 0.01&lt;br /&gt;
 $********************MODEL INPUT*************************&lt;br /&gt;
 MODE STAT TWOD&lt;br /&gt;
 COORDINATES CART&lt;br /&gt;
 CGRID REG 555380 4936200 0 20860 21630 298 309 CIRCLE 90 0.125 1&lt;br /&gt;
 INPGRID BOTTOM 555380 4936200 0 298 309 70 70  &lt;br /&gt;
 READINP BOTTOM 1 &#039;extra_input_file.dep&#039; 3 0 FREE&lt;br /&gt;
 WIND 2 320&lt;br /&gt;
 $BOUND SEG IJ 298 308 0 308 0 308 0 0 0 0 298 0 UNIF PAR 2.7 14 230&lt;br /&gt;
 $*********************CALCULATION************************&lt;br /&gt;
 BREAKING CONSTANT 1.0 0.78&lt;br /&gt;
 QUAD&lt;br /&gt;
 WCAP&lt;br /&gt;
 $TRIad&lt;br /&gt;
 GEN3 KOMen&lt;br /&gt;
 DIFFRAC 0&lt;br /&gt;
 $*********************MODEL OUTPUT************************&lt;br /&gt;
 $NGRid &#039;example&#039; 244000 6340900 0 21450 13100 429 262&lt;br /&gt;
 POINTS &#039;point_example&#039; 571235.51 4945437.89&lt;br /&gt;
 BLOCK &#039;COMPGRID&#039; NOHEAD &#039;output_file.mat&#039; LAY 3 XP YP DEPTH HSIG TPS DIR PDIR TM01 WIND GENERAT RTP&lt;br /&gt;
 TABLE &#039;point_example&#039; HEAD &#039;output_file.tab&#039; XP YP DEPTH HSIG TPS DIR PDIR TM01 TMM10&lt;br /&gt;
 SPECout &#039;point_example&#039; &#039;output_file.spc&#039;&lt;br /&gt;
 $*******************CALCULATIONS**************************&lt;br /&gt;
 COMP STAT&lt;br /&gt;
 STOP&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El archivo consta de las siguientes secciones:&lt;br /&gt;
&lt;br /&gt;
* Cabezera&lt;br /&gt;
* Entrada del modelo&lt;br /&gt;
** Aquí se indica el archivo adicional de ejemplo llamado &#039;&#039;&#039;extra_input_file.dep&#039;&#039;&#039;&lt;br /&gt;
* Sección de cálculos a realizar&lt;br /&gt;
* Salida del modelo&lt;br /&gt;
*** Aquí se generan los archivos de salida &#039;&#039;&#039;output_file.mat&#039;&#039;&#039;, &#039;&#039;&#039;output_file.tab&#039;&#039;&#039; y &#039;&#039;&#039;output_file.spc&#039;&#039;&#039;&lt;br /&gt;
* Sección de estadísticas finales&lt;br /&gt;
&lt;br /&gt;
Recuerde que estas secciones pueden variar según el uso que cada usuario pueda utilizar.&lt;br /&gt;
&lt;br /&gt;
== Ejecución de SWAN en nodo de cómputo con 20 CPU asignadas ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Antes de continuar, recuerde que el archivo de entrada a utilizar debe llamarse &#039;&#039;&#039;INPUT&#039;&#039;&#039;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Para la ejecución de SWAN editaremos el script &#039;&#039;&#039;run_swan.job&#039;&#039;&#039; con el siguiente contenido:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 #SBATCH -J swan_job&lt;br /&gt;
 #SBATCH -p main&lt;br /&gt;
 #SBATCH -n 20&lt;br /&gt;
 #SBATCH -c 1&lt;br /&gt;
 #SBATCH --ntasks-per-node=20&lt;br /&gt;
 #SBATCH --mem-per-cpu=2300&lt;br /&gt;
 #SBATCH --mail-user=foo@example.com&lt;br /&gt;
 #SBATCH --mail-type=ALL&lt;br /&gt;
 #SBATCH -o swan_job_%j.out&lt;br /&gt;
 #SBATCH -e swan_job_%j.err&lt;br /&gt;
 ml purge&lt;br /&gt;
 ml intel&lt;br /&gt;
 ml SWAN/41.31-omp&lt;br /&gt;
 srun swan.exe&lt;br /&gt;
&lt;br /&gt;
Y lo ejecutaremos con:&lt;br /&gt;
&lt;br /&gt;
 sbatch run_swan.job&lt;br /&gt;
&lt;br /&gt;
Este script generará los siguientes archivos de salida:&lt;br /&gt;
&lt;br /&gt;
* swan_job_%j.out: archivo de salida con información de la tarea SLURM&lt;br /&gt;
* swan_job_%j.err: archivo de errores y alertas con información de la tarea SLURM&lt;br /&gt;
* PRINT: archivo de salida de la simulación de SWAN&lt;br /&gt;
* Errfile: archivo de error de la simulación de SWAN&lt;br /&gt;
* norm_end: archivo de finalización de la simulación de SWAN&lt;br /&gt;
* otros archivos de salida indicados en el archivo de entrada utilizado (ver archivo &#039;&#039;&#039;INPUT&#039;&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
En el caso de que vuelva a lanzar esta simulación en la misma ubicación, los archivos &#039;&#039;&#039;PRINT&#039;&#039;&#039;, &#039;&#039;&#039;Errfile&#039;&#039;&#039; y otros archivos de salida usados por SWAN serán sobrescritos, por lo que se recomienda tomar medidas para evitar la pérdida de datos.&lt;br /&gt;
&lt;br /&gt;
== Enlaces de interés ==&lt;br /&gt;
&lt;br /&gt;
* Página oficial de SWAN [https://swanmodel.sourceforge.io/ aquí]&lt;br /&gt;
* Manual de usuario de SWAN [https://swanmodel.sourceforge.io/online_doc/swanuse/swanuse.html aquí]&lt;br /&gt;
&lt;br /&gt;
Para generar scripts y asignar recursos le recomendamos utilizar nuestro [https://wiki.nlhpc.cl/Generador_Scripts Generador de Scripts].&lt;/div&gt;</summary>
		<author><name>Jmorales</name></author>
	</entry>
	<entry>
		<id>https://wiki.nlhpc.cl/index.php?title=QuantumESPRESSO&amp;diff=760</id>
		<title>QuantumESPRESSO</title>
		<link rel="alternate" type="text/html" href="https://wiki.nlhpc.cl/index.php?title=QuantumESPRESSO&amp;diff=760"/>
		<updated>2024-04-29T21:43:51Z</updated>

		<summary type="html">&lt;p&gt;Jmorales: /* Modulos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== ¿Qué es? ==&lt;br /&gt;
Quantum ESPRESSO es un software opensource para simulaciones químicas.&lt;br /&gt;
&lt;br /&gt;
== Modulos ==&lt;br /&gt;
Se encuentra disponible en general:&lt;br /&gt;
=== [https://wiki.nlhpc.cl/Lmod Lmod] ===&lt;br /&gt;
* QuantumESPRESSO/5.1.2-stress_hub_fix&lt;br /&gt;
* QuantumESPRESSO/5.1.2&lt;br /&gt;
* QuantumESPRESSO/5.4.0-hybrid&lt;br /&gt;
* QuantumESPRESSO/6.0&lt;br /&gt;
* QuantumESPRESSO/6.1&lt;br /&gt;
* QuantumESPRESSO/6.2.1&lt;br /&gt;
&lt;br /&gt;
== Ejemplo de Lanzador ==&lt;br /&gt;
Ejemplo de SBATCH para enviar al cluster en la partición &#039;&#039;&#039;general&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -J ejemplo&lt;br /&gt;
#SBATCH -p general&lt;br /&gt;
#SBATCH -n 88&lt;br /&gt;
#SBATCH --ntasks-per-node=44&lt;br /&gt;
#SBATCH --mem-per-cpu=4363&lt;br /&gt;
#SBATCH --mail-user=usuario@correo.cl&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH --o ejemplo_%j.out&lt;br /&gt;
#SBATCH --e ejemplo_%j.err&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
module purge&lt;br /&gt;
module load Lmod/6.5&lt;br /&gt;
source $LMOD_PROFILE&lt;br /&gt;
ml intel/2017a QuantumESPRESSO/6.2.1&lt;br /&gt;
&lt;br /&gt;
srun pw.x &amp;lt; inp &amp;gt; out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Referencias ==&lt;br /&gt;
[https://www.quantum-espresso.org/ Quantum ESPRESSO]&lt;/div&gt;</summary>
		<author><name>Jmorales</name></author>
	</entry>
	<entry>
		<id>https://wiki.nlhpc.cl/index.php?title=Cancelaci%C3%B3n_de_Tareas&amp;diff=759</id>
		<title>Cancelación de Tareas</title>
		<link rel="alternate" type="text/html" href="https://wiki.nlhpc.cl/index.php?title=Cancelaci%C3%B3n_de_Tareas&amp;diff=759"/>
		<updated>2024-04-29T21:43:15Z</updated>

		<summary type="html">&lt;p&gt;Jmorales: /* Por uso de Memoria */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Por uso de CPU ==&lt;br /&gt;
Procederemos a cancelar la tarea en el caso de que la mitad del total de cores reservados muestre un porcentaje de uso menor o igual a un &#039;&#039;&#039;30%&#039;&#039;&#039; en un lapso de &#039;&#039;&#039;4 horas&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Por uso de Memoria ==&lt;br /&gt;
En el caso de que la memoria reservada por core en los nodos main sea mayor a &#039;&#039;&#039;1000MB&#039;&#039;&#039;, se activa el proceso de verificación del uso de memoria RAM para su tarea para garantizar al menos &#039;&#039;&#039;70%&#039;&#039;&#039; de uso correcto de todo el recurso reservado. Esta condición será revisada desde el inicio de la tarea y si no alcanza el mencionado límite, la tarea será cancelada de forma automática.&lt;br /&gt;
&lt;br /&gt;
Cabe destacar que si su tarea necesita reservar &#039;&#039;&#039;2300MB&#039;&#039;&#039; por core, usted debe hacer uso de la memoria RAM asignada por cada CPU.&lt;br /&gt;
&lt;br /&gt;
Por lo anterior, el siguiente ejemplo muestra el uso de 1 proceso con 1 CPU con 2300M de RAM asignada.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -p main&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
#SBATCH -c 1&lt;br /&gt;
#SBATCH --mem-per-cpu=2300&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puede visitar nuestro [https://wiki.nlhpc.cl/Generador_Scripts Generador de Scripts]&lt;br /&gt;
&lt;br /&gt;
== Ejemplo ==&lt;br /&gt;
En el siguiente caso se hace una reserva de 11 cores y 48G de memoria:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Cpu_subutilizacion.png|no]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se puede observar que el uso efectivo es de solo 1 core a la vez.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Memoria subutilizacion.png|no]]&lt;br /&gt;
&lt;br /&gt;
Además, SLURM asignó por core al menos (48000/11) 4300M de memoria, cuando el uso de la tarea solo fue de 5M (los valores del gráfico se presentan en bytes).&lt;br /&gt;
&lt;br /&gt;
== Referencias ==&lt;br /&gt;
* [https://slurm.schedmd.com/sbatch.html man sbatch]&lt;br /&gt;
* [https://wiki.nlhpc.cl/Monitoreo Monitoreo De Tareas]&lt;/div&gt;</summary>
		<author><name>Jmorales</name></author>
	</entry>
	<entry>
		<id>https://wiki.nlhpc.cl/index.php?title=Jupyter_bajo_Conda&amp;diff=758</id>
		<title>Jupyter bajo Conda</title>
		<link rel="alternate" type="text/html" href="https://wiki.nlhpc.cl/index.php?title=Jupyter_bajo_Conda&amp;diff=758"/>
		<updated>2024-04-29T21:42:37Z</updated>

		<summary type="html">&lt;p&gt;Jmorales: /* Lanzando tareas de Jupyter en los nodos de cómputo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introducción =&lt;br /&gt;
&lt;br /&gt;
El siguiente procedimiento le permitirá instalar Jupyter Notebook en un entorno Conda, para eventualmente acceder desde su computadora local y utilizarlo.&lt;br /&gt;
&lt;br /&gt;
Recomendamos la lectura de la página de la Wiki sobre Conda en el siguiente [https://wiki.nlhpc.cl/Uso_de_conda enlace] donde aprenderá a utilizar los módulos necesarios, crear entornos virtuales e instalar software.&lt;br /&gt;
&lt;br /&gt;
= Creación de entorno virtual de Conda e instalación de Jupyter =&lt;br /&gt;
&lt;br /&gt;
Crearemos un entorno virtual y posterior a eso instalaremos Jupyter de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
 [dbowman@leftraru1 ~]$ conda create -n mi_entorno_con_jupyter&lt;br /&gt;
 Collecting package metadata (current_repodata.json): done&lt;br /&gt;
 Solving environment: done&lt;br /&gt;
 ## Package Plan ##&lt;br /&gt;
  environment location: /home/eosorio/.conda/envs/mi_entorno_con_jupyter&lt;br /&gt;
 Proceed ([y]/n)? &lt;br /&gt;
 Preparing transaction: done&lt;br /&gt;
 Verifying transaction: done&lt;br /&gt;
 Executing transaction: done&lt;br /&gt;
&lt;br /&gt;
Luego activaremos nuestro entorno virtual con:&lt;br /&gt;
&lt;br /&gt;
 [dbowman@leftraru1 ~]$ conda activate mi_entorno_con_jupyter&lt;br /&gt;
&lt;br /&gt;
E instalaremos jupyter ejecutando:&lt;br /&gt;
&lt;br /&gt;
 [dbowman@leftraru1 ~]$ conda install -y jupyter&lt;br /&gt;
&lt;br /&gt;
Si todo resulta de manera exitosa veremos un resultado similar a:&lt;br /&gt;
&lt;br /&gt;
 Downloading and Extracting Packages&lt;br /&gt;
 jsonpointer-2.0      | 9 KB      | ######################################### | 100% &lt;br /&gt;
 jedi-0.19.0          | 825 KB    | ######################################### | 100% &lt;br /&gt;
 webcolors-1.13       | 18 KB     | ######################################### | 100% &lt;br /&gt;
 isoduration-20.11.0  | 17 KB     | ######################################### | 100% &lt;br /&gt;
 jupyterlab_server-2. | 59 KB     | ######################################### | 100% &lt;br /&gt;
 async-lru-2.0.4      | 15 KB     | ######################################### | 100% &lt;br /&gt;
 uri-template-1.3.0   | 23 KB     | ######################################### | 100% &lt;br /&gt;
 ipywidgets-8.1.0     | 111 KB    | ######################################### | 100% &lt;br /&gt;
 fqdn-1.5.1           | 14 KB     | ######################################### | 100% &lt;br /&gt;
 arrow-1.2.3          | 92 KB     | ######################################### | 100% &lt;br /&gt;
 sip-6.7.11           | 569 KB    | ######################################### | 100% &lt;br /&gt;
 openssl-3.1.2        | 2.5 MB    | ######################################### | 100% &lt;br /&gt;
 jsonschema-with-form | 7 KB      | ######################################### | 100% &lt;br /&gt;
 jupyter_events-0.7.0 | 21 KB     | ######################################### | 100% &lt;br /&gt;
 notebook-7.0.1       | 3.1 MB    | ######################################### | 100% &lt;br /&gt;
 Preparing transaction: done&lt;br /&gt;
 Verifying transaction: done&lt;br /&gt;
 Executing transaction: done&lt;br /&gt;
&lt;br /&gt;
= Ejecución de Jupyter =&lt;br /&gt;
&lt;br /&gt;
A continuación deberemos realizar dos pasos:&lt;br /&gt;
&lt;br /&gt;
# Identificar el nodo en el que nos encontramos&lt;br /&gt;
# Ejecutar jupyter&lt;br /&gt;
&lt;br /&gt;
== Identificación de nodo en el que nos encontremos ==&lt;br /&gt;
&lt;br /&gt;
Para identificar el nodo en el que nos encontremos ejecutaremos:&lt;br /&gt;
&lt;br /&gt;
 [dbowman@leftraru1 ~]$ hostname&lt;br /&gt;
 leftraru2&lt;br /&gt;
&lt;br /&gt;
La respuesta será uno de los nodos de acceso correspondientes a leftraru1, 2, 3 o 4.&lt;br /&gt;
&lt;br /&gt;
En nuestro ejemplo obtuvimos &amp;lt;code&amp;gt;leftraru2&amp;lt;/code&amp;gt;, dato que utilizaremos prontamente.&lt;br /&gt;
&lt;br /&gt;
== Ejecutar Jupyter ==&lt;br /&gt;
&lt;br /&gt;
En este paso ejecutaremos Jupyter indicando un puerto específico para posteriormente poder conectarnos desde nuestra computadora local.&lt;br /&gt;
&lt;br /&gt;
El comando a utilizar es:&lt;br /&gt;
&lt;br /&gt;
 [dbowman@leftraru1 ~]$ jupyter-notebook --no-browser --port 2346&lt;br /&gt;
&lt;br /&gt;
Obtendremos mucha información, pero nos deberemos fijar en la información similar a:&lt;br /&gt;
&lt;br /&gt;
 [C 2023-08-02 17:09:07.819 ServerApp] &lt;br /&gt;
    To access the server, open this file in a browser:&lt;br /&gt;
        file:///home/dbowman/.local/share/jupyter/runtime/jpserver-60187-open.html&lt;br /&gt;
    Or copy and paste one of these URLs:&lt;br /&gt;
        http://localhost:2346/tree?token=918029e46e54957ac797882f1&lt;br /&gt;
        http://127.0.0.1:2346/tree?token=918029e46e54957ac797882f1&lt;br /&gt;
&lt;br /&gt;
Deberemos tener en cuenta la información &amp;lt;code&amp;gt;http://localhost:2346/tree?token=918029e46e54957ac797882f1&amp;lt;/code&amp;gt; para nuestros próximos pasos.&lt;br /&gt;
&lt;br /&gt;
= Accediendo a Jupyter desde nuestra computadora local =&lt;br /&gt;
&lt;br /&gt;
Los siguientes pasos son realizados en una terminal &#039;&#039;&#039;desde&#039;&#039;&#039; nuestra computadora local.&lt;br /&gt;
&lt;br /&gt;
Los datos que necesitaremos son:&lt;br /&gt;
&lt;br /&gt;
* Nombre de host en donde ejecutamos los pasos anteriores &lt;br /&gt;
* URL de acceso al ejecutar Jupyter en el cluster&lt;br /&gt;
&lt;br /&gt;
Estos datos fueron obtenidos desde la sección anterior, lo que nos permitirá:&lt;br /&gt;
&lt;br /&gt;
# Crear un túnel de acceso&lt;br /&gt;
# Acceder a Jupyter&lt;br /&gt;
&lt;br /&gt;
== Creación de túnel de acceso ==&lt;br /&gt;
&lt;br /&gt;
En pasos previos obtuvimos que el nombre de host &amp;lt;code&amp;gt;leftraru2&amp;lt;/code&amp;gt;, con lo que podremos ejecutar desde nuestra computadora local un túnel SSH de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
 [david@HAL ~]$ ssh -NL 2346:localhost:2346 -l dbowman leftraru2.nlhpc.cl&lt;br /&gt;
&lt;br /&gt;
Se le solicitará su contraseña del cluster y si la autenticación es exitosa, se creará un túnel desde nuestra computadora al cluster bajo nuestro usuario y el host donde hemos estado trabajando.&lt;br /&gt;
&lt;br /&gt;
En el caso de haber obtenido otro nombre de host, por ejemplo &amp;lt;code&amp;gt;leftraru4&amp;lt;/code&amp;gt;, deberemos indicar dicho nombre de host en el comando ejecutado.&lt;br /&gt;
&lt;br /&gt;
== Accediendo a Jupyter ==&lt;br /&gt;
&lt;br /&gt;
Una vez que hemos lanzado el túnel, deberemos acceder mediante nuestro navegador preferido a la URL obtenida previamente.&lt;br /&gt;
&lt;br /&gt;
En nuestro caso bastará abrir: &#039;&#039;&#039;&amp;lt;code&amp;gt;http://localhost:2346/tree?token=918029e46e54957ac797882f1&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Y ya podrá acceder a utilizar Jupyter desde su navegador.&lt;br /&gt;
&lt;br /&gt;
= Lanzando tareas de Jupyter en los nodos de cómputo =&lt;br /&gt;
&lt;br /&gt;
Debemos tener en consideración que el uso de Jupyter suele realizarse mayormente de manera interactiva, lo que requerirá los cuatro pasos anteriores que hemos realizado:&lt;br /&gt;
&lt;br /&gt;
# Identificación de host en el cluster&lt;br /&gt;
# Ejecutar Jupyter y tomar nota de URL de acceso&lt;br /&gt;
# Crear túnel SSH desde nuestra computadora al cluster&lt;br /&gt;
# Acceder a Jupyter&lt;br /&gt;
&lt;br /&gt;
También es importante notar que estamos usando un entorno virtual, por lo que para ejecutar deberemos considerar lo siguiente:&lt;br /&gt;
&lt;br /&gt;
* Reservar recursos&lt;br /&gt;
* Activar entorno de conda utilizado&lt;br /&gt;
* Lanzar tarea a los nodos de cómputo&lt;br /&gt;
** Esta tarea se ejecutará pero no podrá ser utilizada de manera interactiva&lt;br /&gt;
&lt;br /&gt;
Entonces, si queremos lanzar nuestro archivo &amp;lt;code&amp;gt;HolaJupyter.ipynb&amp;lt;/code&amp;gt; creado en nuestro &#039;&#039;&#039;notebook&#039;&#039;&#039;, podremos crear un  script similar a:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 #---------------Script SBATCH - NLHPC ----------------&lt;br /&gt;
 #SBATCH -J jupyter-desde-sbatch&lt;br /&gt;
 #SBATCH -p main&lt;br /&gt;
 #SBATCH -n 1&lt;br /&gt;
 #SBATCH -c 1&lt;br /&gt;
 #SBATCH --mem-per-cpu=2300&lt;br /&gt;
 #SBATCH --mail-user=dbowman@hal.com&lt;br /&gt;
 #SBATCH --mail-type=ALL&lt;br /&gt;
 #SBATCH -o jupyter-desde-sbatch_%j.out&lt;br /&gt;
 source /home/dbowman/.bashrc&lt;br /&gt;
 eval &amp;quot;$(/home/lmod/software/Core/Miniconda3/4.5.12/bin/conda shell.bash hook)&amp;quot;&lt;br /&gt;
 conda activate mi_entorno_con_jupyter&lt;br /&gt;
 jupyter nbconvert --to notebook --execute HolaJupyter.ipynb --output=jupyter-output.ipynb&lt;br /&gt;
&lt;br /&gt;
Esto nos entregará información en el archivo de salida de la tarea &amp;lt;code&amp;gt;jupyter-desde-sbatch_234234.out&amp;lt;/code&amp;gt; similar a:&lt;br /&gt;
 [NbConvertApp] Converting notebook HolaJupyter.ipynb to notebook&lt;br /&gt;
 0.00s - Debugger warning: It seems that frozen modules are being used, which may&lt;br /&gt;
 0.00s - make the debugger miss breakpoints. Please pass -Xfrozen_modules=off&lt;br /&gt;
 0.00s - to python to disable frozen modules.&lt;br /&gt;
 0.00s - Note: Debugging will proceed. Set PYDEVD_DISABLE_FILE_VALIDATION=1 to disable this validation.&lt;br /&gt;
 0.00s - Debugger warning: It seems that frozen modules are being used, which may&lt;br /&gt;
 0.00s - make the debugger miss breakpoints. Please pass -Xfrozen_modules=off&lt;br /&gt;
 0.00s - to python to disable frozen modules.&lt;br /&gt;
 0.00s - Note: Debugging will proceed. Set PYDEVD_DISABLE_FILE_VALIDATION=1 to disable this validation.&lt;br /&gt;
 [NbConvertApp] Writing 1187 bytes to jupyter-output.ipynb&lt;br /&gt;
&lt;br /&gt;
Y el archivo de salida llamado &amp;lt;code&amp;gt;jupyter-output.ipynb&amp;lt;/code&amp;gt; tendrá un contenido similar a:&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;cells&amp;quot;: [&lt;br /&gt;
  {&lt;br /&gt;
   &amp;quot;cell_type&amp;quot;: &amp;quot;code&amp;quot;,&lt;br /&gt;
   &amp;quot;execution_count&amp;quot;: 1,&lt;br /&gt;
   &amp;quot;id&amp;quot;: &amp;quot;7832632e-7aeb-48d5-97f5-4aed8644fb0b&amp;quot;,&lt;br /&gt;
   &amp;quot;metadata&amp;quot;: {&lt;br /&gt;
    &amp;quot;execution&amp;quot;: {&lt;br /&gt;
     &amp;quot;iopub.execute_input&amp;quot;: &amp;quot;2023-08-02T22:06:21.689494Z&amp;quot;,&lt;br /&gt;
     &amp;quot;iopub.status.busy&amp;quot;: &amp;quot;2023-08-02T22:06:21.689137Z&amp;quot;,&lt;br /&gt;
     &amp;quot;iopub.status.idle&amp;quot;: &amp;quot;2023-08-02T22:06:21.701830Z&amp;quot;,&lt;br /&gt;
     &amp;quot;shell.execute_reply&amp;quot;: &amp;quot;2023-08-02T22:06:21.700906Z&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
   },&lt;br /&gt;
   &amp;quot;outputs&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
     &amp;quot;name&amp;quot;: &amp;quot;stdout&amp;quot;,&lt;br /&gt;
     &amp;quot;output_type&amp;quot;: &amp;quot;stream&amp;quot;,&lt;br /&gt;
     &amp;quot;text&amp;quot;: [&lt;br /&gt;
      &amp;quot;Hola Jupyter!\n&amp;quot;&lt;br /&gt;
     ]&lt;br /&gt;
    }&lt;br /&gt;
   ],&lt;br /&gt;
   &amp;quot;source&amp;quot;: [&lt;br /&gt;
    &amp;quot;print(\&amp;quot;Hola Jupyter!\&amp;quot;)&amp;quot;&lt;br /&gt;
   ]&lt;br /&gt;
  },&lt;br /&gt;
 ...&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
= Conclusión =&lt;br /&gt;
&lt;br /&gt;
El uso de Jupyter puede resultar de gran ayuda, y en conjunto con la potencia de los nodos de cómputo se transforma en una herramienta útil y flexible.&lt;br /&gt;
&lt;br /&gt;
Se tiene una curva de aprendizaje inicial poco sencilla al requerir de varios pasos, pero una vez dominado, podrá repetir sus pasos una y otra vez según sus requerimientos.&lt;br /&gt;
&lt;br /&gt;
= Más información =&lt;br /&gt;
&lt;br /&gt;
Puede leer sobre Conda en el siguiente [https://wiki.nlhpc.cl/Uso_de_conda enlace].&lt;br /&gt;
&lt;br /&gt;
Puede leer sobre Jupyter en la página web oficial en el siguiente [https://docs.jupyter.org/en/latest/ enlace].&lt;/div&gt;</summary>
		<author><name>Jmorales</name></author>
	</entry>
	<entry>
		<id>https://wiki.nlhpc.cl/index.php?title=Ejemplo_WRF&amp;diff=757</id>
		<title>Ejemplo WRF</title>
		<link rel="alternate" type="text/html" href="https://wiki.nlhpc.cl/index.php?title=Ejemplo_WRF&amp;diff=757"/>
		<updated>2024-04-29T21:41:43Z</updated>

		<summary type="html">&lt;p&gt;Jmorales: /* Realizar un Script de ejecución de WRF, de tal manera que se pueda enviar esta tarea al gestor SLURM para su procesamiento */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Ejecución de WRF mediante el uso de módulos==&lt;br /&gt;
Este documento tiene por objetivo guiar a los usuario del [https://www.nlhpc.cl/ Laboratorio Nacional de Supercomputación NLHPC] en en el proceso de ejecución de una simulación del modelo &#039;&#039;&#039;WRF&#039;&#039;&#039; mediante la cargar los módulos disponibles en nuestro [https://wiki.nlhpc.cl/Lmod Gestor de Módulos LMOD].&lt;br /&gt;
&lt;br /&gt;
Los pasos necesarios para realizar una simulación son los siguientes:&lt;br /&gt;
&lt;br /&gt;
== Realizar la carga de módulos correspondiente a la versión de WRF/WPS deseada por el usuario ==&lt;br /&gt;
En este paso, el usuario podrá buscar mediante el [https://wiki.nlhpc.cl/Lmod Gestor de Módulos LMOD] las versiones de &#039;&#039;&#039;WRF&#039;&#039;&#039; y &#039;&#039;&#039;WPS&#039;&#039;&#039; disponibles, considerando que para una correcta ejecución de una simulación las versiones de WRF y WPS deben ser lo mas parecidas posibles.&lt;br /&gt;
&lt;br /&gt;
Para realizar la búsqueda de módulos, el usuario deberá ejecutar los comandos &amp;lt;code&amp;gt;ml spider WRF&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;ml spider WPS&amp;lt;/code&amp;gt;. Lo que mostrará la siguiente información&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(base) [usuario@leftraru1 run]$ ml spider WRF&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
  WRF:&lt;br /&gt;
-------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
    Description:&lt;br /&gt;
      The Weather Research and Forecasting (WRF) Model is a next-generation mesoscale numerical weather prediction system designed to serve both operational&lt;br /&gt;
      forecasting and atmospheric research needs. &lt;br /&gt;
&lt;br /&gt;
     Versions:&lt;br /&gt;
        WRF/3.7.1-dm+sm-polar&lt;br /&gt;
        WRF/3.7.1-dm+sm&lt;br /&gt;
        WRF/3.9.1-dm+sm+chem&lt;br /&gt;
        WRF/3.9.1-dm+sm-polar&lt;br /&gt;
        WRF/3.9.1-dmpar+chem&lt;br /&gt;
        WRF/4.0.3-dm+sm&lt;br /&gt;
        WRF/4.1-dm+sm&lt;br /&gt;
        WRF/4.1.2-dm+sm+oasis&lt;br /&gt;
        WRF/4.1.2-dm+sm&lt;br /&gt;
        WRF/4.1.3-dmpar&lt;br /&gt;
        WRF/4.1.5-dm+sm&lt;br /&gt;
        WRF/4.1.5-dmpar&lt;br /&gt;
        WRF/4.2.1-dmpar+xios+oasis&lt;br /&gt;
        WRF/4.2.2-dm+sm+chem&lt;br /&gt;
        WRF/4.2.2-dm+sm&lt;br /&gt;
        WRF/4.2.2-dmpar+chem&lt;br /&gt;
        WRF/4.3-dmpar&lt;br /&gt;
        WRF/4.3.1-dmpar+da&lt;br /&gt;
        WRF/4.3.2-dm+sm+chem&lt;br /&gt;
        WRF/4.3.2-dm+sm&lt;br /&gt;
        WRF/4.3.2-dmpar+chem&lt;br /&gt;
        WRF/4.3.2-dmpar&lt;br /&gt;
        WRF/4.3.3-dmpar&lt;br /&gt;
        WRF/4.4-dm+sm+chem+kpp&lt;br /&gt;
        WRF/4.4-dm+sm+chem&lt;br /&gt;
        WRF/4.4-dmpar+chem&lt;br /&gt;
        WRF/4.4-dmpar&lt;br /&gt;
     Other possible modules matches:&lt;br /&gt;
        CALWRF  WRFDA  WRFPLUS&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
  To find other possible module matches execute:&lt;br /&gt;
&lt;br /&gt;
      $ module -r spider &#039;.*WRF.*&#039;&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
  For detailed information about a specific &amp;quot;WRF&amp;quot; module (including how to load the modules) use the module&#039;s full name.&lt;br /&gt;
  For example:&lt;br /&gt;
&lt;br /&gt;
     $ module spider WRF/4.3.3-dmpar&lt;br /&gt;
-------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mismo procedimiento para el caso de &#039;&#039;&#039;WPS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(base) [usuario@leftraru1 run]$ ml spider WPS&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
  WPS:&lt;br /&gt;
-------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
    Description:&lt;br /&gt;
      WRF Preprocessing System (WPS) for WRF. The Weather Research and Forecasting (WRF) Model is a next-generation mesoscale numerical weather prediction system&lt;br /&gt;
      designed to serve both operational forecasting and atmospheric research needs. &lt;br /&gt;
&lt;br /&gt;
     Versions:&lt;br /&gt;
        WPS/3.7.1-dmpar&lt;br /&gt;
        WPS/4.0.3-dmpar&lt;br /&gt;
        WPS/4.1-dmpar&lt;br /&gt;
        WPS/4.2-dmpar&lt;br /&gt;
        WPS/4.3.1-dmpar&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
  For detailed information about a specific &amp;quot;WPS&amp;quot; module (including how to load the modules) use the module&#039;s full name.&lt;br /&gt;
  For example:&lt;br /&gt;
&lt;br /&gt;
     $ module spider WPS/4.3.1-dmpar&lt;br /&gt;
-------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora bien, una vez elegidos los módulos indicados, se procede a su carga en el sistema&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ml WRF/4.1.3-dmpar&lt;br /&gt;
ml WPS/4.2-dmpar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Crear un directorio de trabajo para alojar la versión de WRF/WPS cargados previamente. ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
mkdir TEST_WRF&lt;br /&gt;
cp -rv /home/lmod/software/WRF/4.1.3-intel-2019b-dmpar/WRF-4.1.3 ~/TEST_WRF&lt;br /&gt;
cp -rv /home/lmod/software/WPS/4.2-intel-2019b-dmpar/WPS-4.2 ~/TEST_WRF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Descargar y descomprimir el archivo WPS_GEOG ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/TEST_WRF/WPS-4.2&lt;br /&gt;
wget https://www2.mmm.ucar.edu/wrf/src/wps_files/geog_high_res_mandatory.tar.gz&lt;br /&gt;
tar -xvzf geog_high_res_mandatory.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Editar el archivo namelist.wps, de manera que pueda linkear apropiadamente los datos de geografía ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;amp;share&lt;br /&gt;
 wrf_core = &#039;ARW&#039;,&lt;br /&gt;
 max_dom = 1,&lt;br /&gt;
 start_date = &#039;2021-01-30_12:00:00&#039;,&#039;2021-01-30_12:00:00&#039;,&lt;br /&gt;
 end_date   = &#039;2021-01-30_18:00:00&#039;,&#039;2021-01-30_21:00:00&#039;,&lt;br /&gt;
 interval_seconds = 10800&lt;br /&gt;
/&lt;br /&gt;
&lt;br /&gt;
&amp;amp;geogrid&lt;br /&gt;
 parent_id         =   1,   1,&lt;br /&gt;
 parent_grid_ratio =   1,   3,&lt;br /&gt;
 i_parent_start    =   1,  53,&lt;br /&gt;
 j_parent_start    =   1,  25,&lt;br /&gt;
 e_we              =  150, 220,&lt;br /&gt;
 e_sn              =  130, 214,&lt;br /&gt;
 geog_data_res = &#039;default&#039;,&#039;default&#039;,&lt;br /&gt;
 dx = 27000,&lt;br /&gt;
 dy = 27000,&lt;br /&gt;
 map_proj = &#039;lambert&#039;,&lt;br /&gt;
 ref_lat   = -33.00,&lt;br /&gt;
 ref_lon   = -80.00,&lt;br /&gt;
 truelat1  =  -32.0,&lt;br /&gt;
 truelat2  =  -34.0,&lt;br /&gt;
 stand_lon = -71.0,&lt;br /&gt;
 geog_data_path = &#039;./WPS_GEOG/&#039;&lt;br /&gt;
/&lt;br /&gt;
&lt;br /&gt;
&amp;amp;ungrib&lt;br /&gt;
 out_format = &#039;WPS&#039;,&lt;br /&gt;
 prefix = &#039;FILE&#039;,&lt;br /&gt;
/&lt;br /&gt;
&lt;br /&gt;
&amp;amp;metgrid&lt;br /&gt;
 fg_name = &#039;FILE&#039;&lt;br /&gt;
/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O bien puede descargarlo directamente para continuar con el ejercicio: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://raw.githubusercontent.com/nlhpc-training/Tutorial-WRF/main/namelist.wps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En este ejemplo se ha descargado la data geog mandatoria, pero existe data opcional en caso de ser necesaria.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WPS_GEOG&#039;&#039;&#039; se descargó en &amp;lt;code&amp;gt;/home/nombre_usuario/TEST_WRF/WPS-4.2&amp;lt;/code&amp;gt; pero cada usuario puede descargarla donde desee. Y como se puede apreciar, la ruta &amp;lt;code&amp;gt;geog_data_path&amp;lt;/code&amp;gt; es la que debe apuntar a esta carpeta.&lt;br /&gt;
&lt;br /&gt;
== Enlazar simbólicamente la Vtable a utilizar, el cual debe quedar en la ruta donde está el preprocesador WPS ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/TEST_WRF/WPS-4.2&lt;br /&gt;
ln -s ungrib/Variable_Tables/Vtable.GFS Vtable&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ejecutar el comando geogrid.exe, el cual nos permitirá generar nuestro dominio. ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
srun geogrid.exe&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Descargar datos de CI y CB para realizar el preproceso de datos ==&lt;br /&gt;
&lt;br /&gt;
En este caso, clonaremos desde el [https://github.com/nlhpc-training git NLHPC] los datos de prueba, los cuales nos permitirán ejecutar los procesos de &#039;&#039;&#039;ungrib.exe&#039;&#039;&#039; y &#039;&#039;&#039;metgrid.exe&#039;&#039;&#039; respectivamente. En este proceso, copiaremos los datos y desde la carpeta de &#039;&#039;&#039;WPS&#039;&#039;&#039; realizaremos el proceso de linkeo a dichos datos mediante el &amp;lt;code&amp;gt;script link_grib.csh&amp;lt;/code&amp;gt;. Finalmente ejecutaremos &amp;lt;code&amp;gt;ungrib.exe&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;metgrid.exe&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/TEST_WRF/&lt;br /&gt;
mkdir CI_CB&lt;br /&gt;
cd CI_CB&lt;br /&gt;
wget https://github.com/nlhpc-training/Tutorial-WRF/raw/main/fnl_20210130_12_00.grib2&lt;br /&gt;
wget https://github.com/nlhpc-training/Tutorial-WRF/raw/main/fnl_20210130_18_00.grib2&lt;br /&gt;
cd ~/TEST_WRF/WPS-4.2/&lt;br /&gt;
./link_grib.csh ~/TEST_WRF/CI_CB/fnl*&lt;br /&gt;
srun ungrib.exe&lt;br /&gt;
srun metgrid.exe&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En este ejemplo se ha ejecutado interactivamente el preproceso de datos ya que el dominio y la data han sido pensados para un ejercicio de poca duración. &lt;br /&gt;
Ahora bien, en el caso de que el usuario deba preprocesar información de largo aliento, se recomienda crear un script y lanzarlo mediante sbatch. (Para mayor información, véase apartado de [https://wiki.nlhpc.cl/SISTEMA_GESTOR_DE_RECURSOS#Ejecutando_trabajos ejecución de trabajos])&lt;br /&gt;
&lt;br /&gt;
== Crear el archivo de configuración namelist.input según lo requerido ==&lt;br /&gt;
&lt;br /&gt;
Para este caso, ingresamos a la carpeta &#039;&#039;&#039;run&#039;&#039;&#039; de &#039;&#039;&#039;WRF&#039;&#039;&#039; y editaremos el archivo &amp;lt;code&amp;gt;namelist.input&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/TEST_WRF/WRF-4.1.3/run/&lt;br /&gt;
vi namelist.input&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De manera tal que quede como el siguiente.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;amp;time_control&lt;br /&gt;
 run_days                            = 0,&lt;br /&gt;
 run_hours                           = 6,&lt;br /&gt;
 run_minutes                         = 0,&lt;br /&gt;
 run_seconds                         = 0,&lt;br /&gt;
 start_year                          = 2021, 2021,&lt;br /&gt;
 start_month                         = 01,   01,&lt;br /&gt;
 start_day                           = 30,   29,&lt;br /&gt;
 start_hour                          = 12,   00,&lt;br /&gt;
 end_year                            = 2021, 2021,&lt;br /&gt;
 end_month                           = 01,   02,&lt;br /&gt;
 end_day                             = 30,   01,&lt;br /&gt;
 end_hour                            = 18,   00,&lt;br /&gt;
 interval_seconds                    = 10800&lt;br /&gt;
 input_from_file                     = .true.,.true.,&lt;br /&gt;
 history_interval                    = 60,  60,&lt;br /&gt;
 frames_per_outfile                  = 1, 1,&lt;br /&gt;
 restart                             = .false.,&lt;br /&gt;
 restart_interval                    = 7200,&lt;br /&gt;
 io_form_history                     = 2&lt;br /&gt;
 io_form_restart                     = 2&lt;br /&gt;
 io_form_input                       = 2&lt;br /&gt;
 io_form_boundary                    = 2&lt;br /&gt;
 /&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;domains&lt;br /&gt;
 time_step                           = 60,&lt;br /&gt;
 time_step_fract_num                 = 0,&lt;br /&gt;
 time_step_fract_den                 = 1,&lt;br /&gt;
 max_dom                             = 1,&lt;br /&gt;
 e_we                                = 150,    220,&lt;br /&gt;
 e_sn                                = 130,    214,&lt;br /&gt;
 e_vert                              = 45,     45,&lt;br /&gt;
 dzstretch_s                         = 1.1&lt;br /&gt;
 p_top_requested                     = 5000,&lt;br /&gt;
 num_metgrid_levels                  = 34,&lt;br /&gt;
 num_metgrid_soil_levels             = 4,&lt;br /&gt;
 dx                                  = 27000,&lt;br /&gt;
 dy                                  = 27000,&lt;br /&gt;
 grid_id                             = 1,     2,&lt;br /&gt;
 parent_id                           = 0,     1,&lt;br /&gt;
 i_parent_start                      = 1,     53,&lt;br /&gt;
 j_parent_start                      = 1,     25,&lt;br /&gt;
 parent_grid_ratio                   = 1,     3,&lt;br /&gt;
 parent_time_step_ratio              = 1,     3,&lt;br /&gt;
 feedback                            = 1,&lt;br /&gt;
 smooth_option                       = 0&lt;br /&gt;
 /&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;physics&lt;br /&gt;
 physics_suite                       = &#039;CONUS&#039;&lt;br /&gt;
 mp_physics                          = -1,    -1,&lt;br /&gt;
 cu_physics                          = -1,    -1,&lt;br /&gt;
 ra_lw_physics                       = -1,    -1,&lt;br /&gt;
 ra_sw_physics                       = -1,    -1,&lt;br /&gt;
 bl_pbl_physics                      = -1,    -1,&lt;br /&gt;
 sf_sfclay_physics                   = -1,    -1,&lt;br /&gt;
 sf_surface_physics                  = -1,    -1,&lt;br /&gt;
 radt                                = 15,    15,&lt;br /&gt;
 bldt                                = 0,     0,&lt;br /&gt;
 cudt                                = 0,     0,&lt;br /&gt;
 icloud                              = 1,&lt;br /&gt;
 num_land_cat                        = 21,&lt;br /&gt;
 sf_urban_physics                    = 0,     0,&lt;br /&gt;
 fractional_seaice                   = 1,&lt;br /&gt;
 /&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;fdda&lt;br /&gt;
 /&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;dynamics&lt;br /&gt;
 hybrid_opt                          = 2,&lt;br /&gt;
 w_damping                           = 0,&lt;br /&gt;
 diff_opt                            = 2,      2,&lt;br /&gt;
 km_opt                              = 4,      4,&lt;br /&gt;
 diff_6th_opt                        = 0,      0,&lt;br /&gt;
 diff_6th_factor                     = 0.12,   0.12,&lt;br /&gt;
 base_temp                           = 290.&lt;br /&gt;
 damp_opt                            = 3,&lt;br /&gt;
 zdamp                               = 5000.,  5000.,&lt;br /&gt;
 dampcoef                            = 0.2,    0.2,&lt;br /&gt;
 khdif                               = 0,      0,&lt;br /&gt;
 kvdif                               = 0,      0,&lt;br /&gt;
 non_hydrostatic                     = .true., .true.,&lt;br /&gt;
 moist_adv_opt                       = 1,      1,&lt;br /&gt;
/ scalar_adv_opt                      = 1,      1,&lt;br /&gt;
/ gwd_opt                             = 1,      0,&lt;br /&gt;
 /&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;bdy_control&lt;br /&gt;
 spec_bdy_width                      = 5,&lt;br /&gt;
 specified                           = .true.&lt;br /&gt;
 /&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;grib2&lt;br /&gt;
 /&lt;br /&gt;
&lt;br /&gt;
&amp;amp;diags&lt;br /&gt;
 diag_nwp2 = 1&lt;br /&gt;
 /&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;namelist_quilt&lt;br /&gt;
 nio_tasks_per_group = 0,&lt;br /&gt;
 nio_groups = 1,&lt;br /&gt;
 /&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O bien, puede descargarlo directamente para continuar con el ejercicio: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://raw.githubusercontent.com/nlhpc-training/Tutorial-WRF/main/namelist.input&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ejecución de real.exe ==&lt;br /&gt;
&lt;br /&gt;
En este punto, debemos linkear los datos &#039;&#039;&#039;&#039;&#039;met_em&#039;&#039;&#039;&#039;&#039; resultantes del proceso &amp;lt;code&amp;gt;metgrid.exe&amp;lt;/code&amp;gt; y posteriormente ejecutar el comando &amp;lt;code&amp;gt;real.exe&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/TEST_WRF/WRF-4.1.3/run/&lt;br /&gt;
ln -s ~/TEST_WRF/WPS-4.2/met_em.d01.2021-01-30_1* .&lt;br /&gt;
srun real.exe &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Realizar un Script de ejecución de WRF, de tal manera que se pueda enviar esta tarea al gestor SLURM para su procesamiento ==&lt;br /&gt;
&lt;br /&gt;
Creamos el archivo &amp;lt;code&amp;gt;lanza-wrf-sh&amp;lt;/code&amp;gt; y lo editamos de la siguiente manera.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#---------------Script SBATCH - NLHPC ----------------&lt;br /&gt;
#SBATCH -J TestJob_wrf&lt;br /&gt;
#SBATCH -p main&lt;br /&gt;
#SBATCH -n 20&lt;br /&gt;
#SBATCH --ntasks-per-node=20&lt;br /&gt;
#SBATCH -c 1&lt;br /&gt;
#SBATCH --mem-per-cpu=2300&lt;br /&gt;
#SBATCH --mail-user=usuario@nlhpc.cl&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH -o asd_%j.out&lt;br /&gt;
#SBATCH -e asd_%j.err&lt;br /&gt;
&lt;br /&gt;
#-----------------Toolchain---------------------------&lt;br /&gt;
ml purge&lt;br /&gt;
ml intel/2019b&lt;br /&gt;
# ----------------Modulos----------------------------&lt;br /&gt;
ml  WPS/4.2-dmpar   WRF/4.1.3-dmpar  &lt;br /&gt;
# ----------------Comando--------------------------&lt;br /&gt;
cd ~/TEST_WRF/WRF-4.1.3/run/&lt;br /&gt;
time wrf.exe&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O bien, podemos descargarlo para continuar con el ejercicio.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://raw.githubusercontent.com/nlhpc-training/Tutorial-WRF/main/lanza-wrf.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finalmente ejecutamos este script mediante el comando sbatch&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch lanza-wrf.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enlaces de interés ==&lt;br /&gt;
University Corporation for Atmospheric Research UCAR: https://www.mmm.ucar.edu/&amp;lt;br&amp;gt;&lt;br /&gt;
National Oceanic and Atmospheric Administrarion NOAA: https://esrl.noaa.gov/gsd/wrfportal/&amp;lt;br&amp;gt;&lt;br /&gt;
NOAA (Tutoriales WRF): https://esrl.noaa.gov/gsd/wrfportal/html-tutorial.html&amp;lt;br&amp;gt;&lt;br /&gt;
NCEP Central Operations (Descarga de datos): https://www.nco.ncep.noaa.gov/pmb/products/gfs/&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jmorales</name></author>
	</entry>
	<entry>
		<id>https://wiki.nlhpc.cl/index.php?title=Como_abrir_un_ticket&amp;diff=756</id>
		<title>Como abrir un ticket</title>
		<link rel="alternate" type="text/html" href="https://wiki.nlhpc.cl/index.php?title=Como_abrir_un_ticket&amp;diff=756"/>
		<updated>2024-04-29T21:36:08Z</updated>

		<summary type="html">&lt;p&gt;Jmorales: /* Otras fuentes de ayuda */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introducción ==&lt;br /&gt;
La intención del siguiente documento es la de indicar algunas buenas prácticas al momento de solicitar al equipo del NLHPC soporte con distintas situaciones que pueda enfrentar, con la intención de que se otorgue la información necesaria de su requerimiento para lograr una atención adecuada por parte de nuestro equipo de trabajo.&lt;br /&gt;
&lt;br /&gt;
== A modo de resumen ==&lt;br /&gt;
&lt;br /&gt;
Siempre considere lo siguiente a la hora de solicitar soporte:&lt;br /&gt;
&lt;br /&gt;
* Indique un &#039;&#039;asunto&#039;&#039; o &#039;&#039;subject&#039;&#039; específico y claro&lt;br /&gt;
* Datos importantes a considerar en su mensaje&lt;br /&gt;
** Solicitud clara&lt;br /&gt;
*** Explicación de qué desea lograr&lt;br /&gt;
*** Mención de qué pasos ha seguido para obtener su resultado actual&lt;br /&gt;
** Sobre la ejecución de tareas&lt;br /&gt;
*** Indicar Job ID&lt;br /&gt;
*** Indicar script utilizado&lt;br /&gt;
*** Rutas de archivos de entradas y scripts&lt;br /&gt;
** Sobre la instalación de software&lt;br /&gt;
*** Indicar URL de página oficial&lt;br /&gt;
*** Versión requerida&lt;br /&gt;
*** Otorgar Licencia de ser requerida&lt;br /&gt;
* Tickets cerrados&lt;br /&gt;
** No contestar mensajes cerrados, a menos que su requerimiento no haya sido resuelto&lt;br /&gt;
** Abrir tickets nuevos, en vez de reabrir tickets antiguos&lt;br /&gt;
&lt;br /&gt;
Si necesita soporte por temas distintos, agradecemos nos envíe correos independientes para poder hacer un seguimiento adecuado a cada una de sus solicitudes. Esto también nos permitirá asignar distintas tareas entre el personal de nuestro equipo.&lt;br /&gt;
&lt;br /&gt;
== Qué es un ticket ==&lt;br /&gt;
&#039;&#039;Un ticket es un correo que se envía a soporte@nlhpc.cl el que será atendido por nuestro personal.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Un ticket es la representación de un requerimiento enviado por el usuario mediante un correo electrónico a una casilla de correo específica.&lt;br /&gt;
&lt;br /&gt;
El ticket es recibido en un sistema que permite organizar por tipo de requerimiento, nivel de urgencia y eventual asignación al equipo de trabajo adecuado.&lt;br /&gt;
&lt;br /&gt;
Mediante el sistema de gestión de tickets, se responderá a su requerimiento y nos pondremos en contacto con el solicitante. &lt;br /&gt;
&lt;br /&gt;
A efectos prácticos, el usuario verá una respuesta de correo en su casilla, y si tiene comentarios u observaciones sobre el servicio otorgado, bastará que responda dicho correo.&lt;br /&gt;
&lt;br /&gt;
=== Otras vías de comunicación ===&lt;br /&gt;
&lt;br /&gt;
En el caso que se reciban requerimientos por medios no convencionales o informales, solicitaremos al usuario que debe enviar un mensaje a soporte@nlhpc.cl con su requerimiento para continuar con el procedimiento formal de creación de ticket, lo que permite la gestión correcta de los distintos requerimientos que recibimos.&lt;br /&gt;
&lt;br /&gt;
== Qué información debe tener un ticket ==&lt;br /&gt;
&lt;br /&gt;
=== Asunto o Subject ===&lt;br /&gt;
&#039;&#039;Ser claro y específico en el requerimiento le permitirá tener una respuesta más precisa a su requerimiento.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Cuando un usuario realiza una solicitud para obtener asistencia, debe considerar que a mayor cantidad de información útil que otorgue, más acertada y pronta será la respuesta que recibirá.&lt;br /&gt;
&lt;br /&gt;
La primera información que se lee es el &#039;&#039;asunto&#039;&#039; o &#039;&#039;subject&#039;&#039; del correo electrónico, por lo que recomendamos que utilice un descriptor que englobe su solicitud.&lt;br /&gt;
&lt;br /&gt;
Algunos buenos ejemplos de un buen &#039;&#039;asunto&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Problema de falta de memoria en Job ID 2504311&lt;br /&gt;
* Ejecución de tarea en partición SLIMS con entorno virtual de Python&lt;br /&gt;
* Cómo copiar archivos desde mi computadora al cluster&lt;br /&gt;
* Solicitud de instalación de software FOOBAR versión 1.2.3&lt;br /&gt;
&lt;br /&gt;
Algunos malos ejemplos:&lt;br /&gt;
&lt;br /&gt;
* Ayuda&lt;br /&gt;
* Error&lt;br /&gt;
* &#039;&#039;Asunto dejado vacío por el propio usuario&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Solicitud de instalación de software ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;¿Ya ha buscado ejecutando &amp;lt;code&amp;gt;ml avail&amp;lt;/code&amp;gt;?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Actualmente contamos con una gran cantidad de software disponible en el clúster.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
En el caso de requerir la instalación de un nuevo software, indicar:&lt;br /&gt;
&lt;br /&gt;
* Nombre del software&lt;br /&gt;
* Versión o versiones requeridas&lt;br /&gt;
* URL oficial para la obtención del código fuente o página oficial&lt;br /&gt;
* Si se requiere licencia, el usuario debe otorgar la licencia para su uso&lt;br /&gt;
&lt;br /&gt;
=== Solicitud de verificación de tarea ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Recuerde visitar nuestro [https://wiki.nlhpc.cl/Generador%20Scripts Generador de Scripts] como también nuestra [https://wiki.nlhpc.cl Wiki] para conocer cómo editar scripts y ejecutarlos de manera exitosa.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Las tareas que los usuarios lanzan pueden presentar distintas situaciones, como subutilización de recursos, fallas de ejecución, problemas de módulos, asignaciones incorrectas y otras situaciones.&lt;br /&gt;
&lt;br /&gt;
En el caso de requerir soporte con alguna tarea o información sobre cómo ejecutar tareas en el cluster, recomendamos indicar:&lt;br /&gt;
&lt;br /&gt;
* Nombre del usuario que ejecuta la tarea&lt;br /&gt;
* Nombre del script que utiliza&lt;br /&gt;
* Ruta de la ubicación del script&lt;br /&gt;
* Software utilizado&lt;br /&gt;
* Si ha ejecutado ya su tarea&lt;br /&gt;
** Job ID de la tarea ejecutada si aplica&lt;br /&gt;
** Archivos de salida/error obtenidos si ha ejecutado su tarea&lt;br /&gt;
** Resultado obtenido&lt;br /&gt;
** Pasos seguidos para obtener el resultado actual&lt;br /&gt;
** Resultado esperado&lt;br /&gt;
&lt;br /&gt;
=== Problemas de acceso al clúster ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tenemos un vídeo tutorial de acceso vía SSH en nuestro [https://www.youtube.com/watch?v=TSUQpsttRio canal de youtube].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Cuando ocurren problemas de acceso, lo principal es poder identificar:&lt;br /&gt;
&lt;br /&gt;
* Usuario que se quiere conectar&lt;br /&gt;
* Software utilizado para conectarse&lt;br /&gt;
* IPv4 desde la cual se está conectado (puede consultarlo [https://miip.cl/ aquí])&lt;br /&gt;
* Error obtenido&lt;br /&gt;
&lt;br /&gt;
Con lo anterior podremos descartar problemas de comunicación, credenciales y validez de la cuenta.&lt;br /&gt;
&lt;br /&gt;
=== Otros requerimientos ===&lt;br /&gt;
&lt;br /&gt;
Si tiene algún otro tipo de requerimiento, siempre considere indicar:&lt;br /&gt;
&lt;br /&gt;
* Usuario utilizado&lt;br /&gt;
* Pasos seguidos para obtener el resultado actual&lt;br /&gt;
* Resultado esperado&lt;br /&gt;
* Aplicaciones usadas y versiones de las mismas&lt;br /&gt;
* Otros datos que considere útiles que puedan ayudar a dar una mejor respuesta&lt;br /&gt;
&lt;br /&gt;
== Cierre de tickets ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Agradecemos no responda los tickets que indiquen que se han cerrado. En vez de eso, recuerde siempre enviar un nuevo correo.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Una vez que se ha otorgado una respuesta que satisfaga el requerimiento del usuario, solicitaremos no contestar los correos enviados.&lt;br /&gt;
&lt;br /&gt;
De esta manera, el ticket será cerrado.&lt;br /&gt;
&lt;br /&gt;
Si es necesario, el usuario puede volver a enviar &#039;&#039;&#039;un nuevo correo&#039;&#039;&#039; lo que creará una nueva solicitud.&lt;br /&gt;
&lt;br /&gt;
Esto último permitirá gestionar de mejor manera los requerimientos que se atienden, verificar las tareas en las que se invierte tiempo en nuestros usuarios, como también verificar los distintos temas que se abordan.&lt;br /&gt;
&lt;br /&gt;
En el caso de que un requerimiento sea similar a uno anterior, también es una buena práctica enviar &#039;&#039;&#039;un nuevo correo&#039;&#039;&#039; para crear un nuevo ticket.&lt;br /&gt;
&lt;br /&gt;
Si responde un ticket antiguo, esto nos impedirá gestionar de mejor manera las tareas como también el reporte de las mismas.&lt;br /&gt;
&lt;br /&gt;
== Otras fuentes de ayuda ==&lt;br /&gt;
&lt;br /&gt;
Disponemos, además de una [https://wiki.nlhpc.cl Wiki] en donde podrá leer información importante sobre características del clúster y su uso. &lt;br /&gt;
&lt;br /&gt;
También realizamos cursos básicos, avanzados y específicos, los cuales se pueden ver en nuestra página de [https://www.nlhpc.cl/eventos eventos].&lt;br /&gt;
&lt;br /&gt;
Y nuestro canal de [https://www.youtube.com/@nlhpc_chile YouTube] donde podrá ver cursos anteriores y tutoriales que nuestro equipo prepara con el fin de entregar las herramientas adecuadas para el uso del Cluster Guacolda-Leftraru Epu.&lt;/div&gt;</summary>
		<author><name>Jmorales</name></author>
	</entry>
	<entry>
		<id>https://wiki.nlhpc.cl/index.php?title=Tutorial_de_acceso_a_Leftraru_via_SSH&amp;diff=755</id>
		<title>Tutorial de acceso a Leftraru via SSH</title>
		<link rel="alternate" type="text/html" href="https://wiki.nlhpc.cl/index.php?title=Tutorial_de_acceso_a_Leftraru_via_SSH&amp;diff=755"/>
		<updated>2024-04-29T19:15:18Z</updated>

		<summary type="html">&lt;p&gt;Jmorales: /* Nodos Login */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Accediendo desde un equipo Linux o Mac OSX ==&lt;br /&gt;
Para realizar una conexión desde un sistema GNU/Linux o MacOSX, use el comando SSH (ejemplo con usuario &amp;quot;prueba&amp;quot;) e indicar el uso del puerto &#039;&#039;&#039;4603&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Por ejemplo, el usuario Dave Bowman (nombre de usuario &#039;&#039;dbowman&#039;&#039;) accede al clúster ejecutando:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ssh -p 4603 dbowman@leftraru.nlhpc.cl&lt;br /&gt;
dbowman@leftraru.nlhpc.cl password: &lt;br /&gt;
&lt;br /&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
dbowman@leftraru2:~$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Guardar información de la sesión ===&lt;br /&gt;
&lt;br /&gt;
Es posible almacenar los datos de conexión bajo el archivo &#039;&#039;&#039;~/.ssh/config&#039;&#039;&#039;, lo que nos otorgará un poco más de flexibilidad a la hora de conectarnos.&lt;br /&gt;
&lt;br /&gt;
Por ejemplo, el usuario Dave Bowman edita el archivo mencionado con:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi ~/.ssh/config&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
y agrega la siguiente información:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Host leftraru&lt;br /&gt;
    Hostname leftraru.nlhpc.cl&lt;br /&gt;
    User dbwoman&lt;br /&gt;
    Port 4603&lt;br /&gt;
    UpdateHostKeys no&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El parámetro &#039;&#039;&#039;Host&#039;&#039;&#039; indica el valor &#039;&#039;&#039;leftraru&#039;&#039;&#039; como nombre de conexión. Este valor podrá ser utilizado directamente con el comando &#039;&#039;&#039;ssh&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
El valor &#039;&#039;&#039;Hostname&#039;&#039;&#039; indica la dirección a la cual nos queremos conectar (puedes indicar una IP si así lo deseas).&lt;br /&gt;
&lt;br /&gt;
Los parámetros &#039;&#039;&#039;User&#039;&#039;&#039; y &#039;&#039;&#039;Port&#039;&#039;&#039; ya los hemos visto.&lt;br /&gt;
&lt;br /&gt;
Y por último el parámetro &#039;&#039;&#039;UpdateHostKeys&#039;&#039;&#039; indica si deberá aceptar o no los cambios de llaves en el servidor. Por seguridad se recomienda el valor &#039;&#039;&#039;no&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Una vez que se edito esta información, nuestro usuario podrá acceder al clúster con tan solo escribir el comando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ssh leftraru&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Es posible tener una gran cantidad de entradas en nuestro archivo .ssh/config ====&lt;br /&gt;
&lt;br /&gt;
Un ejemplo del archivo de configuración con más cantidad de entradas sería similar a:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Host leftraru&lt;br /&gt;
    Hostname leftraru.nlhpc.cl&lt;br /&gt;
    User dbwoman&lt;br /&gt;
    Port 4603&lt;br /&gt;
    UpdateHostKeys no&lt;br /&gt;
&lt;br /&gt;
Host l1&lt;br /&gt;
    Hostname leftraru1.nlhpc.cl&lt;br /&gt;
    User dbwoman&lt;br /&gt;
    Port 4603&lt;br /&gt;
    UpdateHostKeys no&lt;br /&gt;
&lt;br /&gt;
Host l2&lt;br /&gt;
    Hostname leftraru2.nlhpc.cl&lt;br /&gt;
    User dbwoman&lt;br /&gt;
    Port 4603&lt;br /&gt;
    UpdateHostKeys no&lt;br /&gt;
&lt;br /&gt;
Host HAL&lt;br /&gt;
    Hostname 127.0.0.1&lt;br /&gt;
    User dbwoman&lt;br /&gt;
    Port 9000&lt;br /&gt;
    UpdateHostKeys no&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con dicha configuración, el usuario podría acceder usando uno de los siguientes comandos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh l1&lt;br /&gt;
ssh l2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Accediendo desde un equipo Windows ==&lt;br /&gt;
Para conectar desde sistemas Windows, se recomienda usar Putty como cliente SSH.&lt;br /&gt;
&lt;br /&gt;
Como vemos en el ejemplo se indican los campos:&lt;br /&gt;
&lt;br /&gt;
* Hostname: dbowman@leftraru.nlhpc.cl&lt;br /&gt;
* Puerto: 4603&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Putty-dbowman-hostname.png|no]]&lt;br /&gt;
&lt;br /&gt;
Y se realiza la conexión haciendo &#039;&#039;click&#039;&#039; en el botón inferior &#039;&#039;Open&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Si la conexión es exitosa podremos ingresar el usuario y contraseña.&lt;br /&gt;
&lt;br /&gt;
En este ejemplo, es el usuario Dave Bowman (dbowman) quien intenta conectarse al clúster.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Putty-dbowman-user-ssh.png|no]]&lt;br /&gt;
&lt;br /&gt;
Recuerda que al momento de ingresar tu contraseña, esta no será desplegada en pantalla.&lt;br /&gt;
&lt;br /&gt;
=== Guardar nuestra sesión ===&lt;br /&gt;
&lt;br /&gt;
Una vez que se ingresa los valores de &#039;&#039;&#039;Hostname&#039;&#039;&#039; y &#039;&#039;&#039;Puerto&#039;&#039;&#039;, es posible almacenar dicha información indicando un nombre en el campo &#039;&#039;&#039;Saved Sessions&#039;&#039;&#039; y presionando el botón &#039;&#039;&#039;Save&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
La próxima vez que necesitemos acceder al cluster, bastará hacer doble &#039;&#039;click&#039;&#039; sobre la sesión que necesitemos abrir.&lt;br /&gt;
&lt;br /&gt;
Por ejemplo en este caso es posible ver que las siguientes sesiones están almacenadas:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Archivo:Putty-saved-sessions.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Default&lt;br /&gt;
* L1&lt;br /&gt;
* L2&lt;br /&gt;
* Leftraru&lt;br /&gt;
&lt;br /&gt;
== Acceso utilizando llaves (Recomendado) ==&lt;br /&gt;
La autenticación con clave pública es un método de seguridad alternativo a las contraseñas, mucho más difícil de hackear y, por lo tanto, más seguro. Este método de autenticación es recomendable usarlo para acceder a servidores.&lt;br /&gt;
&lt;br /&gt;
La clave SSH consiste en la generación de un par de claves que proporcionan dos largas cadenas de caracteres, una pública y una privada. La clave pública se instala en cualquier servidor y luego se desbloquea mediante la conexión con un cliente SSH que hace uso de la clave privada. Si las dos claves coinciden, el servidor SSH permite el acceso sin necesidad de utilizar una contraseña. No obstante, para añadir una capa de seguridad adicional, siempre podemos aumentar la protección de la clave privada usando una contraseña.&lt;br /&gt;
&lt;br /&gt;
Entonces nuestro usuario Dave Bowman creará una llave en su computadora personal para copiarla en el clúster siguiendo los pasos que se indican a continuación:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[dave@HAL ~]$ ssh-keygen&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tras ejecutar el comando obtendremos la siguiente respuesta:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Generating public/private ed25519 key pair.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Una vez ejecutada la instrucción para generar las claves, se nos pedirá que indiquemos la ruta en la que queremos almacenar la clave:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Enter file in which to save the key (/home/dave/.ssh/id_rsa):&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tras indicar la ruta en la que se almacenará la clave, lo siguiente que tendremos que hacer es indicar una contraseña (puede dejar vacío para acceso directo):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Enter passphrase (empty for no passphrase):&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finalmente debemos copiar nuestra llave pública al cluster:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[dave@HAL ~] ssh-copy-id -p 4603 dbowman@leftraru.nlhpc.cl&lt;br /&gt;
Number of key(s) added:        1&lt;br /&gt;
&lt;br /&gt;
Now try logging into the machine, with:   &amp;quot;ssh -p &#039;4603&#039; &#039;dbowman@leftraru.nlhpc.cl&#039;&amp;quot;&lt;br /&gt;
and check to make sure that only the key(s) you wanted were added.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora ya podremos conectarnos directamente con nuestras llaves:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[dave@HAL ~] ssh -p 4603 dbowman@leftraru.nlhpc.cl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Cambiar contraseña ==&lt;br /&gt;
Para cambiar la contraseña de usuario, es necesario que esta cumpla con ciertos requisitos como por ejemplo:&lt;br /&gt;
&lt;br /&gt;
* El mínimo de caracteres son 10.&lt;br /&gt;
* Debe ser alfanumérica.&lt;br /&gt;
* Tener 3 caracteres especiales (al menos 1 mayúscula – 1 minúscula y 1 número).&lt;br /&gt;
&lt;br /&gt;
Para ejecutar esta acción, utilice el siguiente comando:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[dbowman@leftraru1 ~]$ passwd&lt;br /&gt;
&lt;br /&gt;
Changing password for user dbowman.&lt;br /&gt;
(current) LDAP Password: &amp;lt;- Ingrese su contraseña actual.&lt;br /&gt;
&lt;br /&gt;
New password: ********* &amp;lt;- Ingrese su nueva contraseña.&lt;br /&gt;
&lt;br /&gt;
Retype new password: Reingrese su nueva contraseña.&lt;br /&gt;
&lt;br /&gt;
passwd: all authentication tokens updated successfully.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Confirmación de cambio de clave exitoso, le recomendamos cerrar su sesión e ingresar nuevamente a nuestro sistema ingresando su nueva contraseña.&lt;br /&gt;
&lt;br /&gt;
== Conexión a nodos actualmente utilizados ==&lt;br /&gt;
Algunas veces, por distintas circunstancias, sería deseable tener la posibilidad de ingresar al nodo donde se estén ejecutando nuestras tareas con tal de verificar su estado, comprobar ciertos valores, etc.&lt;br /&gt;
&lt;br /&gt;
Pensado en la comodidad de los usuarios, se ha implementado un módulo del gestor que colas SLURM que permite esta funcionalidad. Por tanto, el login será permitido en todas aquellas máquinas donde actualmente exista un trabajo nuestro.&lt;br /&gt;
&lt;br /&gt;
Por ejemplo; nuestra tarea de prueba &#039;tarea_test.sh&#039; ha sido enviada a la cola y ha ingresado con el ID &#039;3469576&#039;. Slurm reservó el nodo &#039;cn053&#039; para llevar a cabo la ejecución, por tanto el usuario tiene permitido el ingreso mediante ssh al nodo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
leftraru$ sbatch tarea_test.sh&lt;br /&gt;
leftraru$ squeue&lt;br /&gt;
&lt;br /&gt;
 JOBID    PARTITION     NAME     USER   ST    TIME  NODES  NODELIST(REASON)&lt;br /&gt;
3469576    general      Prueba    test   R     1:57    1        sn007&lt;br /&gt;
&lt;br /&gt;
leftraru$ ssh sn007&lt;br /&gt;
Last login: today 2016 from leftraru.nlhpc.cl&lt;br /&gt;
sn007$&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tenga en cuenta que aún se mantiene la restricción de ingreso para el resto de los nodos:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
leftraru$ ssh sn001&lt;br /&gt;
Access denied: user test (uid=000) has no active jobs on this node.&lt;br /&gt;
leftraru$&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nodos Login ==&lt;br /&gt;
Aunque disponemos de 4 nodos para el acceso al clúster por parte de los usuarios, en general, hay que usar el nombre:&lt;br /&gt;
&lt;br /&gt;
* leftraru.nlhpc.cl&lt;br /&gt;
&lt;br /&gt;
A la hora de conectarse por SSH al clúster. Al acceder a esa dirección se consigue que los usuarios queden conectados aleatoriamente a los nodos login.&lt;br /&gt;
&lt;br /&gt;
Pero si resultara necesario, se puede acceder a un nodo login específicamente usando su nombre a la hora de realizar la conexión SSH:&lt;br /&gt;
&lt;br /&gt;
* leftraru1.nlhpc.cl&lt;br /&gt;
* leftraru2.nlhpc.cl&lt;br /&gt;
&lt;br /&gt;
== Notas ==&lt;br /&gt;
Debido a que Leftraru balancea la carga de los nodos Login se debe evitar el uso de screen, ya que no se garantiza el acceso al mismo nodo que tenía la sesión screen abierta una vez que el usuario cierra su sesión.&lt;br /&gt;
&lt;br /&gt;
Un usuario sólo podrá acceder por ssh a los nodos logins. En el caso de querer acceder a un nodo de cómputo, el usuario deberá tener al menos una tarea SLURM en ejecución en el nodo al cual necesite acceder, y deberá considerar que si dicha tarea finaliza, su sesión será cerrada del nodo. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Si falla muchas veces el intento de login por SSH o genera muchas conexiones, su IP podría ser bloqueada. Contacte por correo electrónico con Soporte indicando información relevante (más información [[Como_abrir_un_ticket#Problemas_de_acceso_al_clúster|aquí]]) si presenta problemas de conexión: &#039;&#039;&#039; &#039;&#039;&#039;[mailto:soporte@nlhpc.cl soporte@nlhpc.cl]&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Jmorales</name></author>
	</entry>
	<entry>
		<id>https://wiki.nlhpc.cl/index.php?title=SISTEMA_GESTOR_DE_RECURSOS&amp;diff=754</id>
		<title>SISTEMA GESTOR DE RECURSOS</title>
		<link rel="alternate" type="text/html" href="https://wiki.nlhpc.cl/index.php?title=SISTEMA_GESTOR_DE_RECURSOS&amp;diff=754"/>
		<updated>2024-04-29T19:14:32Z</updated>

		<summary type="html">&lt;p&gt;Jmorales: /* Estado de nodos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== SLURM Workload Manager ==&lt;br /&gt;
Es un sistema de programación de trabajos y gestión de clústeres de código abierto, tolerante a fallas y altamente escalable para clústeres Linux grandes y pequeños.&lt;br /&gt;
&lt;br /&gt;
Como administrador de carga de trabajo de clúster, Slurm tiene tres funciones clave. Primero, asigna acceso exclusivo y / o no exclusivo a los recursos (nodos de cómputo) a los usuarios durante un período de tiempo para que puedan realizar el trabajo. En segundo lugar, proporciona un marco para iniciar, ejecutar y monitorear el trabajo (normalmente un trabajo paralelo) en el conjunto de nodos asignados. Finalmente, arbitra la contención de recursos mediante la gestión de una cola de trabajo pendiente.&lt;br /&gt;
&lt;br /&gt;
SLURM es el gestor de colas instalado en muchos de los súper computadores del [https://www.top500.org/ TOP500], y también en el clúster del NLHPC. Si Ud. quiere lanzar tareas dentro de Leftaru, debe hacerlo a través de Slurm.&lt;br /&gt;
&lt;br /&gt;
== Conceptos clave ==&lt;br /&gt;
SLURM gestiona trabajos de usuario que tienen las siguientes características clave:&lt;br /&gt;
&lt;br /&gt;
* Conjunto de recursos solicitados:&lt;br /&gt;
** Número de recursos informáticos: nodos (incluidas todas sus CPUs y núcleos) o CPUs (incluidos todos sus núcleos) o solo núcleos&lt;br /&gt;
** Cantidad de memoria: por nodo o por CPU (lógica)&lt;br /&gt;
** Tiempo necesario para que las tareas del usuario completen su trabajo&lt;br /&gt;
* Una partición de nodo solicitada (cola de trabajos)&lt;br /&gt;
* Un nivel de calidad de servicio (QoS) solicitado que otorga a los usuarios accesos específicos&lt;br /&gt;
* Una cuenta solicitada con recursos limitados&lt;br /&gt;
&lt;br /&gt;
De manera predeterminada, los usuarios envían trabajos a una partición particular (marcada como tal para todos los usuarios) y bajo una cuenta particular (preestablecida por usuario).&lt;br /&gt;
&lt;br /&gt;
== Particiones SLURM ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 60%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nombre Particion&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nodos&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;CPUs&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;RAM&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Descripción&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;general&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;48&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;44&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;187GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;largemem&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;9&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;44&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;765GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;v100&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;44&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;187GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;4 GPUs Nvidia Tesla V100.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;mi100&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;128&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;502GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2 GPUs AMD Instinct MI100.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;slims&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;132&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;20&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;46GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;debug&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;4&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;20&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;59GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Destinados a pruebas de máximo 30 minutos.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Introducción a los comandos slurm ==&lt;br /&gt;
&amp;lt;table class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 60%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Comando SLURM&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Descripción&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;srun&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ejecutar un comando en nodos de cómputo asignados.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;sbatch&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;presentar un script de trabajo&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;squeue&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Mostrar estado de los trabajos en la cola.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;scancel&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;eliminar un trabajo.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;sinfo&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Muestra el estado de los nodos de cómputo.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
Estos son los comandos básicos utilizados para realizar la mayoría de las operaciones básicas con SLURM.&lt;br /&gt;
&lt;br /&gt;
=== Estado de nodos ===&lt;br /&gt;
Para consultar el uso de nuestra infraestructura y qué particiones están más libres, le recomendamos el comando sinfo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# sinfo&lt;br /&gt;
PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST&lt;br /&gt;
all        up    infinite    16     mix   cn[001,005-006,010,034-035,037,041,045,050,057,108,121],sn[012,016,037]&lt;br /&gt;
all        up    infinite    95     alloc cn[011-033,038-044,046-049,071-120],cnf[001-004],sn[001-011,038-041,043-044]&lt;br /&gt;
all        up    infinite    33     idle  fn[001-009],gn[001-002],sn[018-035,045-048]&lt;br /&gt;
slims*     up    infinite    18     mix   cn[001,003,005-006,010,034-035,043,045,050,057,070,079,085,095,098,108,121]&lt;br /&gt;
slims*     up    infinite    75     alloc cn[007-009,011-033,038-040,051-056,058-069,071-078,086-094,122-128],cnf[001-004]&lt;br /&gt;
debug      up    infinite    4      idle  leftraru[1-2]&lt;br /&gt;
general    up    infinite    4      mix   sn[012,016,037,042]&lt;br /&gt;
general    up    infinite    22     alloc sn[001-011,013-015,017,036,038-041,043-044]&lt;br /&gt;
general    up    infinite    22     idle  sn[018-035,045-048]&lt;br /&gt;
largemem   up    infinite    9      idle  fn[001-009]&lt;br /&gt;
v100       up    infinite    2      idle  gn[001-002]&lt;br /&gt;
mi100      up    infinite    1      idle  gna001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fijándose en el texto resaltado de la salida del comando sinfo, se puede comprobar que en la partición slims hay 112 nodos que están completamente ocupados (estado alloc), 20 nodos que están parcialmente ocupados (mix) y ninguno libre (idle); por otro lado, en la partición general hay 22 nodos completamente ocupados, 4 parcialmente ocupados y 22 libres. Dado este escenario, está claro que debería de lanzar sus ejecuciones en los nodos de la partición general, por las razones anteriormente expuestas.&lt;br /&gt;
&lt;br /&gt;
Para lanzar en la partición general, debe tener en cuenta que tiene que indicar en su script que se use dicha partición en vez de, probablemente, slims. Por supuesto, en esta partición cambian las características técnicas, se pasan a tener 44 cores por nodo (en vez de 20 en slims) y una capacidad RAM de 187GB (en vez de 46GB en slims). Puede ver más información de las particiones en este link(agregar link), donde podrá revisar que con la inclusión de Guacolda hemos añadido nodos con hasta 765GB de memoria RAM y nodos con GPUs Nvidia Tesla V100 y AMD Instinct MI100 .&lt;br /&gt;
&lt;br /&gt;
Para ver los nodos disponibles y poder determinar en que partición lanzar los trabajos se recomienda utilizar el siguiente comando.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;[prueba@leftraru1 ~]$ sinfo -o &amp;quot;%10P %6D %10t %10m %c&amp;quot; -t idle| egrep &amp;quot;PARTITION|slims|general|largemem|v100&amp;quot;&lt;br /&gt;
PARTITION  NODES  STATE      MEMORY     CPUS&lt;br /&gt;
slims*      32    idle       46000       20&lt;br /&gt;
general     2     idle       187000      44&lt;br /&gt;
largemem    7     idle       765000      44&lt;br /&gt;
v100        1     idle       187000      44 &lt;br /&gt;
mi100       1     idle       515047      128 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
El comando anterior muestra que slims tiene 32 nodos libres, en este caso es recomendado lanzar en en slims para evitar que el trabajo quede en cola por falta de recursos en otros nodos.&lt;br /&gt;
&lt;br /&gt;
Otro Ejemplo, se muestra sólo una partición específica&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;[prueba@leftraru1 ~]$ sinfo -p slims&lt;br /&gt;
PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST&lt;br /&gt;
slims*     up    infinite    24    mix     cn[015,033,036-038,041-050,053-054,075-080,104]&lt;br /&gt;
slims*     up    infinite    76    alloc   cn[001-009,019-032,039-040,051-090,093-094,097-099],cnf[001-004]&lt;br /&gt;
slims*     up    infinite    32    idle    cn[010-014,016-018,034-035,056-058,073-074,091-100,120-122,125-127]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Comprobación del estado de tareas ===&lt;br /&gt;
squeue - Muestra el estatus de los trabajos&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;squeue                  # tus trabajos&lt;br /&gt;
squeue -u &amp;amp;lt;username&amp;amp;gt;    # trabajos por usuario &amp;amp;lt;username&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
squeue: Comprobar estados de los trabajos&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;&amp;quot; class=&amp;quot;mw-highlight mw-content-ltr&amp;quot; dir=&amp;quot;ltr&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  JOBID        PARTITION     NAME     USER    ST       TIME  	NODES 	NODELIST(REASON)&lt;br /&gt;
13951858_1     general	     test1    test1    R   1-18:35:14      2    cn[009-010]&lt;br /&gt;
13951857_2     general       test2    test1    R   1-18:36:11      2    cn[099-100]&lt;br /&gt;
13956453       gpu           test3    test3    R   1-03:42:08      1    cn039&lt;br /&gt;
13956449       largemem      test4    test4    R   1-05:42:08      1    cn044&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puede utilizar squeue para saber el estado de una o varias de sus tareas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ squeue -o &amp;quot;%.15i %.6P %.8j %.20S %.11M %.11L %.20V %.10Q %.4C %.2D %.6m&amp;quot; -S -t,-Q&lt;br /&gt;
 JOBID   PARTIT     NAME      START_TIME          TIME      TIME_LEFT     SUBMIT_TIME       PRIORITY CPUS NO MIN_ME&lt;br /&gt;
10837561 general   TEST1   2018-06-18T18:51:01    19:00:31  2-04:59:29  2018-06-18T18:51:01  119972    1  1  1000M&lt;br /&gt;
10838562 general   TEST2   2018-06-19T11:30:47    2:20:45   2-21:39:15  2018-06-19T11:30:46  119946    1  1  1000M&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
para mas opciones puede revisar con el comando [https://slurm.schedmd.com/squeue.html man squeue] las opciones restantes.&lt;br /&gt;
&lt;br /&gt;
=== Códigos de ESTADO de los trabajos ===&lt;br /&gt;
&lt;br /&gt;
Los trabajos suelen pasar por varios estados durante su ejecución. Los estados típicos son PENDIENTE, EN EJECUCIÓN, SUSPENDIDO, FINALIZANDO y TERMINADO. A continuación se explica cada estado.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;BF&#039;&#039;&#039; BOOT_FAIL&lt;br /&gt;
    Trabajo finalizado debido a un fallo de arranque, normalmente debido a un fallo de hardware (por ejemplo, no se puede arrancar el nodo o bloque y el trabajo no se puede volver a poner en cola). &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CA&#039;&#039;&#039; CANCELADO&lt;br /&gt;
    El trabajo ha sido cancelado explícitamente por el usuario o el administrador del sistema. El trabajo puede haberse iniciado o no. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CD&#039;&#039;&#039; TERMINADO&lt;br /&gt;
    El trabajo ha terminado todos los procesos en todos los nodos con un código de salida de cero. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CF&#039;&#039;&#039; CONFIGURANDO&lt;br /&gt;
    Al trabajo se le han asignado recursos, pero están esperando a que estén listos para su uso (por ejemplo, arrancando). &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CG&#039;&#039;&#039; COMPLETANDO&lt;br /&gt;
    El trabajo está en proceso de finalización. Algunos procesos en algunos nodos pueden estar aún activos. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DL&#039;&#039;&#039; FECHA LÍMITE&lt;br /&gt;
    El trabajo ha finalizado en la fecha límite. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;F&#039;&#039;&#039; FALLÓ&lt;br /&gt;
    Trabajo finalizado con un código de salida distinto de cero u otra condición de fallo. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NF&#039;&#039;&#039; NODO_FAIL&lt;br /&gt;
    Trabajo finalizado debido al fallo de uno o más nodos asignados. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;OOM&#039;&#039;&#039; OUT_OF_MEMORY&lt;br /&gt;
    El trabajo ha experimentado un error de memoria insuficiente. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PD&#039;&#039;&#039; PENDIENTE&lt;br /&gt;
    El trabajo está pendiente de asignación de recursos. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PR&#039;&#039;&#039; PREEMPTED&lt;br /&gt;
    El trabajo ha finalizado debido a una espera. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;R&#039;&#039;&#039; EN MARCHA&lt;br /&gt;
    El trabajo tiene actualmente una asignación. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RD&#039;&#039;&#039; RESV_DEL_HOLD&lt;br /&gt;
    El trabajo se está reteniendo después de que se eliminara la reserva solicitada. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RF&#039;&#039;&#039; REQUEUE_FED&lt;br /&gt;
    El trabajo está siendo solicitado por una federación. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RH&#039;&#039;&#039; REQUEUE_HOLD&lt;br /&gt;
    Se está volviendo a poner en cola un trabajo retenido. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RQ&#039;&#039;&#039; REQUEUED&lt;br /&gt;
    Se está poniendo en cola un trabajo que se está completando. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RS&#039;&#039;&#039; CAMBIO DE TAMAÑO&lt;br /&gt;
    El trabajo está a punto de cambiar de tamaño. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RV&#039;&#039;&#039; REVOCADO&lt;br /&gt;
    El trabajo se ha retirado del clúster debido a que otro clúster ha iniciado el trabajo. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SI&#039;&#039;&#039; SEÑALANDO&lt;br /&gt;
    El trabajo está siendo señalizado. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SE&#039;&#039;&#039; SPECIAL_EXIT&lt;br /&gt;
    El trabajo se ha puesto en cola en un estado especial. Este estado puede ser establecido por los usuarios, normalmente en EpilogSlurmctld, si el trabajo ha terminado con un valor de salida particular. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SO&#039;&#039;&#039; STAGE_OUT&lt;br /&gt;
    El trabajo está preparando los archivos. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ST&#039;&#039;&#039; PARADO&lt;br /&gt;
    El trabajo tiene una asignación, pero la ejecución se ha detenido con la señal SIGSTOP. Los CPUS han sido retenidos por este trabajo. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;S&#039;&#039;&#039; SUSPENDIDO&lt;br /&gt;
    El trabajo tiene una asignación, pero se ha suspendido la ejecución y se han liberado CPUs para otros trabajos. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TO&#039;&#039;&#039; TIMEOUT&lt;br /&gt;
    El trabajo ha finalizado al alcanzar su límite de tiempo.&lt;br /&gt;
&lt;br /&gt;
=== Cancelar un trabajo ===&lt;br /&gt;
Con scancel se puede cancelar un trabajo en ejecución&lt;br /&gt;
&amp;lt;pre&amp;gt;scancel &amp;amp;lt;jobID&amp;amp;gt;         # Matar proceso &amp;amp;lt;jobID&amp;amp;gt;. (puede obtener el ID del job con &amp;quot;squeue&amp;quot;)&lt;br /&gt;
scancel -u &amp;amp;lt;username&amp;amp;gt;   # Matar proceso por usuario &amp;amp;lt;username&amp;amp;gt;. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;[prueba@leftraru1 ~]$ squeue -u prueba&lt;br /&gt;
 JOBID  PARTITION    NAME     USER    ST   TIME  NODES  NODELIST(REASON)&lt;br /&gt;
 45594    slims      TEST    prueba   R    0:59   20    cn[001-020]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;[prueba@leftraru1 ~]$ scancel 45594&lt;br /&gt;
[prueba@leftraru1 ~]$ squeue -u prueba&lt;br /&gt;
JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)&lt;br /&gt;
[prueba@leftraru1 ~]$&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ver estado de trabajos ===&lt;br /&gt;
Para revisar el detalle de las opciones de un trabajo: scontrol show job&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ scontrol show job 10837561&lt;br /&gt;
JobId=10837561 JobName=TEST1&lt;br /&gt;
   UserId=usuario(1000) GroupId=group(1000) MCS_label=N/A&lt;br /&gt;
   Priority=1100 Nice=0 Account=account QOS=120&lt;br /&gt;
   JobState=RUNNING Reason=None Dependency=(null)&lt;br /&gt;
   Requeue=0 Restarts=0 BatchFlag=1 Reboot=0 ExitCode=0:0&lt;br /&gt;
   DerivedExitCode=0:0&lt;br /&gt;
   RunTime=19:03:08 TimeLimit=3-00:00:00 TimeMin=N/A&lt;br /&gt;
   SubmitTime=2018-06-18T18:51:01 EligibleTime=2018-06-18T18:51:01&lt;br /&gt;
   StartTime=2018-06-18T18:51:01 EndTime=2018-06-21T18:51:01 Deadline=N/A&lt;br /&gt;
   PreemptTime=None SuspendTime=None SecsPreSuspend=0&lt;br /&gt;
   Partition=slims AllocNode:Sid=leftraru2:5471&lt;br /&gt;
   ReqNodeList=(null) ExcNodeList=(null)&lt;br /&gt;
   NodeList=cn021&lt;br /&gt;
   BatchHost=cn021&lt;br /&gt;
   NumNodes=1 NumCPUs=1 NumTasks=1 CPUs/Task=1 ReqB:S:C:T=0:0:*:*&lt;br /&gt;
   TRES=cpu=1,mem=1000M,node=1&lt;br /&gt;
   Socks/Node=* NtasksPerN:B:S:C=1:0:*:* CoreSpec=*&lt;br /&gt;
     Nodes=cn021 CPU_IDs=1 Mem=1000 GRES_IDX=&lt;br /&gt;
   MinCPUsNode=1 MinMemoryCPU=1000M MinTmpDiskNode=0&lt;br /&gt;
   Features=(null) DelayBoot=00:00:00&lt;br /&gt;
   Gres=(null) Reservation=(null)&lt;br /&gt;
   OverSubscribe=OK Contiguous=0 Licenses=matlab Network=(null)&lt;br /&gt;
   Command=/home/usuario/script.sh&lt;br /&gt;
   WorkDir=/home/usuario/&lt;br /&gt;
   StdErr=/home/usuario/10837561_%x.err&lt;br /&gt;
   StdIn=/dev/null&lt;br /&gt;
   StdOut=/home/usuario/10837561_%x.out&lt;br /&gt;
   Power=&lt;br /&gt;
   BatchScript=&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para ver el script asociado a un trabajo: scontrol write batch_script &amp;lt;job_id&amp;gt; -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ scontrol write batch_script 10837561 -&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -J nombre_del_trabajo&lt;br /&gt;
#SBATCH -p slims&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
#SBATCH --ntasks-per-node=1&lt;br /&gt;
#SBATCH --mail-user=usaurio@correo.cl&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH -o nombre_del_trabajo%j_%x.out&lt;br /&gt;
#SBATCH -e nombre_del_trabajo%j_%x.err&lt;br /&gt;
#SBATCH --license=matlab &lt;br /&gt;
 &lt;br /&gt;
ml MATLAB/2017a&lt;br /&gt;
&lt;br /&gt;
matlab -nodisplay -nosplash -nodesktop &amp;lt; programa.m&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ejecutando trabajos ==&lt;br /&gt;
Actualmente contamos con 2 metodos de enviar trabajos bajo SLURM: &#039;&#039;&#039;sbatch&#039;&#039;&#039; and &#039;&#039;&#039;srun&#039;&#039;&#039;. A veces puede ser ventajoso ejecutar un solo comando en el clúster como prueba o realizar rápidamente una operación con recursos adicionales. &#039;srun&#039; permite a los usuarios hacer esto, y comparte las mismas variables que &#039;sbatch&#039; . STDOUT y STDERR para un trabajo &#039;srun&#039; serán redirigidos a la pantalla del usuario. Ctrl-C cancelará un trabajo srun. &#039;&#039;&#039;sbatch&#039;&#039;&#039; enviará un script de trabajo para que lo ejecute el clúster. Los scripts de trabajo bajo SLURM son simplemente scripts de shell (* .sh) con un conjunto de solicitudes de recursos en la parte superior del script.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Uso básico de srun:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
srun &amp;lt;algúnComando&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de salida (ejecutando el comando &amp;quot;hostname&amp;quot; para saber en que nodo se está ejecutando):&lt;br /&gt;
&amp;lt;pre&amp;gt; $ srun hostname&lt;br /&gt;
  cn003&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para enviar un script de trabajo a SLURM:&lt;br /&gt;
&amp;lt;pre&amp;gt;sbatch nombreScript.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example output:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sbatch test-job.sh&lt;br /&gt;
Submitted batch job 1169&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Variables Slurm ===&lt;br /&gt;
Las variables en esta sección son obligatorias, y SLURM las determina para determinar dónde y cuándo se ejecutarán sus trabajos. Si no asigna un valor para estos, el planificador asignará a sus trabajos el valor predeterminado. Si no solicita específicamente recursos para un trabajo, se le asignará un conjunto de recursos predeterminados. Para obtener una lista de todas las variables disponibles, consulte la documentación de SLURM en http://slurm.schedmd.com/sbatch.html. Las variables de este artículo estaban cubiertas porque eran las más relevantes para los casos de uso típicos.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Comando SLURM&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Descripción&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;--mem-per-cpu=&amp;amp;lt;megabytes&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Memoria requerida para el trabajo por CPU (en MegaBytes). El valor predeterminado es 1024 MB.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-p &amp;amp;lt;partition&amp;amp;gt;, --partition=&amp;amp;lt;partition&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Enviar un trabajo a una partición específica.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-n, --ntasks=&amp;amp;lt;cantidad de tareas&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Número de tareas que serán asignadas para el trabajo.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-c &amp;amp;lt;cpus&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Esta es la cantidad de CPU que necesita su trabajo. Tenga en cuenta que SLURM es relativamente generoso con las CPU, y el valor especificado aquí es el número &amp;quot;mínimo&amp;quot; de CPU que se asignará a su trabajo. Si hay CPU adicionales disponibles en un nodo más allá de lo solicitado, su trabajo recibirá esas CPU hasta que otros trabajos las necesiten. El valor predeterminado es 1 CPU. Intentar usar más CPU de las que se le asignaron dará como resultado que sus procesos adicionales se turnen en la misma CPU (ralentizando su trabajo).&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-J &amp;amp;lt;name&amp;amp;gt;, --jobname=&amp;amp;lt;name&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Especifica un nombre a tu trabajo.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;--mail-type=BEGIN,END,FAIL,ALL&amp;lt;b&amp;gt; and &amp;lt;/b&amp;gt;--mail-user=&amp;amp;lt;emailAddress&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Enviar por correo electrónico cuando su trabajo comienza / termina / falla. Puede especificar varios valores para esto (separados por comas) si es necesario.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-o &amp;amp;lt;STDOUT_log&amp;amp;gt;, --output=&amp;amp;lt;STDOUT_log&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Redirija la salida a los archivos de registro que especifique. Por defecto, ambos, STDOUT and STDERR son enviados a este archivo. Puedes especificar %j como parte del nombre de archivo de registro para indicar la ID del trabajo (como ejemplo, &amp;quot;#SBATCH -o ouptut_%j.o&amp;quot; redirigiría la salida a &amp;quot;output_123456.o&amp;quot;).&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-e &amp;amp;lt;STDERR_log&amp;amp;gt;, --error=&amp;amp;lt;STDERR_log&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Redireccionar STDERR a un archivo separado. Funciona exactamente igual que &amp;quot;-o&amp;quot;.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-t &amp;amp;lt;days-hours:minutes:seconds&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Walltime para tu trabajo. La duración del Walltime es el tiempo que espera que su trabajo se ejecute.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-a, --array=&amp;amp;lt;índices&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Envía una lista (arreglo) de trabajos identicos. Solo aplica para sbatch.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los scripts de trabajo especifican los recursos solicitados y otras consideraciones especiales con comentarios especiales &amp;quot;#SBATCH&amp;quot; en la parte superior de un script de trabajo. Aunque muchas de estas opciones son opcionales, las varibles que se ocupan de solicitudes de recursos (CPU, memoria y tiempo) son obligatorias. Todas las variables deben agregarse a sus scripts de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#SBATCH &amp;lt;variable&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Para especificar un nombre al job, por ejemplo, debe agregar lo siguiente a su secuencia de comandos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#SBATCH --job-name=nombreDeTrabajo&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Enviar un script===&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 #SBATCH -J example&lt;br /&gt;
 #SBATCH -p general&lt;br /&gt;
 #SBATCH -n 1&lt;br /&gt;
 #SBATCH --output=example_%j.out&lt;br /&gt;
 #SBATCH --error=example_%j.err&lt;br /&gt;
 #SBATCH --mail-user=user@example.com&lt;br /&gt;
 #SBATCH --mail-type=ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Como debe comenzar un script en Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre del trabajo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -J example&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre la partición donde desea ejecutar el Job:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -p general&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Número de tareas:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de salida:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -o example_%j.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de error:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -e example_%j.err&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Correo para notificaciones:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-user=user@example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Enviar correo en todos casos (verificar opciones arriba):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Programar tarea (uso de scrontab) ===&lt;br /&gt;
&#039;&#039;&#039;scrontab&#039;&#039;&#039; es una implementación del clásico planificador de tareas de linux &#039;&#039;&#039;crontab&#039;&#039;&#039; donde se guarda un listado de comandos a ejecutar en un tiempo determinado por el usuario.&lt;br /&gt;
&lt;br /&gt;
Para acceder a scrontab utilice el siguiente comando:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[prueba@leftraru1 ~]$ scrontab -e&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto le permitirá editar su archivo scrontab, asignando recursos como también el momento en que desea ejecutar su tarea. La estructura base a utilizar es la siguiente:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SCRON -J mi_tarea&lt;br /&gt;
#SCRON -p slims&lt;br /&gt;
#SCRON -n 1&lt;br /&gt;
#SCRON -c 1&lt;br /&gt;
#SCRON --mem-per-cpu=2300&lt;br /&gt;
#SCRON --mail-user=foo@bar.com&lt;br /&gt;
#SCRON --mail-type=ALL&lt;br /&gt;
#SCRON -o mi_tarea_%j.out&lt;br /&gt;
#SCRON -e mi_tarea_%j.err&lt;br /&gt;
# Example of job definition:&lt;br /&gt;
# .---------------- minute (0 - 59)&lt;br /&gt;
# |  .------------- hour (0 - 23)&lt;br /&gt;
# |  |  .---------- day of month (1 - 31)&lt;br /&gt;
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...&lt;br /&gt;
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat&lt;br /&gt;
# |  |  |  |  |&lt;br /&gt;
# *  *  *  *  *     command to be executed&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;minute&#039;&#039;&#039; - Corresponde al minuto en que se va a ejecutar el script, valor de 0 a 59.&lt;br /&gt;
* &#039;&#039;&#039;hour&#039;&#039;&#039; - Hora de ejecución, formato 24 horas, valor de 0 a 23, donde 0 son las 12:00 AM.&lt;br /&gt;
* &#039;&#039;&#039;day of month&#039;&#039;&#039; - Día del mes, la tarea se puede ejecutar cada x día, valor de 1 a 31.&lt;br /&gt;
* &#039;&#039;&#039;month&#039;&#039;&#039; - La tarea se puede ejecutar cada x mes, valor de 1 a 12.&lt;br /&gt;
* &#039;&#039;&#039;day of week&#039;&#039;&#039; - Día de la semana, valor de 0 a 6, donde 0 es Domingo.&lt;br /&gt;
* &#039;&#039;&#039;command to be executed&#039;&#039;&#039; - Script a ejecutar por el usuario.&lt;br /&gt;
 &lt;br /&gt;
Ejemplo envío de trabajo slurm:&lt;br /&gt;
&lt;br /&gt;
Para la asignación de recursos, utilizaremos la directriz &#039;&#039;&#039;#SCRON&#039;&#039;&#039;, que utiliza los mismos parámetros usados por &#039;&#039;&#039;#SBATCH&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Luego de asignar los recursos debemos especificar el tiempo, en este caso la tarea será ejecutada todos los días cada 20 minutos, luego debemos indicar el script enviado por el usuario y guardamos los cambios en el archivo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
*/20 * * * * /home/prueba/ejemplo/script.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es importante destacar que el script a lanzar &#039;&#039;&#039;/home/prueba/ejemplo/script.sh&#039;&#039;&#039; debe tener permisos de ejecución.&lt;br /&gt;
&lt;br /&gt;
Para revisar el listado de tareas existentes en nuestro scrontab, ejecutamos el comando:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[prueba@leftraru1 ~]$ scrontab -l&lt;br /&gt;
*/20 * * * * /home/prueba/ejemplo/script.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para borrar el contenido de nuestro scrontab:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[prueba@leftraru1 ~]$ scrontab -r&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Información a considerar:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Generar archivos de salida correctamente&lt;br /&gt;
** Para que el archivo error y out de tu script se generen en el directorio solicitado, ejemplo, /home/prueba/ejemplo/ en tu script debe estar presente el comando cd “/home/prueba/ejemplo”, esto hará que scrontab se posicione dentro del directorio de salida.&lt;br /&gt;
* Es distinto el tiempo de programar el envío de una tarea (scrontab) a que una tarea inicie en el clúster (running), ya que esto dependerá de los recursos libres que existan en ese momento en el clúster.&lt;br /&gt;
* Para revisar las tareas programadas debe ejecutar en cualquier nodo login el comando &#039;&#039;&#039;scrontab -l&#039;&#039;&#039; o revisar con el comando &#039;&#039;&#039;squeue&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[prueba@leftraru1 ~]$ squeue&lt;br /&gt;
24293471     slims /home/eg  prueba PD       0:00      1 (BeginTime)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Checkpointing ==&lt;br /&gt;
Es la acción de guardar el estado de un proceso en ejecución en un archivo de imagen de punto de control. Este proceso se puede reiniciar más tarde desde el archivo del punto de control, continuando la ejecución desde donde se detuvo, en la misma computadora o en una diferente.&lt;br /&gt;
&lt;br /&gt;
=== ¿Por qué utilizarlo? ===&lt;br /&gt;
* Permite ejecuciones de tarea largas que superen el tiempo de ejecución permitido en el cluster (30 días)&lt;br /&gt;
* Estar preparados ante fallas del sistema que nos puedan hacer perder resultados de nuestras simulaciones&lt;br /&gt;
&lt;br /&gt;
=== Utilización ===&lt;br /&gt;
Lo primero que debemos hacer en nuestro script es cargar el módulo de Mana:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ml mana/3.0.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Este módulo provee 3 ejecutables que necesitaremos:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;mana_coordinator:&#039;&#039;&#039; Coordina los checkpoints entre los distintos procesos&lt;br /&gt;
* &#039;&#039;&#039;mana_launch:&#039;&#039;&#039; Inicia un proceso con checkpoint&lt;br /&gt;
* &#039;&#039;&#039;mana_restart:&#039;&#039;&#039; Reinicia la ejecución desde una imagen del checkpoint&lt;br /&gt;
&lt;br /&gt;
Necesitaremos 2 scripts para trabajar con checkpoints: Inicio y reinicio&lt;br /&gt;
&lt;br /&gt;
=== Script de inicio (inicio.sh) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
##---------------SLURM Parameters - NLHPC ----------------&lt;br /&gt;
#SBATCH -J Testcheckpoint&lt;br /&gt;
#SBATCH -p general&lt;br /&gt;
#SBATCH -n 44&lt;br /&gt;
#SBATCH --ntasks-per-node=44&lt;br /&gt;
#SBATCH --mem-per-cpu=4363&lt;br /&gt;
#SBATCH --mail-user=test@nlhpc.cl&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH -o Testcheckpoint_%j.out&lt;br /&gt;
#SBATCH -e Testcheckpoint_%j.err&lt;br /&gt;
&lt;br /&gt;
# ----------------Modules----------------------------&lt;br /&gt;
ml mana/3.0.0&lt;br /&gt;
# ----------------Command--------------------------&lt;br /&gt;
#Checkpointing cada 1 hora&lt;br /&gt;
mana_cooridinator -i3600&lt;br /&gt;
#Ejecutamos nuestra tarea con checkpointing&lt;br /&gt;
srun mana_launch ./ejecutable&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Script de reinicio (reinicio.sh) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
##---------------SLURM Parameters - NLHPC ----------------&lt;br /&gt;
#SBATCH -J Testcheckpoint&lt;br /&gt;
#SBATCH -p general&lt;br /&gt;
#SBATCH -n 44&lt;br /&gt;
#SBATCH --ntasks-per-node=44&lt;br /&gt;
#SBATCH --mem-per-cpu=4363&lt;br /&gt;
#SBATCH --mail-user=test@nlhpc.cl&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH -o Testcheckpoint_%j.out&lt;br /&gt;
#SBATCH -e Testcheckpoint_%j.err&lt;br /&gt;
&lt;br /&gt;
# ----------------Modules----------------------------&lt;br /&gt;
ml mana/3.0.0&lt;br /&gt;
# ----------------Command--------------------------&lt;br /&gt;
#Checkpointing cada 1 hora&lt;br /&gt;
mana_cooridinator -i3600&lt;br /&gt;
#Reiniciar nuestra tarea desde los archivos de checkpoint&lt;br /&gt;
srun mana_restart&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para correr estos scripts se puede hacer utilizando la funcionalidad de dependencias de SLURM:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[test@leftraru2 test]$ sbatch inicio.sh&lt;br /&gt;
Submitted batch job 23574685&lt;br /&gt;
[test@leftraru2 test]$ sbatch --dependency=afterok:23574685 reinicio.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Trabajos ==&lt;br /&gt;
=== Trabajos paralelos ===&lt;br /&gt;
Muchos de los trabajos que se ejecutan en un clúster de producción implicarán más de un procesador (CPU, núcleo). Dichos trabajos paralelos deben solicitar la cantidad de recursos necesarios a través de opciones adicionales. Los más comunes son:&lt;br /&gt;
&lt;br /&gt;
Para diferentes tipos de trabajos paralelos, se especificarán diferentes opciones. Los trabajos paralelos más comunes son trabajos de MPI (memoria distribuida), trabajos de subprocesos múltiples (memoria compartida) y los llamados híbridos que son una combinación de los dos. Analicemos por separado con un n ejemplo para cada uno.&lt;br /&gt;
&lt;br /&gt;
=== Ejecución de programas con MPI ===&lt;br /&gt;
MPI (interfaz de paso de mensajes) es la API de comunicación estándar para trabajos paralelos de memoria distribuida capaz de implementarse en un clúster. Para programar dicho trabajo, es necesario especificar la cantidad de nodos del clúster que se utilizarán y la cantidad de procesos (tareas) que se ejecutarán en cada nodo.&lt;br /&gt;
&lt;br /&gt;
El siguiente es un ejemplo de ejecución de un programa compilado con Open MPI:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 #SBATCH -J example_mpi&lt;br /&gt;
 #SBATCH -p general&lt;br /&gt;
 #SBATCH -n 264&lt;br /&gt;
 #SBATCH --ntasks-per-node=44&lt;br /&gt;
 #SBATCH --output=example_%j.out&lt;br /&gt;
 #SBATCH --error=example_%j.err&lt;br /&gt;
 #SBATCH --mail-user=user@example.com&lt;br /&gt;
 #SBATCH --mail-type=ALL&lt;br /&gt;
 &lt;br /&gt;
 srun ./mpi_test&lt;br /&gt;
A continuacion se explica línea por líneael script.&lt;br /&gt;
&lt;br /&gt;
Como empieza un shell script en Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre del Job:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -J example_mpi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre la particion donde se desea ejecutar el trabajo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -p general&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Número de tareas. Debe de ser un número múltiplo del número de CPUs máximo que tenga un node de la partición donde se lanza:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -n 264&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Con esto se fuerza a que se lancen 44 tareas MPI en cada uno de los nodos, ocupando de este modo nodos completos. En este caso 6 nodos completos:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --ntasks-per-node=44&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de salida:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -o example_%j.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de error:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -e example_%j.err&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Correo para notificaciones:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-user=user@example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Envía correo en todos los casos:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Programa para ejecutar:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
srun ./mpi_test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nota&#039;&#039;&#039;: no se carga específicamente el módulo &amp;quot;mpi&amp;quot; ya que se carga siempre por defecto.&lt;br /&gt;
&lt;br /&gt;
Para enviarlo al clúster debe ejecutar el comando: &#039;&#039;sbatch script.sh&#039;&#039;. El ejemplo anterior ejecutará una tarea OpenMPI con 264 procesos reservando 264 cores para ello.&lt;br /&gt;
&lt;br /&gt;
=== Trabajos multiproceso OpenMP ===&lt;br /&gt;
Los trabajos paralelos diseñados para ejecutarse en un sistema multi-core (shared-memory) suelen ser &amp;quot;multi-threaded&amp;quot;. La programación de un job de este tipo requiere especificar el número de núcleos que se utilizan para acomodar los subprocesos.&lt;br /&gt;
&lt;br /&gt;
OpenMP es el conjunto común de variables de compilación para facilitar el desarrollo de programas multi-threaded. Un script típico de SLURM para un programa de este tipo se ve así:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 #SBATCH -J OMPtest&lt;br /&gt;
 #SBATCH -p general&lt;br /&gt;
 #SBATCH -n 1&lt;br /&gt;
 #SBATCH -c 44&lt;br /&gt;
 #SBATCH --ntasks-per-node=44&lt;br /&gt;
 #SBATCH --mem-per-cpu=1024&lt;br /&gt;
 #SBATCH -o example_%j.out&lt;br /&gt;
 #SBATCH -e example_%j.err&lt;br /&gt;
 #SBATCH --mail-user=user@example.com&lt;br /&gt;
 #SBATCH --mail-type=ALL&lt;br /&gt;
&lt;br /&gt;
 OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK time ./omp-program&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Como debe comenzar un script en Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre del Job:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -J OMPtest&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre la particion donde desea ejecutar el Job:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -p general&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Número de trabajos:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Número de tareas:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -c 44&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Con esto se fuerza a que se agrupen las 44 tareas en un nodo (en OpenMP no hay comunicación entre nodos, por lo que todas las tareas deben estar en el mismo nodo o no funcionaría):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --ntasks-per-node=44&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Memoria por core (MBytes):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem-per-cpu=1024&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de salida:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -o example_%j.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de error:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -e example_%j.err&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Correo para notificaciones:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-user=user@example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Enviar correo en todos los casos:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Programa para ejecutar:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK time ./omp-program &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cuando se utiliza un programa OpenMP, el número de subprocesos (y, por lo tanto, el número requerido de núcleos) se especifica a través de la variable de entorno OMP_NUM_THREADS que, por lo tanto, aparece en el script frente a la llamada al programa. Lo estamos configurando en la variable interna SLURM_CPUS_PER_TASK que se establece a través de la opción &amp;quot;-c&amp;quot; (a 44 en nuestro ejemplo, que sería el número total de cores de un nodo de la partición &amp;quot;general&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
La opción &amp;quot;-n&amp;quot; se mantiene en 1 para indicar un único trabajo principal que tiene 44 tareas. Para asegurarnos que todas las tareas se ejecutan en el mismo nodo, se añade la opción &amp;quot;--ntasks-per-node&amp;quot; con el máximo número de cores que tiene un nodo de la partición donde se está lanzando el trabajo.&lt;br /&gt;
&lt;br /&gt;
=== Ejecución de tareas en GPUs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -J ejemplo_gpus&lt;br /&gt;
#SBATCH -p v100&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
#SBATCH -o ejemplo_%j.out&lt;br /&gt;
#SBATCH -e ejemplo_%j.err&lt;br /&gt;
#SBATCH --mail-user=correo@gmail.com&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH --mem-per-cpu=4300&lt;br /&gt;
#SBATCH --gres=gpu:1&lt;br /&gt;
&lt;br /&gt;
./programa&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Inicio de un bash script en Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre del trabajo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -J ejemplo_gpus&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre la partición donde se ejecuta el trabajo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --partition=v100&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Número de tareas:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de salida:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -o ejemplo_%j.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de error:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -e ejemplo_%j.err&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Correo para notificaciones:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-user=user@example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Enviar correo en todos los casos:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Memoria por CPU (MB):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem-per-cpu=4365&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cantidad utilizada de GPUs. El parámetro gpu:1 indica la cantidad de tarjetas a utilizar (cada nodo tiene 2 GPUs):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --gres=gpu:1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Programa para ejecutar:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./programa&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Job Arrays ===&lt;br /&gt;
Cuando se ejecutan cientos o miles de simulaciones que utilizan la misma cantidad de recursos, puede ser una ventaja ejecutar estas simulaciones como un &amp;quot;job array&amp;quot;. Los job array le permiten enviar miles de dichos trabajos (llamados &amp;quot;job steps&amp;quot;) con un solo script. A cada simulación se le asignará un valor único para la variable de entorno SLURM_ARRAY_TASK_ID. Puede usar esta variable para leer parámetros para pasos individuales de una línea dada de un archivo.&lt;br /&gt;
&lt;br /&gt;
=== Caso de uso de un Script Job Array (Gaussian) ===&lt;br /&gt;
Tenemos usuarios que actualmente envían varias simulaciones al clúster que son similares en cuanto al uso de recursos, pero, la diferencia es que solo cambia la entrada que le entregan al programa. Para esta situación, recomendamos hacer uso de un script Job Array.&lt;br /&gt;
&lt;br /&gt;
En este ejemplo crearemos un script job array para el software Gaussian, el cual, realizará 63 simulaciones, cada una de estas utilizará 8 cores y podrá alcanzar un uso máximo de 8 Gb de memoria ram. Para este caso utilizaremos la partición slims donde cada nodo tiene 46 Gb de memoria ram y 20 cores.&lt;br /&gt;
&lt;br /&gt;
Script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# ----------------SLURM Parameters----------------&lt;br /&gt;
#SBATCH -J prueba&lt;br /&gt;
#SBATCH -p slims&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
#SBATCH -c 8&lt;br /&gt;
#SBATCH --mem-per-cpu=1000&lt;br /&gt;
#SBATCH --mail-user=prueba@nlhpc.cl&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH --array=1-63&lt;br /&gt;
#SBATCH -o prueba_%A_%a.out&lt;br /&gt;
#SBATCH -e prueba_%A_%a.err&lt;br /&gt;
#-----------------Toolchain---------------------------&lt;br /&gt;
ml purge&lt;br /&gt;
ml intel/2019b&lt;br /&gt;
# ----------------Módulos-----------------------------&lt;br /&gt;
ml g16/B.01&lt;br /&gt;
# ----------------Comandos--------------------------&lt;br /&gt;
file=$(ls Child_10_*.com | sed -n ${SLURM_ARRAY_TASK_ID}p)&lt;br /&gt;
srun g16 $file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
Descripción de comandos utilizados en script:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Inicio de un bash script en Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre de la simulación:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -J prueba&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre la partición donde se ejecuta la simulación:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -p slims&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Número de tareas (1 tarea va a ejecutar 63 simulaciones):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Core’s por tareas (cada tarea utilizará un máximo 8 cores):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -c 8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Memoria ram por cpu (cada tarea utilizará un máximo 8 Gb de ram):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH –mem-per-cpu=1000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Correo para activar el envío de notificaciones:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-user=prueba@nlhpc.cl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Permitir envío de notificaciones:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se generan 63 simulaciones diferentes:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --array=1-63&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de salida: (ejemplo: prueba_18455017_1.out)&lt;br /&gt;
&lt;br /&gt;
* %A corresponde al Job ID de nuestra tarea que le asignará Slurm → 18455017.&lt;br /&gt;
* %a corresponde a la simulación X de nuestra tarea que le asignará Slurm → 1.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -o prueba_%A_%a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de errores: (ejemplo: prueba_18455017_1.err)&lt;br /&gt;
&lt;br /&gt;
* %A corresponde al Job ID de nuestra tarea que le asignará Slurm → 18455017.&lt;br /&gt;
* %a corresponde a la simulación X de nuestra tarea que le asignará Slurm → 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -e prueba_%A_%a.err&lt;br /&gt;
Toolchain: en este apartado, limpiaremos nuestro entorno de software no deseados y luego escogemos la herramienta informática con la cual está compilado el software Gaussian (nosotros utilizamos el compilador Intel/2019b).&lt;br /&gt;
&lt;br /&gt;
#-----------------Toolchain---------------------------&lt;br /&gt;
ml purge&lt;br /&gt;
ml intel/2019b&lt;br /&gt;
Módulos: cargamos el software Gaussian versión 16/B.0.&lt;br /&gt;
&lt;br /&gt;
# ----------------Módulos-----------------------------&lt;br /&gt;
ml g16/B.01&lt;br /&gt;
Comandos: aquí definimos los comandos a ejecutar.&lt;br /&gt;
&lt;br /&gt;
# ----------------Comandos--------------------------&lt;br /&gt;
file=$(ls Child_10_*.com | sed -n ${SLURM_ARRAY_TASK_ID}p)&lt;br /&gt;
srun g16 $file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
file= variable que va a listar los archivos de entrada que comiencen por Child_10_ y terminen en .com&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Child.png|no]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sed -n ${SLURM_ARRAY_TASK_ID}p) ← Sed imprimirá las líneas de cada archivo de entrada y la variable $SLURM_ARRAY_TASK_ID asumirá estas entradas como matriz de simulación en nuestro job array, en este ejemplo tenemos 63 archivos de entrada.&lt;br /&gt;
&lt;br /&gt;
Para más detalles sobre los archivos stdin, stdout y stderr de una simulación % A será reemplazado por el valor de SLURM_ARRAY_JOB_ID que es el Job ID de nuestra tarea y %a será reemplazado por el valor de SLURM_ARRAY_TASK_ID que corresponde a la simulación X de nuestra tarea.&lt;br /&gt;
&lt;br /&gt;
Srun g16 $file: ejecutará el comando gaussian g16 interpretando la variable $file en los nodos de cómputo asignados.&lt;br /&gt;
&lt;br /&gt;
Enviar el script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[prueba@leftraru1 ~]$ sbatch prueba.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ejecución de una tarea que ocupa mucha RAM por CPU ===&lt;br /&gt;
Debemos tener en cuenta que la RAM que SLURM reserva por defecto son 1000 MB. Un típico error de cancelación de tarea por falta de memoria es el siguiente:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/tmp/slurmd/job136839939/slurm_script: line 15: 23547 Killed                  ./programa.sh&lt;br /&gt;
slurmstepd: error: Detected 1 oom-kill event(s) in step 136839939.batch cgroup. Some of your processes &lt;br /&gt;
may have been killed by the cgroup out-of-memory handler.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Si su tarea ocupa más de la memoria por defecto, puede utilizar el siguiente parámetro:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem-per-cpu=2300 #Máxima RAM por CPU&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Esto hará que SLURM reserve más RAM por CPU para sus tareas.&lt;br /&gt;
&lt;br /&gt;
Tenga en cuenta que nuestros nodos tienen 46 GB de memoria RAM (Partición slims), 187 GB (Partición general) y 765 GB (Partición largemem) por nodo. [https://wiki.nlhpc.cl/Hardware_Disponible Más información].&lt;br /&gt;
&lt;br /&gt;
Otra forma de reservar memoria es utilizando el siguiente parámetro:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem=2300&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
En este caso SLURM realizará una reserva de memoria de 2300 MB pero por la totalidad del trabajo.&lt;br /&gt;
&lt;br /&gt;
Los parámetros anteriores al igual que el número de CPUs que se van a usar, hay que afinarlos lo mejor posible. Para ello lo que se puede hacer es hacer pruebas en los nodos logins, sin lanzar en las colas, y así estudiar el uso de RAM y CPU por parte de sus procesos.&lt;br /&gt;
&lt;br /&gt;
=== Ejecución de una tarea con Dependencias ===&lt;br /&gt;
Las dependencias de trabajos se utilizan para aplazar el inicio de un trabajo hasta que se satisfagan las dependencias especificadas. Se especifican con la opción --dependency en el siguiente formato:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch --dependency=&amp;lt;type:job_id[:job_id][,type:job_id[:job_id]]&amp;gt; ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Los tipos de dependencias son las siguientes:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;after&#039;&#039;&#039;:jobid[:jobid...] - el trabajo puede empezar después de que los trabajos especificados comiencen&lt;br /&gt;
* &#039;&#039;&#039;afterany&#039;&#039;&#039;:jobid[:jobid...] - el trabajo puede empezar después de que los trabajos especificados terminen&lt;br /&gt;
* &#039;&#039;&#039;afternotok&#039;&#039;&#039;:jobid[:jobid...] - el trabajo puede empezar después que los trabajos especificados terminan fallidamente&lt;br /&gt;
* &#039;&#039;&#039;afterok&#039;&#039;&#039;:jobid[:jobid...] - el trabajo puede empezar después que los trabajos especificados terminan exitósamente&lt;br /&gt;
&lt;br /&gt;
La manera más simple de usar una dependencia del tipo afterok:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[prueba@leftraru1 ~]$ sbatch job1.sh&lt;br /&gt;
Submitted batch job 21363626&lt;br /&gt;
[prueba@leftraru1 ~]$ sbatch --dependency=afterok:21363626 job2.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora cuando job1.sh termine correctamente, el job2.sh entrará en ejecución. Si job1.sh termina fallidamente, job2.sh no entrará en ejecución nunca pero sí quedará en cola (debe cancelarse manualmente el trabajo).&lt;br /&gt;
&lt;br /&gt;
== Prioridad de tarea ==&lt;br /&gt;
Cómo ver la prioridad del trabajo. Los factores que determinan la prioridad del trabajo, incluyendo la fórmula y pesos.&lt;br /&gt;
&lt;br /&gt;
=== Factores que determinan prioridad de tarea ===&lt;br /&gt;
&amp;lt;table class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 60%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Comando SLURM&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Descripción&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Edad&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;la cantidad de tiempo que el trabajo ha estado esperando en la cola.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Tamaño de la tarea&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;número de nodos solicitados por el trabajo.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Partición&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;prioridad para una partición determinada.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Prioridad Baja&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Mientras más tareas se ejecuten en el cluster, menor será la prioridad.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Prioridad Alta&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Mientras menos tareas se ejecuten en el clúster, más alta es la prioridad.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Prioridad de tarea ==&lt;br /&gt;
Cómo ver la prioridad del trabajo. Los factores que determinan la prioridad del trabajo, incluyendo la fórmula y pesos.&lt;br /&gt;
&lt;br /&gt;
=== Factores que determinan prioridad de tarea ===&lt;br /&gt;
* Edad - la cantidad de tiempo que el trabajo ha estado esperando en la cola&lt;br /&gt;
* Tamaño Oficio - número de nodos solicitados por el trabajo&lt;br /&gt;
* Partición - prioridad para una partición determinada&lt;br /&gt;
* Contribución de prioridades basada en los recursos informáticos utilizados por los miembros de un grupo de investigación en los últimos 30 días - Fairshare.&lt;br /&gt;
* Mientras más tareas se ejecuten en el cluster, menor será la prioridad.&lt;br /&gt;
* Mientras menos tareas se ejecuten en el clúster, más alta es la prioridad.&lt;br /&gt;
Fórmula Prioridad de tarea&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Job_priority =&lt;br /&gt;
  (PriorityWeightAge) * (age_factor) +&lt;br /&gt;
  (PriorityWeightFairshare) * (fair-share_factor) +&lt;br /&gt;
  (PriorityWeightJobSize) * (job_size_factor) +&lt;br /&gt;
  (PriorityWeightPartition) * (partition_factor) +&lt;br /&gt;
  (PriorityWeightQOS) * (QOS_factor)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Visualización de sus Tareas ==&lt;br /&gt;
Si Ud. necesita visualizar información acerca de sus tareas de forma interactiva, puede utilizar el comando smap:&lt;br /&gt;
&lt;br /&gt;
smap -i 3&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Smap.png|no|700px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De esta forma, tendrá una actualización cada 3 segundos de sus tareas en ejecución incluyendo los nodos en los cuales se encuentran ejecutándose.&lt;br /&gt;
&lt;br /&gt;
== Bibliografía ==&lt;br /&gt;
[http://slurm.schedmd.com/documentation.html Manual Oficial de Slurm]&lt;br /&gt;
&lt;br /&gt;
[https://slurm.schedmd.com/scrontab.html Documentación scrontab]&lt;/div&gt;</summary>
		<author><name>Jmorales</name></author>
	</entry>
	<entry>
		<id>https://wiki.nlhpc.cl/index.php?title=SISTEMA_GESTOR_DE_RECURSOS&amp;diff=753</id>
		<title>SISTEMA GESTOR DE RECURSOS</title>
		<link rel="alternate" type="text/html" href="https://wiki.nlhpc.cl/index.php?title=SISTEMA_GESTOR_DE_RECURSOS&amp;diff=753"/>
		<updated>2024-04-29T19:13:43Z</updated>

		<summary type="html">&lt;p&gt;Jmorales: /* Script de reinicio (reinicio.sh) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== SLURM Workload Manager ==&lt;br /&gt;
Es un sistema de programación de trabajos y gestión de clústeres de código abierto, tolerante a fallas y altamente escalable para clústeres Linux grandes y pequeños.&lt;br /&gt;
&lt;br /&gt;
Como administrador de carga de trabajo de clúster, Slurm tiene tres funciones clave. Primero, asigna acceso exclusivo y / o no exclusivo a los recursos (nodos de cómputo) a los usuarios durante un período de tiempo para que puedan realizar el trabajo. En segundo lugar, proporciona un marco para iniciar, ejecutar y monitorear el trabajo (normalmente un trabajo paralelo) en el conjunto de nodos asignados. Finalmente, arbitra la contención de recursos mediante la gestión de una cola de trabajo pendiente.&lt;br /&gt;
&lt;br /&gt;
SLURM es el gestor de colas instalado en muchos de los súper computadores del [https://www.top500.org/ TOP500], y también en el clúster del NLHPC. Si Ud. quiere lanzar tareas dentro de Leftaru, debe hacerlo a través de Slurm.&lt;br /&gt;
&lt;br /&gt;
== Conceptos clave ==&lt;br /&gt;
SLURM gestiona trabajos de usuario que tienen las siguientes características clave:&lt;br /&gt;
&lt;br /&gt;
* Conjunto de recursos solicitados:&lt;br /&gt;
** Número de recursos informáticos: nodos (incluidas todas sus CPUs y núcleos) o CPUs (incluidos todos sus núcleos) o solo núcleos&lt;br /&gt;
** Cantidad de memoria: por nodo o por CPU (lógica)&lt;br /&gt;
** Tiempo necesario para que las tareas del usuario completen su trabajo&lt;br /&gt;
* Una partición de nodo solicitada (cola de trabajos)&lt;br /&gt;
* Un nivel de calidad de servicio (QoS) solicitado que otorga a los usuarios accesos específicos&lt;br /&gt;
* Una cuenta solicitada con recursos limitados&lt;br /&gt;
&lt;br /&gt;
De manera predeterminada, los usuarios envían trabajos a una partición particular (marcada como tal para todos los usuarios) y bajo una cuenta particular (preestablecida por usuario).&lt;br /&gt;
&lt;br /&gt;
== Particiones SLURM ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 60%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nombre Particion&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nodos&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;CPUs&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;RAM&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Descripción&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;general&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;48&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;44&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;187GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;largemem&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;9&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;44&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;765GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;v100&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;44&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;187GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;4 GPUs Nvidia Tesla V100.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;mi100&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;128&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;502GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2 GPUs AMD Instinct MI100.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;slims&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;132&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;20&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;46GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;debug&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;4&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;20&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;59GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Destinados a pruebas de máximo 30 minutos.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Introducción a los comandos slurm ==&lt;br /&gt;
&amp;lt;table class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 60%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Comando SLURM&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Descripción&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;srun&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ejecutar un comando en nodos de cómputo asignados.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;sbatch&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;presentar un script de trabajo&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;squeue&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Mostrar estado de los trabajos en la cola.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;scancel&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;eliminar un trabajo.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;sinfo&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Muestra el estado de los nodos de cómputo.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
Estos son los comandos básicos utilizados para realizar la mayoría de las operaciones básicas con SLURM.&lt;br /&gt;
&lt;br /&gt;
=== Estado de nodos ===&lt;br /&gt;
Para consultar el uso de nuestra infraestructura y qué particiones están más libres, le recomendamos el comando sinfo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# sinfo&lt;br /&gt;
PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST&lt;br /&gt;
all        up    infinite    16     mix   cn[001,005-006,010,034-035,037,041,045,050,057,108,121],sn[012,016,037]&lt;br /&gt;
all        up    infinite    95     alloc cn[011-033,038-044,046-049,071-120],cnf[001-004],sn[001-011,038-041,043-044]&lt;br /&gt;
all        up    infinite    33     idle  fn[001-009],gn[001-002],sn[018-035,045-048]&lt;br /&gt;
slims*     up    infinite    18     mix   cn[001,003,005-006,010,034-035,043,045,050,057,070,079,085,095,098,108,121]&lt;br /&gt;
slims*     up    infinite    75     alloc cn[007-009,011-033,038-040,051-056,058-069,071-078,086-094,122-128],cnf[001-004]&lt;br /&gt;
debug      up    infinite    4      idle  leftraru[1-4]&lt;br /&gt;
general    up    infinite    4      mix   sn[012,016,037,042]&lt;br /&gt;
general    up    infinite    22     alloc sn[001-011,013-015,017,036,038-041,043-044]&lt;br /&gt;
general    up    infinite    22     idle  sn[018-035,045-048]&lt;br /&gt;
largemem   up    infinite    9      idle  fn[001-009]&lt;br /&gt;
v100       up    infinite    2      idle  gn[001-002]&lt;br /&gt;
mi100      up    infinite    1      idle  gna001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fijándose en el texto resaltado de la salida del comando sinfo, se puede comprobar que en la partición slims hay 112 nodos que están completamente ocupados (estado alloc), 20 nodos que están parcialmente ocupados (mix) y ninguno libre (idle); por otro lado, en la partición general hay 22 nodos completamente ocupados, 4 parcialmente ocupados y 22 libres. Dado este escenario, está claro que debería de lanzar sus ejecuciones en los nodos de la partición general, por las razones anteriormente expuestas.&lt;br /&gt;
&lt;br /&gt;
Para lanzar en la partición general, debe tener en cuenta que tiene que indicar en su script que se use dicha partición en vez de, probablemente, slims. Por supuesto, en esta partición cambian las características técnicas, se pasan a tener 44 cores por nodo (en vez de 20 en slims) y una capacidad RAM de 187GB (en vez de 46GB en slims). Puede ver más información de las particiones en este link(agregar link), donde podrá revisar que con la inclusión de Guacolda hemos añadido nodos con hasta 765GB de memoria RAM y nodos con GPUs Nvidia Tesla V100 y AMD Instinct MI100 .&lt;br /&gt;
&lt;br /&gt;
Para ver los nodos disponibles y poder determinar en que partición lanzar los trabajos se recomienda utilizar el siguiente comando.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;[prueba@leftraru1 ~]$ sinfo -o &amp;quot;%10P %6D %10t %10m %c&amp;quot; -t idle| egrep &amp;quot;PARTITION|slims|general|largemem|v100&amp;quot;&lt;br /&gt;
PARTITION  NODES  STATE      MEMORY     CPUS&lt;br /&gt;
slims*      32    idle       46000       20&lt;br /&gt;
general     2     idle       187000      44&lt;br /&gt;
largemem    7     idle       765000      44&lt;br /&gt;
v100        1     idle       187000      44 &lt;br /&gt;
mi100       1     idle       515047      128 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
El comando anterior muestra que slims tiene 32 nodos libres, en este caso es recomendado lanzar en en slims para evitar que el trabajo quede en cola por falta de recursos en otros nodos.&lt;br /&gt;
&lt;br /&gt;
Otro Ejemplo, se muestra sólo una partición específica&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;[prueba@leftraru1 ~]$ sinfo -p slims&lt;br /&gt;
PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST&lt;br /&gt;
slims*     up    infinite    24    mix     cn[015,033,036-038,041-050,053-054,075-080,104]&lt;br /&gt;
slims*     up    infinite    76    alloc   cn[001-009,019-032,039-040,051-090,093-094,097-099],cnf[001-004]&lt;br /&gt;
slims*     up    infinite    32    idle    cn[010-014,016-018,034-035,056-058,073-074,091-100,120-122,125-127]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Comprobación del estado de tareas ===&lt;br /&gt;
squeue - Muestra el estatus de los trabajos&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;squeue                  # tus trabajos&lt;br /&gt;
squeue -u &amp;amp;lt;username&amp;amp;gt;    # trabajos por usuario &amp;amp;lt;username&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
squeue: Comprobar estados de los trabajos&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;&amp;quot; class=&amp;quot;mw-highlight mw-content-ltr&amp;quot; dir=&amp;quot;ltr&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  JOBID        PARTITION     NAME     USER    ST       TIME  	NODES 	NODELIST(REASON)&lt;br /&gt;
13951858_1     general	     test1    test1    R   1-18:35:14      2    cn[009-010]&lt;br /&gt;
13951857_2     general       test2    test1    R   1-18:36:11      2    cn[099-100]&lt;br /&gt;
13956453       gpu           test3    test3    R   1-03:42:08      1    cn039&lt;br /&gt;
13956449       largemem      test4    test4    R   1-05:42:08      1    cn044&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puede utilizar squeue para saber el estado de una o varias de sus tareas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ squeue -o &amp;quot;%.15i %.6P %.8j %.20S %.11M %.11L %.20V %.10Q %.4C %.2D %.6m&amp;quot; -S -t,-Q&lt;br /&gt;
 JOBID   PARTIT     NAME      START_TIME          TIME      TIME_LEFT     SUBMIT_TIME       PRIORITY CPUS NO MIN_ME&lt;br /&gt;
10837561 general   TEST1   2018-06-18T18:51:01    19:00:31  2-04:59:29  2018-06-18T18:51:01  119972    1  1  1000M&lt;br /&gt;
10838562 general   TEST2   2018-06-19T11:30:47    2:20:45   2-21:39:15  2018-06-19T11:30:46  119946    1  1  1000M&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
para mas opciones puede revisar con el comando [https://slurm.schedmd.com/squeue.html man squeue] las opciones restantes.&lt;br /&gt;
&lt;br /&gt;
=== Códigos de ESTADO de los trabajos ===&lt;br /&gt;
&lt;br /&gt;
Los trabajos suelen pasar por varios estados durante su ejecución. Los estados típicos son PENDIENTE, EN EJECUCIÓN, SUSPENDIDO, FINALIZANDO y TERMINADO. A continuación se explica cada estado.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;BF&#039;&#039;&#039; BOOT_FAIL&lt;br /&gt;
    Trabajo finalizado debido a un fallo de arranque, normalmente debido a un fallo de hardware (por ejemplo, no se puede arrancar el nodo o bloque y el trabajo no se puede volver a poner en cola). &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CA&#039;&#039;&#039; CANCELADO&lt;br /&gt;
    El trabajo ha sido cancelado explícitamente por el usuario o el administrador del sistema. El trabajo puede haberse iniciado o no. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CD&#039;&#039;&#039; TERMINADO&lt;br /&gt;
    El trabajo ha terminado todos los procesos en todos los nodos con un código de salida de cero. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CF&#039;&#039;&#039; CONFIGURANDO&lt;br /&gt;
    Al trabajo se le han asignado recursos, pero están esperando a que estén listos para su uso (por ejemplo, arrancando). &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CG&#039;&#039;&#039; COMPLETANDO&lt;br /&gt;
    El trabajo está en proceso de finalización. Algunos procesos en algunos nodos pueden estar aún activos. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DL&#039;&#039;&#039; FECHA LÍMITE&lt;br /&gt;
    El trabajo ha finalizado en la fecha límite. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;F&#039;&#039;&#039; FALLÓ&lt;br /&gt;
    Trabajo finalizado con un código de salida distinto de cero u otra condición de fallo. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NF&#039;&#039;&#039; NODO_FAIL&lt;br /&gt;
    Trabajo finalizado debido al fallo de uno o más nodos asignados. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;OOM&#039;&#039;&#039; OUT_OF_MEMORY&lt;br /&gt;
    El trabajo ha experimentado un error de memoria insuficiente. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PD&#039;&#039;&#039; PENDIENTE&lt;br /&gt;
    El trabajo está pendiente de asignación de recursos. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PR&#039;&#039;&#039; PREEMPTED&lt;br /&gt;
    El trabajo ha finalizado debido a una espera. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;R&#039;&#039;&#039; EN MARCHA&lt;br /&gt;
    El trabajo tiene actualmente una asignación. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RD&#039;&#039;&#039; RESV_DEL_HOLD&lt;br /&gt;
    El trabajo se está reteniendo después de que se eliminara la reserva solicitada. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RF&#039;&#039;&#039; REQUEUE_FED&lt;br /&gt;
    El trabajo está siendo solicitado por una federación. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RH&#039;&#039;&#039; REQUEUE_HOLD&lt;br /&gt;
    Se está volviendo a poner en cola un trabajo retenido. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RQ&#039;&#039;&#039; REQUEUED&lt;br /&gt;
    Se está poniendo en cola un trabajo que se está completando. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RS&#039;&#039;&#039; CAMBIO DE TAMAÑO&lt;br /&gt;
    El trabajo está a punto de cambiar de tamaño. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RV&#039;&#039;&#039; REVOCADO&lt;br /&gt;
    El trabajo se ha retirado del clúster debido a que otro clúster ha iniciado el trabajo. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SI&#039;&#039;&#039; SEÑALANDO&lt;br /&gt;
    El trabajo está siendo señalizado. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SE&#039;&#039;&#039; SPECIAL_EXIT&lt;br /&gt;
    El trabajo se ha puesto en cola en un estado especial. Este estado puede ser establecido por los usuarios, normalmente en EpilogSlurmctld, si el trabajo ha terminado con un valor de salida particular. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SO&#039;&#039;&#039; STAGE_OUT&lt;br /&gt;
    El trabajo está preparando los archivos. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ST&#039;&#039;&#039; PARADO&lt;br /&gt;
    El trabajo tiene una asignación, pero la ejecución se ha detenido con la señal SIGSTOP. Los CPUS han sido retenidos por este trabajo. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;S&#039;&#039;&#039; SUSPENDIDO&lt;br /&gt;
    El trabajo tiene una asignación, pero se ha suspendido la ejecución y se han liberado CPUs para otros trabajos. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TO&#039;&#039;&#039; TIMEOUT&lt;br /&gt;
    El trabajo ha finalizado al alcanzar su límite de tiempo.&lt;br /&gt;
&lt;br /&gt;
=== Cancelar un trabajo ===&lt;br /&gt;
Con scancel se puede cancelar un trabajo en ejecución&lt;br /&gt;
&amp;lt;pre&amp;gt;scancel &amp;amp;lt;jobID&amp;amp;gt;         # Matar proceso &amp;amp;lt;jobID&amp;amp;gt;. (puede obtener el ID del job con &amp;quot;squeue&amp;quot;)&lt;br /&gt;
scancel -u &amp;amp;lt;username&amp;amp;gt;   # Matar proceso por usuario &amp;amp;lt;username&amp;amp;gt;. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;[prueba@leftraru1 ~]$ squeue -u prueba&lt;br /&gt;
 JOBID  PARTITION    NAME     USER    ST   TIME  NODES  NODELIST(REASON)&lt;br /&gt;
 45594    slims      TEST    prueba   R    0:59   20    cn[001-020]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;[prueba@leftraru1 ~]$ scancel 45594&lt;br /&gt;
[prueba@leftraru1 ~]$ squeue -u prueba&lt;br /&gt;
JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)&lt;br /&gt;
[prueba@leftraru1 ~]$&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ver estado de trabajos ===&lt;br /&gt;
Para revisar el detalle de las opciones de un trabajo: scontrol show job&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ scontrol show job 10837561&lt;br /&gt;
JobId=10837561 JobName=TEST1&lt;br /&gt;
   UserId=usuario(1000) GroupId=group(1000) MCS_label=N/A&lt;br /&gt;
   Priority=1100 Nice=0 Account=account QOS=120&lt;br /&gt;
   JobState=RUNNING Reason=None Dependency=(null)&lt;br /&gt;
   Requeue=0 Restarts=0 BatchFlag=1 Reboot=0 ExitCode=0:0&lt;br /&gt;
   DerivedExitCode=0:0&lt;br /&gt;
   RunTime=19:03:08 TimeLimit=3-00:00:00 TimeMin=N/A&lt;br /&gt;
   SubmitTime=2018-06-18T18:51:01 EligibleTime=2018-06-18T18:51:01&lt;br /&gt;
   StartTime=2018-06-18T18:51:01 EndTime=2018-06-21T18:51:01 Deadline=N/A&lt;br /&gt;
   PreemptTime=None SuspendTime=None SecsPreSuspend=0&lt;br /&gt;
   Partition=slims AllocNode:Sid=leftraru2:5471&lt;br /&gt;
   ReqNodeList=(null) ExcNodeList=(null)&lt;br /&gt;
   NodeList=cn021&lt;br /&gt;
   BatchHost=cn021&lt;br /&gt;
   NumNodes=1 NumCPUs=1 NumTasks=1 CPUs/Task=1 ReqB:S:C:T=0:0:*:*&lt;br /&gt;
   TRES=cpu=1,mem=1000M,node=1&lt;br /&gt;
   Socks/Node=* NtasksPerN:B:S:C=1:0:*:* CoreSpec=*&lt;br /&gt;
     Nodes=cn021 CPU_IDs=1 Mem=1000 GRES_IDX=&lt;br /&gt;
   MinCPUsNode=1 MinMemoryCPU=1000M MinTmpDiskNode=0&lt;br /&gt;
   Features=(null) DelayBoot=00:00:00&lt;br /&gt;
   Gres=(null) Reservation=(null)&lt;br /&gt;
   OverSubscribe=OK Contiguous=0 Licenses=matlab Network=(null)&lt;br /&gt;
   Command=/home/usuario/script.sh&lt;br /&gt;
   WorkDir=/home/usuario/&lt;br /&gt;
   StdErr=/home/usuario/10837561_%x.err&lt;br /&gt;
   StdIn=/dev/null&lt;br /&gt;
   StdOut=/home/usuario/10837561_%x.out&lt;br /&gt;
   Power=&lt;br /&gt;
   BatchScript=&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para ver el script asociado a un trabajo: scontrol write batch_script &amp;lt;job_id&amp;gt; -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ scontrol write batch_script 10837561 -&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -J nombre_del_trabajo&lt;br /&gt;
#SBATCH -p slims&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
#SBATCH --ntasks-per-node=1&lt;br /&gt;
#SBATCH --mail-user=usaurio@correo.cl&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH -o nombre_del_trabajo%j_%x.out&lt;br /&gt;
#SBATCH -e nombre_del_trabajo%j_%x.err&lt;br /&gt;
#SBATCH --license=matlab &lt;br /&gt;
 &lt;br /&gt;
ml MATLAB/2017a&lt;br /&gt;
&lt;br /&gt;
matlab -nodisplay -nosplash -nodesktop &amp;lt; programa.m&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ejecutando trabajos ==&lt;br /&gt;
Actualmente contamos con 2 metodos de enviar trabajos bajo SLURM: &#039;&#039;&#039;sbatch&#039;&#039;&#039; and &#039;&#039;&#039;srun&#039;&#039;&#039;. A veces puede ser ventajoso ejecutar un solo comando en el clúster como prueba o realizar rápidamente una operación con recursos adicionales. &#039;srun&#039; permite a los usuarios hacer esto, y comparte las mismas variables que &#039;sbatch&#039; . STDOUT y STDERR para un trabajo &#039;srun&#039; serán redirigidos a la pantalla del usuario. Ctrl-C cancelará un trabajo srun. &#039;&#039;&#039;sbatch&#039;&#039;&#039; enviará un script de trabajo para que lo ejecute el clúster. Los scripts de trabajo bajo SLURM son simplemente scripts de shell (* .sh) con un conjunto de solicitudes de recursos en la parte superior del script.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Uso básico de srun:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
srun &amp;lt;algúnComando&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de salida (ejecutando el comando &amp;quot;hostname&amp;quot; para saber en que nodo se está ejecutando):&lt;br /&gt;
&amp;lt;pre&amp;gt; $ srun hostname&lt;br /&gt;
  cn003&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para enviar un script de trabajo a SLURM:&lt;br /&gt;
&amp;lt;pre&amp;gt;sbatch nombreScript.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example output:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sbatch test-job.sh&lt;br /&gt;
Submitted batch job 1169&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Variables Slurm ===&lt;br /&gt;
Las variables en esta sección son obligatorias, y SLURM las determina para determinar dónde y cuándo se ejecutarán sus trabajos. Si no asigna un valor para estos, el planificador asignará a sus trabajos el valor predeterminado. Si no solicita específicamente recursos para un trabajo, se le asignará un conjunto de recursos predeterminados. Para obtener una lista de todas las variables disponibles, consulte la documentación de SLURM en http://slurm.schedmd.com/sbatch.html. Las variables de este artículo estaban cubiertas porque eran las más relevantes para los casos de uso típicos.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Comando SLURM&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Descripción&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;--mem-per-cpu=&amp;amp;lt;megabytes&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Memoria requerida para el trabajo por CPU (en MegaBytes). El valor predeterminado es 1024 MB.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-p &amp;amp;lt;partition&amp;amp;gt;, --partition=&amp;amp;lt;partition&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Enviar un trabajo a una partición específica.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-n, --ntasks=&amp;amp;lt;cantidad de tareas&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Número de tareas que serán asignadas para el trabajo.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-c &amp;amp;lt;cpus&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Esta es la cantidad de CPU que necesita su trabajo. Tenga en cuenta que SLURM es relativamente generoso con las CPU, y el valor especificado aquí es el número &amp;quot;mínimo&amp;quot; de CPU que se asignará a su trabajo. Si hay CPU adicionales disponibles en un nodo más allá de lo solicitado, su trabajo recibirá esas CPU hasta que otros trabajos las necesiten. El valor predeterminado es 1 CPU. Intentar usar más CPU de las que se le asignaron dará como resultado que sus procesos adicionales se turnen en la misma CPU (ralentizando su trabajo).&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-J &amp;amp;lt;name&amp;amp;gt;, --jobname=&amp;amp;lt;name&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Especifica un nombre a tu trabajo.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;--mail-type=BEGIN,END,FAIL,ALL&amp;lt;b&amp;gt; and &amp;lt;/b&amp;gt;--mail-user=&amp;amp;lt;emailAddress&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Enviar por correo electrónico cuando su trabajo comienza / termina / falla. Puede especificar varios valores para esto (separados por comas) si es necesario.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-o &amp;amp;lt;STDOUT_log&amp;amp;gt;, --output=&amp;amp;lt;STDOUT_log&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Redirija la salida a los archivos de registro que especifique. Por defecto, ambos, STDOUT and STDERR son enviados a este archivo. Puedes especificar %j como parte del nombre de archivo de registro para indicar la ID del trabajo (como ejemplo, &amp;quot;#SBATCH -o ouptut_%j.o&amp;quot; redirigiría la salida a &amp;quot;output_123456.o&amp;quot;).&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-e &amp;amp;lt;STDERR_log&amp;amp;gt;, --error=&amp;amp;lt;STDERR_log&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Redireccionar STDERR a un archivo separado. Funciona exactamente igual que &amp;quot;-o&amp;quot;.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-t &amp;amp;lt;days-hours:minutes:seconds&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Walltime para tu trabajo. La duración del Walltime es el tiempo que espera que su trabajo se ejecute.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;-a, --array=&amp;amp;lt;índices&amp;amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Envía una lista (arreglo) de trabajos identicos. Solo aplica para sbatch.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los scripts de trabajo especifican los recursos solicitados y otras consideraciones especiales con comentarios especiales &amp;quot;#SBATCH&amp;quot; en la parte superior de un script de trabajo. Aunque muchas de estas opciones son opcionales, las varibles que se ocupan de solicitudes de recursos (CPU, memoria y tiempo) son obligatorias. Todas las variables deben agregarse a sus scripts de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#SBATCH &amp;lt;variable&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Para especificar un nombre al job, por ejemplo, debe agregar lo siguiente a su secuencia de comandos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#SBATCH --job-name=nombreDeTrabajo&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Enviar un script===&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 #SBATCH -J example&lt;br /&gt;
 #SBATCH -p general&lt;br /&gt;
 #SBATCH -n 1&lt;br /&gt;
 #SBATCH --output=example_%j.out&lt;br /&gt;
 #SBATCH --error=example_%j.err&lt;br /&gt;
 #SBATCH --mail-user=user@example.com&lt;br /&gt;
 #SBATCH --mail-type=ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Como debe comenzar un script en Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre del trabajo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -J example&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre la partición donde desea ejecutar el Job:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -p general&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Número de tareas:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de salida:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -o example_%j.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de error:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -e example_%j.err&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Correo para notificaciones:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-user=user@example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Enviar correo en todos casos (verificar opciones arriba):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Programar tarea (uso de scrontab) ===&lt;br /&gt;
&#039;&#039;&#039;scrontab&#039;&#039;&#039; es una implementación del clásico planificador de tareas de linux &#039;&#039;&#039;crontab&#039;&#039;&#039; donde se guarda un listado de comandos a ejecutar en un tiempo determinado por el usuario.&lt;br /&gt;
&lt;br /&gt;
Para acceder a scrontab utilice el siguiente comando:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[prueba@leftraru1 ~]$ scrontab -e&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto le permitirá editar su archivo scrontab, asignando recursos como también el momento en que desea ejecutar su tarea. La estructura base a utilizar es la siguiente:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SCRON -J mi_tarea&lt;br /&gt;
#SCRON -p slims&lt;br /&gt;
#SCRON -n 1&lt;br /&gt;
#SCRON -c 1&lt;br /&gt;
#SCRON --mem-per-cpu=2300&lt;br /&gt;
#SCRON --mail-user=foo@bar.com&lt;br /&gt;
#SCRON --mail-type=ALL&lt;br /&gt;
#SCRON -o mi_tarea_%j.out&lt;br /&gt;
#SCRON -e mi_tarea_%j.err&lt;br /&gt;
# Example of job definition:&lt;br /&gt;
# .---------------- minute (0 - 59)&lt;br /&gt;
# |  .------------- hour (0 - 23)&lt;br /&gt;
# |  |  .---------- day of month (1 - 31)&lt;br /&gt;
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...&lt;br /&gt;
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat&lt;br /&gt;
# |  |  |  |  |&lt;br /&gt;
# *  *  *  *  *     command to be executed&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;minute&#039;&#039;&#039; - Corresponde al minuto en que se va a ejecutar el script, valor de 0 a 59.&lt;br /&gt;
* &#039;&#039;&#039;hour&#039;&#039;&#039; - Hora de ejecución, formato 24 horas, valor de 0 a 23, donde 0 son las 12:00 AM.&lt;br /&gt;
* &#039;&#039;&#039;day of month&#039;&#039;&#039; - Día del mes, la tarea se puede ejecutar cada x día, valor de 1 a 31.&lt;br /&gt;
* &#039;&#039;&#039;month&#039;&#039;&#039; - La tarea se puede ejecutar cada x mes, valor de 1 a 12.&lt;br /&gt;
* &#039;&#039;&#039;day of week&#039;&#039;&#039; - Día de la semana, valor de 0 a 6, donde 0 es Domingo.&lt;br /&gt;
* &#039;&#039;&#039;command to be executed&#039;&#039;&#039; - Script a ejecutar por el usuario.&lt;br /&gt;
 &lt;br /&gt;
Ejemplo envío de trabajo slurm:&lt;br /&gt;
&lt;br /&gt;
Para la asignación de recursos, utilizaremos la directriz &#039;&#039;&#039;#SCRON&#039;&#039;&#039;, que utiliza los mismos parámetros usados por &#039;&#039;&#039;#SBATCH&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Luego de asignar los recursos debemos especificar el tiempo, en este caso la tarea será ejecutada todos los días cada 20 minutos, luego debemos indicar el script enviado por el usuario y guardamos los cambios en el archivo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
*/20 * * * * /home/prueba/ejemplo/script.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es importante destacar que el script a lanzar &#039;&#039;&#039;/home/prueba/ejemplo/script.sh&#039;&#039;&#039; debe tener permisos de ejecución.&lt;br /&gt;
&lt;br /&gt;
Para revisar el listado de tareas existentes en nuestro scrontab, ejecutamos el comando:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[prueba@leftraru1 ~]$ scrontab -l&lt;br /&gt;
*/20 * * * * /home/prueba/ejemplo/script.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para borrar el contenido de nuestro scrontab:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[prueba@leftraru1 ~]$ scrontab -r&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Información a considerar:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Generar archivos de salida correctamente&lt;br /&gt;
** Para que el archivo error y out de tu script se generen en el directorio solicitado, ejemplo, /home/prueba/ejemplo/ en tu script debe estar presente el comando cd “/home/prueba/ejemplo”, esto hará que scrontab se posicione dentro del directorio de salida.&lt;br /&gt;
* Es distinto el tiempo de programar el envío de una tarea (scrontab) a que una tarea inicie en el clúster (running), ya que esto dependerá de los recursos libres que existan en ese momento en el clúster.&lt;br /&gt;
* Para revisar las tareas programadas debe ejecutar en cualquier nodo login el comando &#039;&#039;&#039;scrontab -l&#039;&#039;&#039; o revisar con el comando &#039;&#039;&#039;squeue&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[prueba@leftraru1 ~]$ squeue&lt;br /&gt;
24293471     slims /home/eg  prueba PD       0:00      1 (BeginTime)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Checkpointing ==&lt;br /&gt;
Es la acción de guardar el estado de un proceso en ejecución en un archivo de imagen de punto de control. Este proceso se puede reiniciar más tarde desde el archivo del punto de control, continuando la ejecución desde donde se detuvo, en la misma computadora o en una diferente.&lt;br /&gt;
&lt;br /&gt;
=== ¿Por qué utilizarlo? ===&lt;br /&gt;
* Permite ejecuciones de tarea largas que superen el tiempo de ejecución permitido en el cluster (30 días)&lt;br /&gt;
* Estar preparados ante fallas del sistema que nos puedan hacer perder resultados de nuestras simulaciones&lt;br /&gt;
&lt;br /&gt;
=== Utilización ===&lt;br /&gt;
Lo primero que debemos hacer en nuestro script es cargar el módulo de Mana:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ml mana/3.0.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Este módulo provee 3 ejecutables que necesitaremos:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;mana_coordinator:&#039;&#039;&#039; Coordina los checkpoints entre los distintos procesos&lt;br /&gt;
* &#039;&#039;&#039;mana_launch:&#039;&#039;&#039; Inicia un proceso con checkpoint&lt;br /&gt;
* &#039;&#039;&#039;mana_restart:&#039;&#039;&#039; Reinicia la ejecución desde una imagen del checkpoint&lt;br /&gt;
&lt;br /&gt;
Necesitaremos 2 scripts para trabajar con checkpoints: Inicio y reinicio&lt;br /&gt;
&lt;br /&gt;
=== Script de inicio (inicio.sh) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
##---------------SLURM Parameters - NLHPC ----------------&lt;br /&gt;
#SBATCH -J Testcheckpoint&lt;br /&gt;
#SBATCH -p general&lt;br /&gt;
#SBATCH -n 44&lt;br /&gt;
#SBATCH --ntasks-per-node=44&lt;br /&gt;
#SBATCH --mem-per-cpu=4363&lt;br /&gt;
#SBATCH --mail-user=test@nlhpc.cl&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH -o Testcheckpoint_%j.out&lt;br /&gt;
#SBATCH -e Testcheckpoint_%j.err&lt;br /&gt;
&lt;br /&gt;
# ----------------Modules----------------------------&lt;br /&gt;
ml mana/3.0.0&lt;br /&gt;
# ----------------Command--------------------------&lt;br /&gt;
#Checkpointing cada 1 hora&lt;br /&gt;
mana_cooridinator -i3600&lt;br /&gt;
#Ejecutamos nuestra tarea con checkpointing&lt;br /&gt;
srun mana_launch ./ejecutable&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Script de reinicio (reinicio.sh) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
##---------------SLURM Parameters - NLHPC ----------------&lt;br /&gt;
#SBATCH -J Testcheckpoint&lt;br /&gt;
#SBATCH -p general&lt;br /&gt;
#SBATCH -n 44&lt;br /&gt;
#SBATCH --ntasks-per-node=44&lt;br /&gt;
#SBATCH --mem-per-cpu=4363&lt;br /&gt;
#SBATCH --mail-user=test@nlhpc.cl&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH -o Testcheckpoint_%j.out&lt;br /&gt;
#SBATCH -e Testcheckpoint_%j.err&lt;br /&gt;
&lt;br /&gt;
# ----------------Modules----------------------------&lt;br /&gt;
ml mana/3.0.0&lt;br /&gt;
# ----------------Command--------------------------&lt;br /&gt;
#Checkpointing cada 1 hora&lt;br /&gt;
mana_cooridinator -i3600&lt;br /&gt;
#Reiniciar nuestra tarea desde los archivos de checkpoint&lt;br /&gt;
srun mana_restart&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para correr estos scripts se puede hacer utilizando la funcionalidad de dependencias de SLURM:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[test@leftraru2 test]$ sbatch inicio.sh&lt;br /&gt;
Submitted batch job 23574685&lt;br /&gt;
[test@leftraru2 test]$ sbatch --dependency=afterok:23574685 reinicio.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Trabajos ==&lt;br /&gt;
=== Trabajos paralelos ===&lt;br /&gt;
Muchos de los trabajos que se ejecutan en un clúster de producción implicarán más de un procesador (CPU, núcleo). Dichos trabajos paralelos deben solicitar la cantidad de recursos necesarios a través de opciones adicionales. Los más comunes son:&lt;br /&gt;
&lt;br /&gt;
Para diferentes tipos de trabajos paralelos, se especificarán diferentes opciones. Los trabajos paralelos más comunes son trabajos de MPI (memoria distribuida), trabajos de subprocesos múltiples (memoria compartida) y los llamados híbridos que son una combinación de los dos. Analicemos por separado con un n ejemplo para cada uno.&lt;br /&gt;
&lt;br /&gt;
=== Ejecución de programas con MPI ===&lt;br /&gt;
MPI (interfaz de paso de mensajes) es la API de comunicación estándar para trabajos paralelos de memoria distribuida capaz de implementarse en un clúster. Para programar dicho trabajo, es necesario especificar la cantidad de nodos del clúster que se utilizarán y la cantidad de procesos (tareas) que se ejecutarán en cada nodo.&lt;br /&gt;
&lt;br /&gt;
El siguiente es un ejemplo de ejecución de un programa compilado con Open MPI:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 #SBATCH -J example_mpi&lt;br /&gt;
 #SBATCH -p general&lt;br /&gt;
 #SBATCH -n 264&lt;br /&gt;
 #SBATCH --ntasks-per-node=44&lt;br /&gt;
 #SBATCH --output=example_%j.out&lt;br /&gt;
 #SBATCH --error=example_%j.err&lt;br /&gt;
 #SBATCH --mail-user=user@example.com&lt;br /&gt;
 #SBATCH --mail-type=ALL&lt;br /&gt;
 &lt;br /&gt;
 srun ./mpi_test&lt;br /&gt;
A continuacion se explica línea por líneael script.&lt;br /&gt;
&lt;br /&gt;
Como empieza un shell script en Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre del Job:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -J example_mpi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre la particion donde se desea ejecutar el trabajo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -p general&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Número de tareas. Debe de ser un número múltiplo del número de CPUs máximo que tenga un node de la partición donde se lanza:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -n 264&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Con esto se fuerza a que se lancen 44 tareas MPI en cada uno de los nodos, ocupando de este modo nodos completos. En este caso 6 nodos completos:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --ntasks-per-node=44&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de salida:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -o example_%j.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de error:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -e example_%j.err&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Correo para notificaciones:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-user=user@example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Envía correo en todos los casos:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Programa para ejecutar:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
srun ./mpi_test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nota&#039;&#039;&#039;: no se carga específicamente el módulo &amp;quot;mpi&amp;quot; ya que se carga siempre por defecto.&lt;br /&gt;
&lt;br /&gt;
Para enviarlo al clúster debe ejecutar el comando: &#039;&#039;sbatch script.sh&#039;&#039;. El ejemplo anterior ejecutará una tarea OpenMPI con 264 procesos reservando 264 cores para ello.&lt;br /&gt;
&lt;br /&gt;
=== Trabajos multiproceso OpenMP ===&lt;br /&gt;
Los trabajos paralelos diseñados para ejecutarse en un sistema multi-core (shared-memory) suelen ser &amp;quot;multi-threaded&amp;quot;. La programación de un job de este tipo requiere especificar el número de núcleos que se utilizan para acomodar los subprocesos.&lt;br /&gt;
&lt;br /&gt;
OpenMP es el conjunto común de variables de compilación para facilitar el desarrollo de programas multi-threaded. Un script típico de SLURM para un programa de este tipo se ve así:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 #SBATCH -J OMPtest&lt;br /&gt;
 #SBATCH -p general&lt;br /&gt;
 #SBATCH -n 1&lt;br /&gt;
 #SBATCH -c 44&lt;br /&gt;
 #SBATCH --ntasks-per-node=44&lt;br /&gt;
 #SBATCH --mem-per-cpu=1024&lt;br /&gt;
 #SBATCH -o example_%j.out&lt;br /&gt;
 #SBATCH -e example_%j.err&lt;br /&gt;
 #SBATCH --mail-user=user@example.com&lt;br /&gt;
 #SBATCH --mail-type=ALL&lt;br /&gt;
&lt;br /&gt;
 OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK time ./omp-program&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Como debe comenzar un script en Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre del Job:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -J OMPtest&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre la particion donde desea ejecutar el Job:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -p general&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Número de trabajos:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Número de tareas:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -c 44&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Con esto se fuerza a que se agrupen las 44 tareas en un nodo (en OpenMP no hay comunicación entre nodos, por lo que todas las tareas deben estar en el mismo nodo o no funcionaría):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --ntasks-per-node=44&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Memoria por core (MBytes):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem-per-cpu=1024&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de salida:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -o example_%j.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de error:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -e example_%j.err&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Correo para notificaciones:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-user=user@example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Enviar correo en todos los casos:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Programa para ejecutar:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK time ./omp-program &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cuando se utiliza un programa OpenMP, el número de subprocesos (y, por lo tanto, el número requerido de núcleos) se especifica a través de la variable de entorno OMP_NUM_THREADS que, por lo tanto, aparece en el script frente a la llamada al programa. Lo estamos configurando en la variable interna SLURM_CPUS_PER_TASK que se establece a través de la opción &amp;quot;-c&amp;quot; (a 44 en nuestro ejemplo, que sería el número total de cores de un nodo de la partición &amp;quot;general&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
La opción &amp;quot;-n&amp;quot; se mantiene en 1 para indicar un único trabajo principal que tiene 44 tareas. Para asegurarnos que todas las tareas se ejecutan en el mismo nodo, se añade la opción &amp;quot;--ntasks-per-node&amp;quot; con el máximo número de cores que tiene un nodo de la partición donde se está lanzando el trabajo.&lt;br /&gt;
&lt;br /&gt;
=== Ejecución de tareas en GPUs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -J ejemplo_gpus&lt;br /&gt;
#SBATCH -p v100&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
#SBATCH -o ejemplo_%j.out&lt;br /&gt;
#SBATCH -e ejemplo_%j.err&lt;br /&gt;
#SBATCH --mail-user=correo@gmail.com&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH --mem-per-cpu=4300&lt;br /&gt;
#SBATCH --gres=gpu:1&lt;br /&gt;
&lt;br /&gt;
./programa&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Inicio de un bash script en Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre del trabajo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -J ejemplo_gpus&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre la partición donde se ejecuta el trabajo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --partition=v100&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Número de tareas:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de salida:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -o ejemplo_%j.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de error:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -e ejemplo_%j.err&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Correo para notificaciones:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-user=user@example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Enviar correo en todos los casos:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Memoria por CPU (MB):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem-per-cpu=4365&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cantidad utilizada de GPUs. El parámetro gpu:1 indica la cantidad de tarjetas a utilizar (cada nodo tiene 2 GPUs):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --gres=gpu:1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Programa para ejecutar:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./programa&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Job Arrays ===&lt;br /&gt;
Cuando se ejecutan cientos o miles de simulaciones que utilizan la misma cantidad de recursos, puede ser una ventaja ejecutar estas simulaciones como un &amp;quot;job array&amp;quot;. Los job array le permiten enviar miles de dichos trabajos (llamados &amp;quot;job steps&amp;quot;) con un solo script. A cada simulación se le asignará un valor único para la variable de entorno SLURM_ARRAY_TASK_ID. Puede usar esta variable para leer parámetros para pasos individuales de una línea dada de un archivo.&lt;br /&gt;
&lt;br /&gt;
=== Caso de uso de un Script Job Array (Gaussian) ===&lt;br /&gt;
Tenemos usuarios que actualmente envían varias simulaciones al clúster que son similares en cuanto al uso de recursos, pero, la diferencia es que solo cambia la entrada que le entregan al programa. Para esta situación, recomendamos hacer uso de un script Job Array.&lt;br /&gt;
&lt;br /&gt;
En este ejemplo crearemos un script job array para el software Gaussian, el cual, realizará 63 simulaciones, cada una de estas utilizará 8 cores y podrá alcanzar un uso máximo de 8 Gb de memoria ram. Para este caso utilizaremos la partición slims donde cada nodo tiene 46 Gb de memoria ram y 20 cores.&lt;br /&gt;
&lt;br /&gt;
Script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# ----------------SLURM Parameters----------------&lt;br /&gt;
#SBATCH -J prueba&lt;br /&gt;
#SBATCH -p slims&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
#SBATCH -c 8&lt;br /&gt;
#SBATCH --mem-per-cpu=1000&lt;br /&gt;
#SBATCH --mail-user=prueba@nlhpc.cl&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH --array=1-63&lt;br /&gt;
#SBATCH -o prueba_%A_%a.out&lt;br /&gt;
#SBATCH -e prueba_%A_%a.err&lt;br /&gt;
#-----------------Toolchain---------------------------&lt;br /&gt;
ml purge&lt;br /&gt;
ml intel/2019b&lt;br /&gt;
# ----------------Módulos-----------------------------&lt;br /&gt;
ml g16/B.01&lt;br /&gt;
# ----------------Comandos--------------------------&lt;br /&gt;
file=$(ls Child_10_*.com | sed -n ${SLURM_ARRAY_TASK_ID}p)&lt;br /&gt;
srun g16 $file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
Descripción de comandos utilizados en script:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Inicio de un bash script en Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre de la simulación:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -J prueba&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nombre la partición donde se ejecuta la simulación:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -p slims&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Número de tareas (1 tarea va a ejecutar 63 simulaciones):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Core’s por tareas (cada tarea utilizará un máximo 8 cores):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -c 8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Memoria ram por cpu (cada tarea utilizará un máximo 8 Gb de ram):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH –mem-per-cpu=1000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Correo para activar el envío de notificaciones:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-user=prueba@nlhpc.cl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Permitir envío de notificaciones:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se generan 63 simulaciones diferentes:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --array=1-63&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de salida: (ejemplo: prueba_18455017_1.out)&lt;br /&gt;
&lt;br /&gt;
* %A corresponde al Job ID de nuestra tarea que le asignará Slurm → 18455017.&lt;br /&gt;
* %a corresponde a la simulación X de nuestra tarea que le asignará Slurm → 1.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -o prueba_%A_%a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log de errores: (ejemplo: prueba_18455017_1.err)&lt;br /&gt;
&lt;br /&gt;
* %A corresponde al Job ID de nuestra tarea que le asignará Slurm → 18455017.&lt;br /&gt;
* %a corresponde a la simulación X de nuestra tarea que le asignará Slurm → 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -e prueba_%A_%a.err&lt;br /&gt;
Toolchain: en este apartado, limpiaremos nuestro entorno de software no deseados y luego escogemos la herramienta informática con la cual está compilado el software Gaussian (nosotros utilizamos el compilador Intel/2019b).&lt;br /&gt;
&lt;br /&gt;
#-----------------Toolchain---------------------------&lt;br /&gt;
ml purge&lt;br /&gt;
ml intel/2019b&lt;br /&gt;
Módulos: cargamos el software Gaussian versión 16/B.0.&lt;br /&gt;
&lt;br /&gt;
# ----------------Módulos-----------------------------&lt;br /&gt;
ml g16/B.01&lt;br /&gt;
Comandos: aquí definimos los comandos a ejecutar.&lt;br /&gt;
&lt;br /&gt;
# ----------------Comandos--------------------------&lt;br /&gt;
file=$(ls Child_10_*.com | sed -n ${SLURM_ARRAY_TASK_ID}p)&lt;br /&gt;
srun g16 $file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
file= variable que va a listar los archivos de entrada que comiencen por Child_10_ y terminen en .com&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Child.png|no]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sed -n ${SLURM_ARRAY_TASK_ID}p) ← Sed imprimirá las líneas de cada archivo de entrada y la variable $SLURM_ARRAY_TASK_ID asumirá estas entradas como matriz de simulación en nuestro job array, en este ejemplo tenemos 63 archivos de entrada.&lt;br /&gt;
&lt;br /&gt;
Para más detalles sobre los archivos stdin, stdout y stderr de una simulación % A será reemplazado por el valor de SLURM_ARRAY_JOB_ID que es el Job ID de nuestra tarea y %a será reemplazado por el valor de SLURM_ARRAY_TASK_ID que corresponde a la simulación X de nuestra tarea.&lt;br /&gt;
&lt;br /&gt;
Srun g16 $file: ejecutará el comando gaussian g16 interpretando la variable $file en los nodos de cómputo asignados.&lt;br /&gt;
&lt;br /&gt;
Enviar el script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[prueba@leftraru1 ~]$ sbatch prueba.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ejecución de una tarea que ocupa mucha RAM por CPU ===&lt;br /&gt;
Debemos tener en cuenta que la RAM que SLURM reserva por defecto son 1000 MB. Un típico error de cancelación de tarea por falta de memoria es el siguiente:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/tmp/slurmd/job136839939/slurm_script: line 15: 23547 Killed                  ./programa.sh&lt;br /&gt;
slurmstepd: error: Detected 1 oom-kill event(s) in step 136839939.batch cgroup. Some of your processes &lt;br /&gt;
may have been killed by the cgroup out-of-memory handler.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Si su tarea ocupa más de la memoria por defecto, puede utilizar el siguiente parámetro:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem-per-cpu=2300 #Máxima RAM por CPU&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Esto hará que SLURM reserve más RAM por CPU para sus tareas.&lt;br /&gt;
&lt;br /&gt;
Tenga en cuenta que nuestros nodos tienen 46 GB de memoria RAM (Partición slims), 187 GB (Partición general) y 765 GB (Partición largemem) por nodo. [https://wiki.nlhpc.cl/Hardware_Disponible Más información].&lt;br /&gt;
&lt;br /&gt;
Otra forma de reservar memoria es utilizando el siguiente parámetro:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem=2300&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
En este caso SLURM realizará una reserva de memoria de 2300 MB pero por la totalidad del trabajo.&lt;br /&gt;
&lt;br /&gt;
Los parámetros anteriores al igual que el número de CPUs que se van a usar, hay que afinarlos lo mejor posible. Para ello lo que se puede hacer es hacer pruebas en los nodos logins, sin lanzar en las colas, y así estudiar el uso de RAM y CPU por parte de sus procesos.&lt;br /&gt;
&lt;br /&gt;
=== Ejecución de una tarea con Dependencias ===&lt;br /&gt;
Las dependencias de trabajos se utilizan para aplazar el inicio de un trabajo hasta que se satisfagan las dependencias especificadas. Se especifican con la opción --dependency en el siguiente formato:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch --dependency=&amp;lt;type:job_id[:job_id][,type:job_id[:job_id]]&amp;gt; ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Los tipos de dependencias son las siguientes:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;after&#039;&#039;&#039;:jobid[:jobid...] - el trabajo puede empezar después de que los trabajos especificados comiencen&lt;br /&gt;
* &#039;&#039;&#039;afterany&#039;&#039;&#039;:jobid[:jobid...] - el trabajo puede empezar después de que los trabajos especificados terminen&lt;br /&gt;
* &#039;&#039;&#039;afternotok&#039;&#039;&#039;:jobid[:jobid...] - el trabajo puede empezar después que los trabajos especificados terminan fallidamente&lt;br /&gt;
* &#039;&#039;&#039;afterok&#039;&#039;&#039;:jobid[:jobid...] - el trabajo puede empezar después que los trabajos especificados terminan exitósamente&lt;br /&gt;
&lt;br /&gt;
La manera más simple de usar una dependencia del tipo afterok:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[prueba@leftraru1 ~]$ sbatch job1.sh&lt;br /&gt;
Submitted batch job 21363626&lt;br /&gt;
[prueba@leftraru1 ~]$ sbatch --dependency=afterok:21363626 job2.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora cuando job1.sh termine correctamente, el job2.sh entrará en ejecución. Si job1.sh termina fallidamente, job2.sh no entrará en ejecución nunca pero sí quedará en cola (debe cancelarse manualmente el trabajo).&lt;br /&gt;
&lt;br /&gt;
== Prioridad de tarea ==&lt;br /&gt;
Cómo ver la prioridad del trabajo. Los factores que determinan la prioridad del trabajo, incluyendo la fórmula y pesos.&lt;br /&gt;
&lt;br /&gt;
=== Factores que determinan prioridad de tarea ===&lt;br /&gt;
&amp;lt;table class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 60%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Comando SLURM&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Descripción&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Edad&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;la cantidad de tiempo que el trabajo ha estado esperando en la cola.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Tamaño de la tarea&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;número de nodos solicitados por el trabajo.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Partición&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;prioridad para una partición determinada.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Prioridad Baja&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Mientras más tareas se ejecuten en el cluster, menor será la prioridad.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Prioridad Alta&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Mientras menos tareas se ejecuten en el clúster, más alta es la prioridad.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Prioridad de tarea ==&lt;br /&gt;
Cómo ver la prioridad del trabajo. Los factores que determinan la prioridad del trabajo, incluyendo la fórmula y pesos.&lt;br /&gt;
&lt;br /&gt;
=== Factores que determinan prioridad de tarea ===&lt;br /&gt;
* Edad - la cantidad de tiempo que el trabajo ha estado esperando en la cola&lt;br /&gt;
* Tamaño Oficio - número de nodos solicitados por el trabajo&lt;br /&gt;
* Partición - prioridad para una partición determinada&lt;br /&gt;
* Contribución de prioridades basada en los recursos informáticos utilizados por los miembros de un grupo de investigación en los últimos 30 días - Fairshare.&lt;br /&gt;
* Mientras más tareas se ejecuten en el cluster, menor será la prioridad.&lt;br /&gt;
* Mientras menos tareas se ejecuten en el clúster, más alta es la prioridad.&lt;br /&gt;
Fórmula Prioridad de tarea&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Job_priority =&lt;br /&gt;
  (PriorityWeightAge) * (age_factor) +&lt;br /&gt;
  (PriorityWeightFairshare) * (fair-share_factor) +&lt;br /&gt;
  (PriorityWeightJobSize) * (job_size_factor) +&lt;br /&gt;
  (PriorityWeightPartition) * (partition_factor) +&lt;br /&gt;
  (PriorityWeightQOS) * (QOS_factor)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Visualización de sus Tareas ==&lt;br /&gt;
Si Ud. necesita visualizar información acerca de sus tareas de forma interactiva, puede utilizar el comando smap:&lt;br /&gt;
&lt;br /&gt;
smap -i 3&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Smap.png|no|700px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De esta forma, tendrá una actualización cada 3 segundos de sus tareas en ejecución incluyendo los nodos en los cuales se encuentran ejecutándose.&lt;br /&gt;
&lt;br /&gt;
== Bibliografía ==&lt;br /&gt;
[http://slurm.schedmd.com/documentation.html Manual Oficial de Slurm]&lt;br /&gt;
&lt;br /&gt;
[https://slurm.schedmd.com/scrontab.html Documentación scrontab]&lt;/div&gt;</summary>
		<author><name>Jmorales</name></author>
	</entry>
	<entry>
		<id>https://wiki.nlhpc.cl/index.php?title=Hardware_Disponible&amp;diff=745</id>
		<title>Hardware Disponible</title>
		<link rel="alternate" type="text/html" href="https://wiki.nlhpc.cl/index.php?title=Hardware_Disponible&amp;diff=745"/>
		<updated>2024-04-26T20:28:45Z</updated>

		<summary type="html">&lt;p&gt;Jmorales: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;El NLHPC cuenta actualmente con los siguientes recursos computacionales, distribuidos en varias particiones [https://wiki.nlhpc.cl/SISTEMA_GESTOR_DE_RECURSOS SLURM]:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;background:#ffffff&amp;quot; align=&amp;quot;top&amp;quot; class=&amp;quot;sortable wikitable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;caption align=&amp;quot;center&amp;quot; style=&amp;quot;background:DarkSlateBlue; color:white&amp;quot;&amp;gt;&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;Partición general&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/caption&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;60 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Nodo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Modelo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Cantidad&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;100 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Procesador&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;120 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;RAM&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;140 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Infiniband&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;sn[001-048]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Dell PowerEdge C6420&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;48&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2 x Intel Xeon Gold 6152 CPU @ 2.10GHz, 22 cores C./U.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;187 GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Infiniband FDR&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;background:#ffffff&amp;quot; align=&amp;quot;top&amp;quot; class=&amp;quot;sortable wikitable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;caption align=&amp;quot;center&amp;quot; style=&amp;quot;background:DarkSlateBlue; color:white&amp;quot;&amp;gt;&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;Partición largemem&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/caption&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;60 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Nodo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Modelo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Cantidad&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;100 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Procesador&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;120 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;RAM&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;140 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Infiniband&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;fn[001-009]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Dell PowerEdge R640&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;9&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2 x Intel Xeon Gold 6152 CPU @ 2.10GHz, 22 cores C./U.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;765 GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Infiniband FDR&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;background:#ffffff&amp;quot; align=&amp;quot;top&amp;quot; class=&amp;quot;sortable wikitable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;caption align=&amp;quot;center&amp;quot; style=&amp;quot;background:DarkSlateBlue; color:white&amp;quot;&amp;gt;&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;Partición v100&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/caption&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;60 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Nodo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Modelo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Cantidad&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;100 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Procesador&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;160 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;GPU&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;120 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;RAM&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;140 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Infiniband&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;gn[001-002]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Dell PowerEdge R740&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2 x Intel Xeon Gold 6152 CPU @ 2.10GHz, 22 cores C./U.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2x NVIDIA Tesla V100 C/U.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;187 GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Infiniband FDR&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;background:#ffffff&amp;quot; align=&amp;quot;top&amp;quot; class=&amp;quot;sortable wikitable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;caption align=&amp;quot;center&amp;quot; style=&amp;quot;background:DarkSlateBlue; color:white&amp;quot;&amp;gt;&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;Partición mi100&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/caption&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;60 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Nodo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Modelo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Cantidad&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;100 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Procesador&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;160 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;GPU&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;120 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;RAM&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;140 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Infiniband&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;gn003&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Dell PowerEdge R7525&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2 x AMD EPYC 7713 64-Core Processor CPU @ 2.0GHz, 64 cores C./U.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2x Instinct MI100 C/U.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;502 GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Infiniband FDR&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;background:#ffffff&amp;quot; align=&amp;quot;top&amp;quot; class=&amp;quot;sortable wikitable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;caption align=&amp;quot;center&amp;quot; style=&amp;quot;background:DarkSlateBlue; color:white&amp;quot;&amp;gt;&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;Partición MI210&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/caption&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;60 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Nodo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Modelo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Cantidad&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;100 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Procesador&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;120 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;RAM&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;140 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Infiniband&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;gn00[4-5]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Lenovo ThinkSystem SR675 V3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2 x AMD EPYC 9224 @ 2.5GHz, 24 cores c/u.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1.457 GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Infiniband NDR&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;background:#ffffff&amp;quot; align=&amp;quot;top&amp;quot; class=&amp;quot;sortable wikitable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;caption align=&amp;quot;center&amp;quot; style=&amp;quot;background:DarkSlateBlue; color:white&amp;quot;&amp;gt;&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;Partición main&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/caption&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;60 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Nodo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Modelo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Cantidad&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;100 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Procesador&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;120 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;RAM&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;140 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Infiniband&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;mn00[1-27]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Lenovo ThinkSystem SR645 V3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;27&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2 x AMD EPYC 9754 @ 2,25GHz, 128 cores c/u.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;768 GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Infiniband NDR&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La partición debug es para uso exclusivo de pruebas que duren hasta 30 minutos. Cualquier trabajo que supere ese tiempo es cancelado automáticamente.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;background:#ffffff&amp;quot; align=&amp;quot;top&amp;quot; class=&amp;quot;sortable wikitable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;caption align=&amp;quot;center&amp;quot; style=&amp;quot;background:DarkSlateBlue; color:white&amp;quot;&amp;gt;&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;Partición debug&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/caption&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;60 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Nodo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Modelo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Cantidad&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;100 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Procesador&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;120 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;RAM&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;140 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Infiniband&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;leftraru[1-2]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Lenovo ThinkSystem SR645 V3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2 x AMD EPYC 9224  @ 2,5GHz, 24 cores c/u.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;768 GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Infiniband NDR&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La capacidad total de Guacolda-Leftraru Epu al día de hoy es de 9.956 CPU cores, 95.232 GPU cores y 479 TFlops.&lt;br /&gt;
&lt;br /&gt;
Para más información respecto a la utilización del sistema gestor de colas y uso de recursos vea el siguiente enlace: [https://wiki.nlhpc.cl/SISTEMA_GESTOR_DE_RECURSOS SLURM]&lt;/div&gt;</summary>
		<author><name>Jmorales</name></author>
	</entry>
	<entry>
		<id>https://wiki.nlhpc.cl/index.php?title=Hardware_Disponible&amp;diff=744</id>
		<title>Hardware Disponible</title>
		<link rel="alternate" type="text/html" href="https://wiki.nlhpc.cl/index.php?title=Hardware_Disponible&amp;diff=744"/>
		<updated>2024-04-26T20:26:51Z</updated>

		<summary type="html">&lt;p&gt;Jmorales: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;El NLHPC cuenta actualmente con los siguientes recursos computacionales, distribuidos en varias particiones [https://wiki.nlhpc.cl/SISTEMA_GESTOR_DE_RECURSOS SLURM]:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;background:#ffffff&amp;quot; align=&amp;quot;top&amp;quot; class=&amp;quot;sortable wikitable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;caption align=&amp;quot;center&amp;quot; style=&amp;quot;background:DarkSlateBlue; color:white&amp;quot;&amp;gt;&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;Partición general&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/caption&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;60 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Nodo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Modelo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Cantidad&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;100 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Procesador&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;120 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;RAM&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;140 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Infiniband&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;sn[001-048]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Dell PowerEdge C6420&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;48&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2 x Intel Xeon Gold 6152 CPU @ 2.10GHz, 22 cores C./U.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;187 GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Infiniband FDR&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;background:#ffffff&amp;quot; align=&amp;quot;top&amp;quot; class=&amp;quot;sortable wikitable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;caption align=&amp;quot;center&amp;quot; style=&amp;quot;background:DarkSlateBlue; color:white&amp;quot;&amp;gt;&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;Partición largemem&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/caption&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;60 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Nodo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Modelo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Cantidad&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;100 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Procesador&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;120 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;RAM&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;140 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Infiniband&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;fn[001-009]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Dell PowerEdge R640&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;9&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2 x Intel Xeon Gold 6152 CPU @ 2.10GHz, 22 cores C./U.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;765 GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Infiniband FDR&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;background:#ffffff&amp;quot; align=&amp;quot;top&amp;quot; class=&amp;quot;sortable wikitable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;caption align=&amp;quot;center&amp;quot; style=&amp;quot;background:DarkSlateBlue; color:white&amp;quot;&amp;gt;&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;Partición v100&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/caption&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;60 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Nodo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Modelo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Cantidad&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;100 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Procesador&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;160 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;GPU&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;120 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;RAM&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;140 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Infiniband&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;gn[001-002]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Dell PowerEdge R740&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2 x Intel Xeon Gold 6152 CPU @ 2.10GHz, 22 cores C./U.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2x NVIDIA Tesla V100 C/U.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;187 GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Infiniband FDR&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;background:#ffffff&amp;quot; align=&amp;quot;top&amp;quot; class=&amp;quot;sortable wikitable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;caption align=&amp;quot;center&amp;quot; style=&amp;quot;background:DarkSlateBlue; color:white&amp;quot;&amp;gt;&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;Partición mi100&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/caption&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;60 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Nodo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Modelo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Cantidad&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;100 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Procesador&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;160 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;GPU&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;120 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;RAM&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;140 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Infiniband&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;gn003&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Dell PowerEdge R7525&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2 x AMD EPYC 7713 64-Core Processor CPU @ 2.0GHz, 64 cores C./U.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2x Instinct MI100 C/U.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;502 GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Infiniband FDR&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;background:#ffffff&amp;quot; align=&amp;quot;top&amp;quot; class=&amp;quot;sortable wikitable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;caption align=&amp;quot;center&amp;quot; style=&amp;quot;background:DarkSlateBlue; color:white&amp;quot;&amp;gt;&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;Partición MI210&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/caption&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;60 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Nodo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Modelo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Cantidad&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;100 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Procesador&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;120 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;RAM&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;140 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Infiniband&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;gn00[4-5]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Lenovo ThinkSystem SR675 V3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2 x AMD EPYC 9224 @ 2.5GHz, 24 cores c/u.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1457 GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Infiniband NDR&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;background:#ffffff&amp;quot; align=&amp;quot;top&amp;quot; class=&amp;quot;sortable wikitable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;caption align=&amp;quot;center&amp;quot; style=&amp;quot;background:DarkSlateBlue; color:white&amp;quot;&amp;gt;&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;Partición main&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/caption&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;60 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Nodo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Modelo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Cantidad&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;100 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Procesador&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;120 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;RAM&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;140 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Infiniband&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;mn00[1-27]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Lenovo ThinkSystem SR645 V3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;27&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2 x AMD EPYC 9754 @ 2,25GHz, 128 cores c/u.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;768 GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Infiniband NDR&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La partición debug es para uso exclusivo de pruebas que duren hasta 30 minutos. Cualquier trabajo que supere ese tiempo es cancelado automáticamente.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;background:#ffffff&amp;quot; align=&amp;quot;top&amp;quot; class=&amp;quot;sortable wikitable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;caption align=&amp;quot;center&amp;quot; style=&amp;quot;background:DarkSlateBlue; color:white&amp;quot;&amp;gt;&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;Partición debug&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/caption&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;60 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Nodo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Modelo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Cantidad&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;100 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Procesador&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;120 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;RAM&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;140 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Infiniband&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;leftraru[1-2]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Lenovo ThinkSystem SR645 V3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2 x AMD EPYC 9224  @ 2,5GHz, 24 cores c/u.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;768 GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Infiniband NDR&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La capacidad total de Guacolda-Leftraru Epu al día de hoy es de 9956 cores y 430 TFlops.&lt;br /&gt;
&lt;br /&gt;
Para más información respecto a la utilización del sistema gestor de colas y uso de recursos vea el siguiente enlace: [https://wiki.nlhpc.cl/SISTEMA_GESTOR_DE_RECURSOS SLURM]&lt;/div&gt;</summary>
		<author><name>Jmorales</name></author>
	</entry>
	<entry>
		<id>https://wiki.nlhpc.cl/index.php?title=Hardware_Disponible&amp;diff=743</id>
		<title>Hardware Disponible</title>
		<link rel="alternate" type="text/html" href="https://wiki.nlhpc.cl/index.php?title=Hardware_Disponible&amp;diff=743"/>
		<updated>2024-04-26T15:40:55Z</updated>

		<summary type="html">&lt;p&gt;Jmorales: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;El NLHPC cuenta actualmente con los siguientes recursos computacionales, distribuidos en varias particiones [https://wiki.nlhpc.cl/SISTEMA_GESTOR_DE_RECURSOS SLURM]:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;background:#ffffff&amp;quot; align=&amp;quot;top&amp;quot; class=&amp;quot;sortable wikitable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;caption align=&amp;quot;center&amp;quot; style=&amp;quot;background:DarkSlateBlue; color:white&amp;quot;&amp;gt;&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;Partición general&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/caption&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;60 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Nodo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Modelo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Cantidad&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;100 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Procesador&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;120 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;RAM&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;140 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Infiniband&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;sn[001-048]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Dell PowerEdge C6420&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;48&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2 x Intel Xeon Gold 6152 CPU @ 2.10GHz, 22 cores C./U.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;187 GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Infiniband FDR&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;background:#ffffff&amp;quot; align=&amp;quot;top&amp;quot; class=&amp;quot;sortable wikitable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;caption align=&amp;quot;center&amp;quot; style=&amp;quot;background:DarkSlateBlue; color:white&amp;quot;&amp;gt;&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;Partición largemem&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/caption&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;60 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Nodo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Modelo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Cantidad&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;100 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Procesador&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;120 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;RAM&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;140 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Infiniband&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;fn[001-009]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Dell PowerEdge R640&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;9&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2 x Intel Xeon Gold 6152 CPU @ 2.10GHz, 22 cores C./U.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;765 GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Infiniband FDR&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;background:#ffffff&amp;quot; align=&amp;quot;top&amp;quot; class=&amp;quot;sortable wikitable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;caption align=&amp;quot;center&amp;quot; style=&amp;quot;background:DarkSlateBlue; color:white&amp;quot;&amp;gt;&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;Partición v100&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/caption&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;60 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Nodo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Modelo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Cantidad&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;100 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Procesador&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;160 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;GPU&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;120 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;RAM&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;140 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Infiniband&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;gn[001-002]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Dell PowerEdge R740&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2 x Intel Xeon Gold 6152 CPU @ 2.10GHz, 22 cores C./U.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2x NVIDIA Tesla V100 C/U.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;187 GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Infiniband FDR&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;background:#ffffff&amp;quot; align=&amp;quot;top&amp;quot; class=&amp;quot;sortable wikitable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;caption align=&amp;quot;center&amp;quot; style=&amp;quot;background:DarkSlateBlue; color:white&amp;quot;&amp;gt;&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;Partición mi100&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/caption&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;60 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Nodo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Modelo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Cantidad&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;100 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Procesador&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;160 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;GPU&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;120 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;RAM&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;140 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Infiniband&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;gn003&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Dell PowerEdge R7525&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2 x AMD EPYC 7713 64-Core Processor CPU @ 2.0GHz, 64 cores C./U.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2x Instinct MI100 C/U.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;502 GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Infiniband FDR&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;background:#ffffff&amp;quot; align=&amp;quot;top&amp;quot; class=&amp;quot;sortable wikitable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;caption align=&amp;quot;center&amp;quot; style=&amp;quot;background:DarkSlateBlue; color:white&amp;quot;&amp;gt;&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;Partición MI210&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/caption&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;60 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Nodo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Modelo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Cantidad&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;100 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Procesador&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;120 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;RAM&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;140 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Infiniband&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;gn00[4-5]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Lenovo ThinkSystem SR675 V3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2 x AMD EPYC 9224 @ 2.5GHz, 24 cores c/u.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;768 GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Infiniband NDR&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;background:#ffffff&amp;quot; align=&amp;quot;top&amp;quot; class=&amp;quot;sortable wikitable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;caption align=&amp;quot;center&amp;quot; style=&amp;quot;background:DarkSlateBlue; color:white&amp;quot;&amp;gt;&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;Partición main&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/caption&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;60 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Nodo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Modelo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Cantidad&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;100 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Procesador&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;120 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;RAM&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;140 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Infiniband&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;mn00[1-27]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Lenovo ThinkSystem SR645 V3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;27&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2 x AMD EPYC 9754 @ 2,25GHz, 128 cores c/u.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;768 GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Infiniband NDR&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La partición debug es para uso exclusivo de pruebas que duren hasta 30 minutos. Cualquier trabajo que supere ese tiempo es cancelado automáticamente.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;background:#ffffff&amp;quot; align=&amp;quot;top&amp;quot; class=&amp;quot;sortable wikitable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;caption align=&amp;quot;center&amp;quot; style=&amp;quot;background:DarkSlateBlue; color:white&amp;quot;&amp;gt;&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;Partición debug&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/caption&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;60 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Nodo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Modelo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Cantidad&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;100 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Procesador&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;120 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;RAM&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;140 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Infiniband&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;leftraru[1-2]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Lenovo ThinkSystem SR645 V3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2 x AMD EPYC 9224  @ 2,5GHz, 24 cores c/u.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;768 GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Infiniband NDR&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La capacidad total de Guacolda-Leftraru Epu al día de hoy es de 9956 cores y 430 TFlops.&lt;br /&gt;
&lt;br /&gt;
Para más información respecto a la utilización del sistema gestor de colas y uso de recursos vea el siguiente enlace: [https://wiki.nlhpc.cl/SISTEMA_GESTOR_DE_RECURSOS SLURM]&lt;/div&gt;</summary>
		<author><name>Jmorales</name></author>
	</entry>
	<entry>
		<id>https://wiki.nlhpc.cl/index.php?title=Descripci%C3%B3n_General_del_Sistema&amp;diff=723</id>
		<title>Descripción General del Sistema</title>
		<link rel="alternate" type="text/html" href="https://wiki.nlhpc.cl/index.php?title=Descripci%C3%B3n_General_del_Sistema&amp;diff=723"/>
		<updated>2024-04-22T18:21:45Z</updated>

		<summary type="html">&lt;p&gt;Jmorales: /* Infraestructura Leftraru Epu */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== National Laboratory for High Performance Computing ==&lt;br /&gt;
El NLHPC en Chile está dirigido a la instalación en Chile de una capacidad computacional que pueda satisfacer la demanda científica nacional de computación de alto rendimiento (HPC), ofreciendo servicios de alta calidad y promoviendo su uso en las problemáticas de Investigación tanto básica como también aplicada, con énfasis en aplicaciones industriales. En años recientes, el desarrollo de las ciencias aplicadas y la industria ha sido dirigido por el uso sofisticado de las tecnologías de la información y las comunicaciones (ICT), proceso en el cual HPC ha jugado un rol fundamental.&lt;br /&gt;
&lt;br /&gt;
Nuestros servicios están diseñados para ofrecer soporte al ciclo de vida completo de la investigación e innovación basada en HPC.&lt;br /&gt;
&lt;br /&gt;
== Misión del NLHPC ==&lt;br /&gt;
La consolidación de una facilidad a nivel nacional de HPC al ofrecer servicios de alta calidad y training avanzado para así responder a la alta demanda de computación científica, desarrollando lazos entre grupos de investigación, la industria y el sector público.&lt;br /&gt;
&lt;br /&gt;
== Visión del NLHPC ==&lt;br /&gt;
Visionamos al NLHPC como un centro altamente competitivo con una gama de servicios para la investigación en computación de alto rendimiento de calidad de clase mundial.&lt;br /&gt;
&lt;br /&gt;
== Objetivo General ==&lt;br /&gt;
El NLHPC servirá como socio IT clave para los proyectos de investigación basados en HPC a gran escala.&lt;br /&gt;
&lt;br /&gt;
=== Objetivos específicos ===&lt;br /&gt;
Desarrollar y dar soporte a recursos computacionales y de redes eficaces y confiables permitiendo a investigadores nacionales tener acceso a capacidad HPC para así resolver intensos problemas científicos de computación y data. Estimular y participar en la creación de una red nacional de alta velocidad para la transmisión de data de investigación Usar y explorar arquitecturas y técnicas innovadoras para acelerar la computación científica. Gatillar nuevas iniciativas industriales en HPC. Ayudar a educar a las próximas generaciones de científicos e ingenieros en HPC. Incrementar la conciencia social sobre el rol de HPC en la sociedad contemporánea y el desarrollo tecnológico.&lt;br /&gt;
&lt;br /&gt;
== Infraestructura Guacolda-Leftraru Epu ==&lt;br /&gt;
=== Infraestructura Leftraru Epu===&lt;br /&gt;
* 280 TFlops total de rendimiento (sin coprocesadores)&lt;br /&gt;
* 7.360 cores total de cómputo&lt;br /&gt;
*  24.320 GB total de memoria RAM&lt;br /&gt;
* 27 nodos main &lt;br /&gt;
** 2 x AMD EPYC 9754 @ 2.25GHz, 128 cores c/u &lt;br /&gt;
** 768 GB de RAM c/u&lt;br /&gt;
* 2 nodos master &lt;br /&gt;
** 2 x AMD EPYC 9224 @ 2.5GHz Processor, 24 cores c/u &lt;br /&gt;
** 384 GB de RAM c/u&lt;br /&gt;
* 2 nodos gpu MI210 &lt;br /&gt;
** 2 x AMD EPYC 9224 @ 2.5GHz Processor, 24 cores c/u &lt;br /&gt;
** 1536 GB de RAM c/u&lt;br /&gt;
** 6 tarjetas AMD Instinct MI210 c/u&lt;br /&gt;
* 1 nodo gpu MI100 &lt;br /&gt;
** 2 x AMD EPYC 7713 @ 2.0GHz, 64 cores c/u&lt;br /&gt;
** 502 GB de RAM c/u&lt;br /&gt;
** 2 tarjetas AMD Instinct MI100 c/u.&lt;br /&gt;
* Infiniband NDR 400 Gbps&lt;br /&gt;
* Red servicio 1 Gpbs&lt;br /&gt;
* Red XClarity Controller para administración de hardware&lt;br /&gt;
* Racks enfriados por agua&lt;br /&gt;
* Enfriamiento in-row respaldo&lt;br /&gt;
* UPS 120 KVA autonomia: 30 mins&lt;br /&gt;
&lt;br /&gt;
=== Infraestructura Guacolda ===&lt;br /&gt;
&lt;br /&gt;
* 196 TFlops total de rendimiento (sin coprocesadores)&lt;br /&gt;
* 2.596 cores total de cómputo&lt;br /&gt;
* 16.235 GB total de memoria RAM&lt;br /&gt;
* 48 nodos General&lt;br /&gt;
** 2 x Intel(R) Xeon(R) Gold 6152 CPU @ 2.10GHz. 22 cores c/u &lt;br /&gt;
** 187 GB de RAM c/u&lt;br /&gt;
* 9 nodos largemem&lt;br /&gt;
** 2 x Intel(R) Xeon(R) Gold 6152 CPU @ 2.10GHz. 22 cores c/u &lt;br /&gt;
** 765 GB de RAM c/u&lt;br /&gt;
* 2 nodos v100&lt;br /&gt;
** 2 x Intel(R) Xeon(R) Gold 6152 CPU @ 2.10GHz. 22 cores c/u &lt;br /&gt;
** 187 GB de RAM c/u&lt;br /&gt;
** 2 x NVIDIA Tesla V100 c/u&lt;br /&gt;
* Infiniband FDR 56 Gbps&lt;br /&gt;
* Racks enfriados por agua&lt;br /&gt;
* Enfriamiento in-row respaldo&lt;br /&gt;
* UPS 120 KVA autonomia: 30 mins&lt;br /&gt;
&lt;br /&gt;
=== Almacenamiento Cluster ===&lt;br /&gt;
* Almacenamiento paralelo de clase mundial&lt;br /&gt;
* Alto rendimiento en operaciones IO&lt;br /&gt;
* Tolerante a fallas (alta disponibilidad)&lt;br /&gt;
* Interconexión infiniband&lt;br /&gt;
* Capacidades Big Data&lt;br /&gt;
&lt;br /&gt;
Características en Guacolda-Leftraru Epu&lt;br /&gt;
&lt;br /&gt;
* 4 PB de almacenamiento IBM Elastic Storage System (IBM ESS 3200)&lt;br /&gt;
* Almacenamiento metadata separado&lt;br /&gt;
* 2 controladoras SFA en H.A&lt;/div&gt;</summary>
		<author><name>Jmorales</name></author>
	</entry>
	<entry>
		<id>https://wiki.nlhpc.cl/index.php?title=Hardware_Disponible&amp;diff=722</id>
		<title>Hardware Disponible</title>
		<link rel="alternate" type="text/html" href="https://wiki.nlhpc.cl/index.php?title=Hardware_Disponible&amp;diff=722"/>
		<updated>2024-04-22T18:20:46Z</updated>

		<summary type="html">&lt;p&gt;Jmorales: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;El NLHPC cuenta actualmente con los siguientes recursos computacionales, distribuidos en varias particiones [https://wiki.nlhpc.cl/SISTEMA_GESTOR_DE_RECURSOS SLURM]:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;background:#ffffff&amp;quot; align=&amp;quot;top&amp;quot; class=&amp;quot;sortable wikitable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;caption align=&amp;quot;center&amp;quot; style=&amp;quot;background:DarkSlateBlue; color:white&amp;quot;&amp;gt;&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;Partición general&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/caption&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;60 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Nodo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Modelo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Cantidad&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;100 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Procesador&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;120 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;RAM&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;140 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Infiniband&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;sn[001-048]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Dell PowerEdge C6420&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;48&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2 x Intel Xeon Gold 6152 CPU @ 2.10GHz, 22 cores C./U.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;187 GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Infiniband FDR&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;background:#ffffff&amp;quot; align=&amp;quot;top&amp;quot; class=&amp;quot;sortable wikitable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;caption align=&amp;quot;center&amp;quot; style=&amp;quot;background:DarkSlateBlue; color:white&amp;quot;&amp;gt;&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;Partición largemem&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/caption&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;60 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Nodo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Modelo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Cantidad&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;100 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Procesador&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;120 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;RAM&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;140 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Infiniband&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;fn[001-009]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Dell PowerEdge R640&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;9&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2 x Intel Xeon Gold 6152 CPU @ 2.10GHz, 22 cores C./U.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;765 GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Infiniband FDR&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;background:#ffffff&amp;quot; align=&amp;quot;top&amp;quot; class=&amp;quot;sortable wikitable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;caption align=&amp;quot;center&amp;quot; style=&amp;quot;background:DarkSlateBlue; color:white&amp;quot;&amp;gt;&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;Partición v100&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/caption&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;60 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Nodo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Modelo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Cantidad&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;100 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Procesador&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;160 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;GPU&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;120 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;RAM&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;140 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Infiniband&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;gn[001-002]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Dell PowerEdge R740&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2 x Intel Xeon Gold 6152 CPU @ 2.10GHz, 22 cores C./U.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2x NVIDIA Tesla V100 C/U.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;187 GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Infiniband FDR&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;background:#ffffff&amp;quot; align=&amp;quot;top&amp;quot; class=&amp;quot;sortable wikitable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;caption align=&amp;quot;center&amp;quot; style=&amp;quot;background:DarkSlateBlue; color:white&amp;quot;&amp;gt;&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;Partición mi100&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/caption&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;60 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Nodo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Modelo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Cantidad&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;100 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Procesador&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;160 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;GPU&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;120 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;RAM&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;140 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Infiniband&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;gn003&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Dell PowerEdge R7525&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2 x AMD EPYC 7713 64-Core Processor CPU @ 2.0GHz, 64 cores C./U.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2x Instinct MI100 C/U.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;502 GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Infiniband FDR&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;background:#ffffff&amp;quot; align=&amp;quot;top&amp;quot; class=&amp;quot;sortable wikitable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;caption align=&amp;quot;center&amp;quot; style=&amp;quot;background:DarkSlateBlue; color:white&amp;quot;&amp;gt;&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;Partición MI210&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/caption&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;60 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Nodo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Modelo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Cantidad&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;100 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Procesador&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;120 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;RAM&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;140 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Infiniband&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;gn00[4-5]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Lenovo ThinkSystem SR675 V3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2 x AMD EPYC 9224 @ 2.5GHz, 24 cores c/u.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;768 GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Infiniband NDR&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;background:#ffffff&amp;quot; align=&amp;quot;top&amp;quot; class=&amp;quot;sortable wikitable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;caption align=&amp;quot;center&amp;quot; style=&amp;quot;background:DarkSlateBlue; color:white&amp;quot;&amp;gt;&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;Partición main&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/caption&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;60 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Nodo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Modelo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Cantidad&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;100 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Procesador&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;120 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;RAM&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;140 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Infiniband&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;mn00[1-29]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Lenovo ThinkSystem SR645 V3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;29&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2 x AMD EPYC 9754 @ 2,25GHz, 128 cores c/u.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;768 GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Infiniband NDR&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La partición debug es para uso exclusivo de pruebas que duren hasta 30 minutos. Cualquier trabajo que supere ese tiempo es cancelado automáticamente.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;background:#ffffff&amp;quot; align=&amp;quot;top&amp;quot; class=&amp;quot;sortable wikitable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;caption align=&amp;quot;center&amp;quot; style=&amp;quot;background:DarkSlateBlue; color:white&amp;quot;&amp;gt;&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;Partición debug&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/caption&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;60 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Nodo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Modelo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Cantidad&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;100 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Procesador&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;120 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;RAM&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;140 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Infiniband&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;leftraru[1-2]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Lenovo ThinkSystem SR645 V3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2 x AMD EPYC 9224  @ 2,5GHz, 24 cores c/u.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;768 GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Infiniband NDR&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La capacidad total de Guacolda-Leftraru Epu al día de hoy es de 9956 cores y 430 TFlops.&lt;br /&gt;
&lt;br /&gt;
Para más información respecto a la utilización del sistema gestor de colas y uso de recursos vea el siguiente enlace: [https://wiki.nlhpc.cl/SISTEMA_GESTOR_DE_RECURSOS SLURM]&lt;/div&gt;</summary>
		<author><name>Jmorales</name></author>
	</entry>
	<entry>
		<id>https://wiki.nlhpc.cl/index.php?title=Glosario&amp;diff=721</id>
		<title>Glosario</title>
		<link rel="alternate" type="text/html" href="https://wiki.nlhpc.cl/index.php?title=Glosario&amp;diff=721"/>
		<updated>2024-04-19T16:39:30Z</updated>

		<summary type="html">&lt;p&gt;Jmorales: /* C */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introducción ==&lt;br /&gt;
El presente documento contiene un listado de términos y palabras que son utilizadas en el ámbito de las presentaciones y cursos que dicta el NLHPC, como también en la wiki y en nuestros distintos sitios.&lt;br /&gt;
&lt;br /&gt;
Al poder entregar una definición transversal a las instancias mencionadas y a las relacionadas con el quehacer del NLHPC podremos comprender de mejor manera lo que deseamos expresar.&lt;br /&gt;
&lt;br /&gt;
== Glosario ==&lt;br /&gt;
=== A ===&lt;br /&gt;
* &#039;&#039;&#039;Acceso SSH&#039;&#039;&#039;: Referencia al uso mediante protocolo de seguridad SSH. Usualmente utilizado en terminales, como en aplicaciones como Putty.&lt;br /&gt;
&lt;br /&gt;
=== B ===&lt;br /&gt;
* &#039;&#039;&#039;Bash/Shell&#039;&#039;&#039;: Intérprete de comandos que permite la interacción interactiva con el usuario. Desde este intérprete de comandos es posible ejecutar comandos, programas y ejecutar simulaciones en el Gestor de Tareas del Cluster.&lt;br /&gt;
* &#039;&#039;&#039;Batch/Batch script/Script&#039;&#039;&#039;: Archivo de texto con un conjunto de instrucciones. A diferencia de un código fuente, estas instrucciones son ejecutadas por el sistema operativo o un programa interprete como por ejemplo Python.&lt;br /&gt;
&lt;br /&gt;
=== C ===&lt;br /&gt;
* &#039;&#039;&#039;Cache:&#039;&#039;&#039; Una caché es un componente de hardware o software que guarda datos para que las solicitudes futuras de esos datos se puedan atender con mayor rapidez.&lt;br /&gt;
* &#039;&#039;&#039;Cambio de Contexto:&#039;&#039;&#039; Consiste en la ejecución de una rutina perteneciente al núcleo del sistema operativo multitarea de una computadora, cuyo propósito es parar la ejecución de un hilo o proceso para dar paso a la ejecución de otro distinto.&lt;br /&gt;
* &#039;&#039;&#039;Cluster:&#039;&#039;&#039; Conjunto de computadores y servidores interconectados que se ven como una sola máquina. En nuestro caso tenemos los clusters Guacolda y Leftraru Epu.&lt;br /&gt;
* &#039;&#039;&#039;Código Fuente/Source code:&#039;&#039;&#039; Conjunto de archivos de texto que contienen las instrucciones computacionales que una vez que son compiladas generan un archivo de tipo binario que será el programa a ejecutar.&lt;br /&gt;
* &#039;&#039;&#039;Cola/Cola de Trabajo/Queue:&#039;&#039;&#039; Listado de trabajos asociados a un usuario y/o partición que se encuentran en distintos estados. La cola se organiza por orden de llegada.&lt;br /&gt;
* &#039;&#039;&#039;Compilador:&#039;&#039;&#039; En informática, un compilador es un tipo de traductor que transforma un programa entero de un lenguaje de programación (llamado código fuente) a otro.&lt;br /&gt;
* &#039;&#039;&#039;Core/CPU:&#039;&#039;&#039; Unidad de procesamiento, circuito electrónico que ejecuta las instrucciones de un programa.&lt;br /&gt;
&lt;br /&gt;
=== E ===&lt;br /&gt;
* &#039;&#039;&#039;Estado de Nodo:&#039;&#039;&#039; Referido a la situación en particular de un nodo. Un nodo puede encontrarse Disponible(IDLE), No Disponible(Down), Ocupado(Allocated), Ocupado Parcial(MIX).&lt;br /&gt;
* &#039;&#039;&#039;Estado de Tarea:&#039;&#039;&#039; Referido a la situación en particular de una tarea enviada al Gestor de Tareas. Una tarea puede encontrarse en Pendiende(Pending), En Ejecución(Running), Finalizada(Completed), Cancelada(Cancelled), entre otros.&lt;br /&gt;
&lt;br /&gt;
=== G ===&lt;br /&gt;
* &#039;&#039;&#039;Gestor/Gestor Slurm/Slurm:&#039;&#039;&#039; Organizador de recursos computacionales, particiones y colas de trabajo. Permite la organización y correcta asignación de recursos necesarios para que los usuarios puedan ejecutar sus simulaciones.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Gandalf:&#039;&#039;&#039; Es un istar (‘mago’), uno de los espíritus maia enviados a la Tierra Media durante la Tercera Edad del Sol para ayudar a sus habitantes en la lucha contra el «señor oscuro» Sauron. Allí adoptó el aspecto de un anciano de barba larga y de color blanca grisácea, vestido con una gran capa gris, un sombrero puntiagudo de color azul y un gran cayado.&lt;br /&gt;
&lt;br /&gt;
=== H ===&lt;br /&gt;
* &#039;&#039;&#039;Hardware:&#039;&#039;&#039; En informática se refiere a las partes físicas, tangibles, de un sistema informático; sus componentes eléctricos, electrónicos, electromecánicos y mecánicos.&lt;br /&gt;
* &#039;&#039;&#039;Hilo/Thread:&#039;&#039;&#039; Un hilo dentro de un procesador es la forma en que cada uno de los núcleos del CPU recibirá y procesará la información. Cada core puede atender un hilo a la vez.&lt;br /&gt;
* &#039;&#039;&#039;HPC:&#039;&#039;&#039; La computación de alto rendimiento (High performance Computing o HPC en inglés) es la agregación de potencia de cálculo para resolver problemas complejos en ciencia, ingeniería o gestión.&lt;br /&gt;
&lt;br /&gt;
=== I ===&lt;br /&gt;
* &#039;&#039;&#039;Identificador de Tarea/Job ID:&#039;&#039;&#039; Número único e irrepetible asignado a una tarea. Permite la identificación de una Tarea enviada al Gestor Slurm.&lt;br /&gt;
* &#039;&#039;&#039;IP:&#039;&#039;&#039; Una dirección IP es un número que identifica de forma única a una interfaz en red de cualquier dispositivo conectado a ella que utilice el protocolo IP (Internet Protocol), que corresponde al nivel de red del modelo TCP/IP.&lt;br /&gt;
&lt;br /&gt;
=== L ===&lt;br /&gt;
* &#039;&#039;&#039;Login/Inicio de Sesión:&#039;&#039;&#039; Dícese de la acción de ingresar su nombre de usuario y clave personal para acceder a una instancia computacional, como una terminal o a un servicio que requiera validación.&lt;br /&gt;
&lt;br /&gt;
=== M ===&lt;br /&gt;
* &#039;&#039;&#039;Memoria Compartida/Shared Memory:&#039;&#039;&#039; En informática, la memoria compartida es aquel tipo de memoria que puede ser accedida por múltiples programas, ya sea para comunicarse entre ellos o para evitar copias redundantes.&lt;br /&gt;
* &#039;&#039;&#039;MPI:&#039;&#039;&#039; (interfaz de paso de mensajes) es la API de comunicación estándar para trabajos paralelos de memoria distribuida capaz de implementarse en un clúster. Las tareas se pueden ejecutar en múltiples nodos.&lt;br /&gt;
* &#039;&#039;&#039;Multi Core:&#039;&#039;&#039; Un procesador multinúcleo es aquel que combina dos o más microprocesadores independientes en un solo paquete, a menudo un solo circuito integrado.&lt;br /&gt;
* &#039;&#039;&#039;Multi Hilo/Multi-Threaded:&#039;&#039;&#039; Las unidades centrales de procesamiento con capacidad para multihilo (multithreading en inglés) tienen soporte en hardware para ejecutar eficientemente múltiples hilos de ejecución.&lt;br /&gt;
&lt;br /&gt;
=== N ===&lt;br /&gt;
* &#039;&#039;&#039;Nodo:&#039;&#039;&#039; Unidad de hardware perteneciente a un cluster. Esta unidad tiene CPU y memoria RAM.&lt;br /&gt;
&lt;br /&gt;
=== O ===&lt;br /&gt;
* &#039;&#039;&#039;OpenMP:&#039;&#039;&#039; Es una interfaz de programación de aplicaciones (API) para la programación multiproceso de memoria compartida en múltiples plataformas. Las tareas se ejecutan en un único nodo.&lt;br /&gt;
&lt;br /&gt;
=== P ===&lt;br /&gt;
* &#039;&#039;&#039;Partición:&#039;&#039;&#039; En el ámbito del NLHPC, una partición es un conjunto de recursos físicos que incluye memoria RAM, procesadores y almacenamiento para la ejecución de tareas.&lt;br /&gt;
&lt;br /&gt;
=== R ===&lt;br /&gt;
* &#039;&#039;&#039;RAM:&#039;&#039;&#039; La memoria de acceso aleatorio (Random Access Memory, RAM) se utiliza como memoria de trabajo de computadoras y otros dispositivos para el sistema operativo.&lt;br /&gt;
&lt;br /&gt;
=== S ===&lt;br /&gt;
* &#039;&#039;&#039;Socket:&#039;&#039;&#039; Cantidad de procesadores que tiene un nodo. Un procesador puede tener n cores&lt;br /&gt;
* &#039;&#039;&#039;Software:&#039;&#039;&#039; Se conoce como software al soporte lógico de un sistema informático, que comprende el conjunto de los componentes lógicos necesarios que hacen posible la realización de tareas específicas.&lt;br /&gt;
* &#039;&#039;&#039;SSH:&#039;&#039;&#039; (Secure SHell) es el nombre de un protocolo y del programa que lo implementa cuya principal función es el acceso remoto a un servidor por medio de un canal seguro en el que toda la información está cifrada.&lt;br /&gt;
&lt;br /&gt;
=== T ===&lt;br /&gt;
* &#039;&#039;&#039;Tarea/Job:&#039;&#039;&#039; Dícese del script enviado al Gestor de Tareas que indica los recursos computacionales solicitados para la ejecución de una simulación y/o programa. La tarea pasa a la Cola de Trabajo en espera de recursos para su ejecución.&lt;br /&gt;
&lt;br /&gt;
== ¿Y ahora qué? ==&lt;br /&gt;
Con la aclaración de estos puntos, esperamos que su participación en próximos eventos del NLHPC como la lectura de la Wiki le resulte clarificadora para el uso del Cluster Guacolda-Leftraru Epu y que logre lanzar las simulaciones para obtener los resultados para sus investigaciones.&lt;br /&gt;
&lt;br /&gt;
También lo invitamos a enviarnos sus comentarios o recomendaciones de nuevas palabras a agregar a este glosario al correo &#039;&#039;&#039;[mailto:soporte@nlhpc.cl soporte@nlhpc.cl.]&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Jmorales</name></author>
	</entry>
	<entry>
		<id>https://wiki.nlhpc.cl/index.php?title=Glosario&amp;diff=720</id>
		<title>Glosario</title>
		<link rel="alternate" type="text/html" href="https://wiki.nlhpc.cl/index.php?title=Glosario&amp;diff=720"/>
		<updated>2024-04-19T16:38:49Z</updated>

		<summary type="html">&lt;p&gt;Jmorales: /* ¿Y ahora qué? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introducción ==&lt;br /&gt;
El presente documento contiene un listado de términos y palabras que son utilizadas en el ámbito de las presentaciones y cursos que dicta el NLHPC, como también en la wiki y en nuestros distintos sitios.&lt;br /&gt;
&lt;br /&gt;
Al poder entregar una definición transversal a las instancias mencionadas y a las relacionadas con el quehacer del NLHPC podremos comprender de mejor manera lo que deseamos expresar.&lt;br /&gt;
&lt;br /&gt;
== Glosario ==&lt;br /&gt;
=== A ===&lt;br /&gt;
* &#039;&#039;&#039;Acceso SSH&#039;&#039;&#039;: Referencia al uso mediante protocolo de seguridad SSH. Usualmente utilizado en terminales, como en aplicaciones como Putty.&lt;br /&gt;
&lt;br /&gt;
=== B ===&lt;br /&gt;
* &#039;&#039;&#039;Bash/Shell&#039;&#039;&#039;: Intérprete de comandos que permite la interacción interactiva con el usuario. Desde este intérprete de comandos es posible ejecutar comandos, programas y ejecutar simulaciones en el Gestor de Tareas del Cluster.&lt;br /&gt;
* &#039;&#039;&#039;Batch/Batch script/Script&#039;&#039;&#039;: Archivo de texto con un conjunto de instrucciones. A diferencia de un código fuente, estas instrucciones son ejecutadas por el sistema operativo o un programa interprete como por ejemplo Python.&lt;br /&gt;
&lt;br /&gt;
=== C ===&lt;br /&gt;
* &#039;&#039;&#039;Cache:&#039;&#039;&#039; Una caché es un componente de hardware o software que guarda datos para que las solicitudes futuras de esos datos se puedan atender con mayor rapidez.&lt;br /&gt;
* &#039;&#039;&#039;Cambio de Contexto:&#039;&#039;&#039; Consiste en la ejecución de una rutina perteneciente al núcleo del sistema operativo multitarea de una computadora, cuyo propósito es parar la ejecución de un hilo o proceso para dar paso a la ejecución de otro distinto.&lt;br /&gt;
* &#039;&#039;&#039;Cluster:&#039;&#039;&#039; Conjunto de computadores y servidores interconectados que se ven como una sola máquina. En nuestro caso tenemos los clusters Leftraru y Guacolda.&lt;br /&gt;
* &#039;&#039;&#039;Código Fuente/Source code:&#039;&#039;&#039; Conjunto de archivos de texto que contienen las instrucciones computacionales que una vez que son compiladas generan un archivo de tipo binario que será el programa a ejecutar.&lt;br /&gt;
* &#039;&#039;&#039;Cola/Cola de Trabajo/Queue:&#039;&#039;&#039; Listado de trabajos asociados a un usuario y/o partición que se encuentran en distintos estados. La cola se organiza por orden de llegada.&lt;br /&gt;
* &#039;&#039;&#039;Compilador:&#039;&#039;&#039; En informática, un compilador es un tipo de traductor que transforma un programa entero de un lenguaje de programación (llamado código fuente) a otro.&lt;br /&gt;
* &#039;&#039;&#039;Core/CPU:&#039;&#039;&#039; Unidad de procesamiento, circuito electrónico que ejecuta las instrucciones de un programa.&lt;br /&gt;
&lt;br /&gt;
=== E ===&lt;br /&gt;
* &#039;&#039;&#039;Estado de Nodo:&#039;&#039;&#039; Referido a la situación en particular de un nodo. Un nodo puede encontrarse Disponible(IDLE), No Disponible(Down), Ocupado(Allocated), Ocupado Parcial(MIX).&lt;br /&gt;
* &#039;&#039;&#039;Estado de Tarea:&#039;&#039;&#039; Referido a la situación en particular de una tarea enviada al Gestor de Tareas. Una tarea puede encontrarse en Pendiende(Pending), En Ejecución(Running), Finalizada(Completed), Cancelada(Cancelled), entre otros.&lt;br /&gt;
&lt;br /&gt;
=== G ===&lt;br /&gt;
* &#039;&#039;&#039;Gestor/Gestor Slurm/Slurm:&#039;&#039;&#039; Organizador de recursos computacionales, particiones y colas de trabajo. Permite la organización y correcta asignación de recursos necesarios para que los usuarios puedan ejecutar sus simulaciones.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Gandalf:&#039;&#039;&#039; Es un istar (‘mago’), uno de los espíritus maia enviados a la Tierra Media durante la Tercera Edad del Sol para ayudar a sus habitantes en la lucha contra el «señor oscuro» Sauron. Allí adoptó el aspecto de un anciano de barba larga y de color blanca grisácea, vestido con una gran capa gris, un sombrero puntiagudo de color azul y un gran cayado.&lt;br /&gt;
&lt;br /&gt;
=== H ===&lt;br /&gt;
* &#039;&#039;&#039;Hardware:&#039;&#039;&#039; En informática se refiere a las partes físicas, tangibles, de un sistema informático; sus componentes eléctricos, electrónicos, electromecánicos y mecánicos.&lt;br /&gt;
* &#039;&#039;&#039;Hilo/Thread:&#039;&#039;&#039; Un hilo dentro de un procesador es la forma en que cada uno de los núcleos del CPU recibirá y procesará la información. Cada core puede atender un hilo a la vez.&lt;br /&gt;
* &#039;&#039;&#039;HPC:&#039;&#039;&#039; La computación de alto rendimiento (High performance Computing o HPC en inglés) es la agregación de potencia de cálculo para resolver problemas complejos en ciencia, ingeniería o gestión.&lt;br /&gt;
&lt;br /&gt;
=== I ===&lt;br /&gt;
* &#039;&#039;&#039;Identificador de Tarea/Job ID:&#039;&#039;&#039; Número único e irrepetible asignado a una tarea. Permite la identificación de una Tarea enviada al Gestor Slurm.&lt;br /&gt;
* &#039;&#039;&#039;IP:&#039;&#039;&#039; Una dirección IP es un número que identifica de forma única a una interfaz en red de cualquier dispositivo conectado a ella que utilice el protocolo IP (Internet Protocol), que corresponde al nivel de red del modelo TCP/IP.&lt;br /&gt;
&lt;br /&gt;
=== L ===&lt;br /&gt;
* &#039;&#039;&#039;Login/Inicio de Sesión:&#039;&#039;&#039; Dícese de la acción de ingresar su nombre de usuario y clave personal para acceder a una instancia computacional, como una terminal o a un servicio que requiera validación.&lt;br /&gt;
&lt;br /&gt;
=== M ===&lt;br /&gt;
* &#039;&#039;&#039;Memoria Compartida/Shared Memory:&#039;&#039;&#039; En informática, la memoria compartida es aquel tipo de memoria que puede ser accedida por múltiples programas, ya sea para comunicarse entre ellos o para evitar copias redundantes.&lt;br /&gt;
* &#039;&#039;&#039;MPI:&#039;&#039;&#039; (interfaz de paso de mensajes) es la API de comunicación estándar para trabajos paralelos de memoria distribuida capaz de implementarse en un clúster. Las tareas se pueden ejecutar en múltiples nodos.&lt;br /&gt;
* &#039;&#039;&#039;Multi Core:&#039;&#039;&#039; Un procesador multinúcleo es aquel que combina dos o más microprocesadores independientes en un solo paquete, a menudo un solo circuito integrado.&lt;br /&gt;
* &#039;&#039;&#039;Multi Hilo/Multi-Threaded:&#039;&#039;&#039; Las unidades centrales de procesamiento con capacidad para multihilo (multithreading en inglés) tienen soporte en hardware para ejecutar eficientemente múltiples hilos de ejecución.&lt;br /&gt;
&lt;br /&gt;
=== N ===&lt;br /&gt;
* &#039;&#039;&#039;Nodo:&#039;&#039;&#039; Unidad de hardware perteneciente a un cluster. Esta unidad tiene CPU y memoria RAM.&lt;br /&gt;
&lt;br /&gt;
=== O ===&lt;br /&gt;
* &#039;&#039;&#039;OpenMP:&#039;&#039;&#039; Es una interfaz de programación de aplicaciones (API) para la programación multiproceso de memoria compartida en múltiples plataformas. Las tareas se ejecutan en un único nodo.&lt;br /&gt;
&lt;br /&gt;
=== P ===&lt;br /&gt;
* &#039;&#039;&#039;Partición:&#039;&#039;&#039; En el ámbito del NLHPC, una partición es un conjunto de recursos físicos que incluye memoria RAM, procesadores y almacenamiento para la ejecución de tareas.&lt;br /&gt;
&lt;br /&gt;
=== R ===&lt;br /&gt;
* &#039;&#039;&#039;RAM:&#039;&#039;&#039; La memoria de acceso aleatorio (Random Access Memory, RAM) se utiliza como memoria de trabajo de computadoras y otros dispositivos para el sistema operativo.&lt;br /&gt;
&lt;br /&gt;
=== S ===&lt;br /&gt;
* &#039;&#039;&#039;Socket:&#039;&#039;&#039; Cantidad de procesadores que tiene un nodo. Un procesador puede tener n cores&lt;br /&gt;
* &#039;&#039;&#039;Software:&#039;&#039;&#039; Se conoce como software al soporte lógico de un sistema informático, que comprende el conjunto de los componentes lógicos necesarios que hacen posible la realización de tareas específicas.&lt;br /&gt;
* &#039;&#039;&#039;SSH:&#039;&#039;&#039; (Secure SHell) es el nombre de un protocolo y del programa que lo implementa cuya principal función es el acceso remoto a un servidor por medio de un canal seguro en el que toda la información está cifrada.&lt;br /&gt;
&lt;br /&gt;
=== T ===&lt;br /&gt;
* &#039;&#039;&#039;Tarea/Job:&#039;&#039;&#039; Dícese del script enviado al Gestor de Tareas que indica los recursos computacionales solicitados para la ejecución de una simulación y/o programa. La tarea pasa a la Cola de Trabajo en espera de recursos para su ejecución.&lt;br /&gt;
&lt;br /&gt;
== ¿Y ahora qué? ==&lt;br /&gt;
Con la aclaración de estos puntos, esperamos que su participación en próximos eventos del NLHPC como la lectura de la Wiki le resulte clarificadora para el uso del Cluster Guacolda-Leftraru Epu y que logre lanzar las simulaciones para obtener los resultados para sus investigaciones.&lt;br /&gt;
&lt;br /&gt;
También lo invitamos a enviarnos sus comentarios o recomendaciones de nuevas palabras a agregar a este glosario al correo &#039;&#039;&#039;[mailto:soporte@nlhpc.cl soporte@nlhpc.cl.]&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Jmorales</name></author>
	</entry>
	<entry>
		<id>https://wiki.nlhpc.cl/index.php?title=MATLAB&amp;diff=719</id>
		<title>MATLAB</title>
		<link rel="alternate" type="text/html" href="https://wiki.nlhpc.cl/index.php?title=MATLAB&amp;diff=719"/>
		<updated>2024-04-19T16:37:54Z</updated>

		<summary type="html">&lt;p&gt;Jmorales: /* Modulos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== ¿Qué es? ==&lt;br /&gt;
&lt;br /&gt;
MATLAB (abreviatura de MATrix LABoratory, &amp;quot;laboratorio de matrices&amp;quot;) es una herramienta de software matemático que ofrece un entorno de desarrollo integrado (IDE) con un lenguaje de programación propio (lenguaje M).&lt;br /&gt;
&lt;br /&gt;
== Modulos ==&lt;br /&gt;
Se encuentra disponible con el nombre &#039;&#039;&#039;Matlab/2017&#039;&#039;&#039; y el runtime esta agregado como &#039;&#039;&#039;MCR/R2017a&#039;&#039;&#039; en todas las particiones de Guacolda-Leftraru Epu.&lt;br /&gt;
&lt;br /&gt;
== Ejemplo SBATCH para [https://wiki.nlhpc.cl/SISTEMA_GESTOR_DE_RECURSOS#SLURM_Workload_Manager SLURM] ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -J nombretarea&lt;br /&gt;
#SBATCH -p general&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
#SBATCH --ntasks-per-node=1&lt;br /&gt;
#SBATCH --mem-per-cpu=4363&lt;br /&gt;
#SBATCH --mail-user=usuario@correo.cl&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH -o %j_%x.out&lt;br /&gt;
#SBATCH -e %j_%x.err&lt;br /&gt;
#SBATCH --license=matlab #agregar si se va a ocupar MATLAB&lt;br /&gt;
&lt;br /&gt;
ml intel/2019b&lt;br /&gt;
ml Matlab/2017&lt;br /&gt;
&lt;br /&gt;
matlab -nodisplay -nosplash -nodesktop &amp;lt; ejemplo.m&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
(Sin paralelización)&lt;br /&gt;
&lt;br /&gt;
== Licencias ==&lt;br /&gt;
Existen 50 licencias disponibles para el uso de MATLAB proporcionadas por el [http://www.cmm.uchile.cl/ CMM], pero es posible evitar esta restricción de licencias creando una [https://wiki.nlhpc.cl/MATLAB_Compilaci%C3%B3n compilación standalone] con el Toolbox Compiler. El gestor de recursos cancelara las tareas que no indiquen las licencias en el script SBATCH, todo esto para favorecer el uso entre los distintos usuarios.&lt;br /&gt;
&lt;br /&gt;
== Toolbox ==&lt;br /&gt;
Tenemos disponibles los siguientes toolbox con su respectiva cantidad de licencias.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table align=&amp;quot;center&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;height:519px; width:500px&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;tr&amp;gt;&lt;br /&gt;
			&amp;lt;th scope=&amp;quot;col&amp;quot;&amp;gt;Nombre&amp;lt;/th&amp;gt;&lt;br /&gt;
			&amp;lt;th scope=&amp;quot;col&amp;quot;&amp;gt;Cantidad&amp;lt;/th&amp;gt;&lt;br /&gt;
			&amp;lt;th scope=&amp;quot;col&amp;quot;&amp;gt;Licencia Slurm&amp;lt;/th&amp;gt;&lt;br /&gt;
		&amp;lt;/tr&amp;gt;&lt;br /&gt;
		&amp;lt;tr&amp;gt;&lt;br /&gt;
			&amp;lt;td&amp;gt;SIMULINK&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;td style=&amp;quot;text-align:center&amp;quot;&amp;gt;2&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;td&amp;gt;matlab-simulink&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;/tr&amp;gt;&lt;br /&gt;
		&amp;lt;tr&amp;gt;&lt;br /&gt;
			&amp;lt;td&amp;gt;Bioinformatics&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;td style=&amp;quot;text-align:center&amp;quot;&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;td&amp;gt;matlab-bioinformatics&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;/tr&amp;gt;&lt;br /&gt;
		&amp;lt;tr&amp;gt;&lt;br /&gt;
			&amp;lt;td&amp;gt;Control&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;td style=&amp;quot;text-align:center&amp;quot;&amp;gt;20&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;td&amp;gt;matlab-control&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;/tr&amp;gt;&lt;br /&gt;
		&amp;lt;tr&amp;gt;&lt;br /&gt;
			&amp;lt;td&amp;gt;Curve_Fitting&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;td style=&amp;quot;text-align:center&amp;quot;&amp;gt;2&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;td&amp;gt;matlab-curve_fitting&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;/tr&amp;gt;&lt;br /&gt;
		&amp;lt;tr&amp;gt;&lt;br /&gt;
			&amp;lt;td&amp;gt;Database&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;td style=&amp;quot;text-align:center&amp;quot;&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;td&amp;gt;matlab-database&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;/tr&amp;gt;&lt;br /&gt;
		&amp;lt;tr&amp;gt;&lt;br /&gt;
			&amp;lt;td&amp;gt;Econometrics&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;td style=&amp;quot;text-align:center&amp;quot;&amp;gt;2&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;td&amp;gt;matlab-econometrics&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;/tr&amp;gt;&lt;br /&gt;
		&amp;lt;tr&amp;gt;&lt;br /&gt;
			&amp;lt;td&amp;gt;Financial&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;td style=&amp;quot;text-align:center&amp;quot;&amp;gt;2&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;td&amp;gt;matlab-financial&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;/tr&amp;gt;&lt;br /&gt;
		&amp;lt;tr&amp;gt;&lt;br /&gt;
			&amp;lt;td&amp;gt;GADS&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;td style=&amp;quot;text-align:center&amp;quot;&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;td&amp;gt;matlab-gads&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;/tr&amp;gt;&lt;br /&gt;
		&amp;lt;tr&amp;gt;&lt;br /&gt;
			&amp;lt;td&amp;gt;Image&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;td style=&amp;quot;text-align:center&amp;quot;&amp;gt;2&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;td&amp;gt;matlab-image&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;/tr&amp;gt;&lt;br /&gt;
		&amp;lt;tr&amp;gt;&lt;br /&gt;
			&amp;lt;td&amp;gt;MATLAB_Coder&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;td style=&amp;quot;text-align:center&amp;quot;&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;td&amp;gt;matlab-matlab_code&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;/tr&amp;gt;&lt;br /&gt;
		&amp;lt;tr&amp;gt;&lt;br /&gt;
			&amp;lt;td&amp;gt;Compiler&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;td style=&amp;quot;text-align:center&amp;quot;&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;td&amp;gt;matlab-compiler&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;/tr&amp;gt;&lt;br /&gt;
		&amp;lt;tr&amp;gt;&lt;br /&gt;
			&amp;lt;td&amp;gt;Optimization&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;td style=&amp;quot;text-align:center&amp;quot;&amp;gt;5&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;td&amp;gt;matlab-optimization&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;/tr&amp;gt;&lt;br /&gt;
		&amp;lt;tr&amp;gt;&lt;br /&gt;
			&amp;lt;td&amp;gt;[https://wiki.nlhpc.cl/MATLAB_Distrib_Computing Distrib_Computing]&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;td style=&amp;quot;text-align:center&amp;quot;&amp;gt;2&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;td&amp;gt;matlab-distrib_computing&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;/tr&amp;gt;&lt;br /&gt;
		&amp;lt;tr&amp;gt;&lt;br /&gt;
			&amp;lt;td&amp;gt;PDE&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;td style=&amp;quot;text-align:center&amp;quot;&amp;gt;20&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;td&amp;gt;matlab-pde&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;/tr&amp;gt;&lt;br /&gt;
		&amp;lt;tr&amp;gt;&lt;br /&gt;
			&amp;lt;td&amp;gt;Signal&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;td style=&amp;quot;text-align:center&amp;quot;&amp;gt;2&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;td&amp;gt;matlab-signal&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;/tr&amp;gt;&lt;br /&gt;
		&amp;lt;tr&amp;gt;&lt;br /&gt;
			&amp;lt;td&amp;gt;SimBiology&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;td style=&amp;quot;text-align:center&amp;quot;&amp;gt;2&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;td&amp;gt;matlab-simbiology&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;/tr&amp;gt;&lt;br /&gt;
		&amp;lt;tr&amp;gt;&lt;br /&gt;
			&amp;lt;td&amp;gt;Statistics&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;td style=&amp;quot;text-align:center&amp;quot;&amp;gt;5&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;td&amp;gt;matlab-statistics&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;/tr&amp;gt;&lt;br /&gt;
		&amp;lt;tr&amp;gt;&lt;br /&gt;
			&amp;lt;td&amp;gt;Identification&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;td style=&amp;quot;text-align:center&amp;quot;&amp;gt;&amp;amp;nbsp;2 &amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;td&amp;gt;&amp;amp;nbsp;matlab-identification&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;/tr&amp;gt;&lt;br /&gt;
		&amp;lt;tr&amp;gt;&lt;br /&gt;
			&amp;lt;td&amp;gt;Wavelet&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;td style=&amp;quot;text-align:center&amp;quot;&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;td&amp;gt;matlab-wavelet&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Referencias ==&lt;br /&gt;
    &lt;br /&gt;
* [https://la.mathworks.com/help/matlab/language-fundamentals.html Language Fundamentals]&lt;br /&gt;
* [http://www.cas.mcmaster.ca/~cs4te3/tutorials/matlab_toolbox_quickref.pdf MATLAB Toolbox Quickref]&lt;br /&gt;
* [http://walkingrandomly.com/?p=5343 Checkpointing MATLAB Programs]&lt;/div&gt;</summary>
		<author><name>Jmorales</name></author>
	</entry>
	<entry>
		<id>https://wiki.nlhpc.cl/index.php?title=Informaci%C3%B3n_para_nuevos_usuarios&amp;diff=718</id>
		<title>Información para nuevos usuarios</title>
		<link rel="alternate" type="text/html" href="https://wiki.nlhpc.cl/index.php?title=Informaci%C3%B3n_para_nuevos_usuarios&amp;diff=718"/>
		<updated>2024-04-19T16:37:06Z</updated>

		<summary type="html">&lt;p&gt;Jmorales: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Esta es la wiki de usuarios de Guacolda-Leftraru Epu, el clúster HPC del NLHPC. Aquí encontrará información útil para:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Ingresar al clúster: [https://wiki.nlhpc.cl/Tutorial_de_acceso_a_Leftraru_via_SSH Tutorial acceso SSH]&lt;br /&gt;
* Descripción del hardware: [https://wiki.nlhpc.cl/Hardware_Disponible Recursos Computacionales NLHPC]&lt;br /&gt;
* Lanzar tareas en el gestor de colas Slurm: [https://wiki.nlhpc.cl/SISTEMA_GESTOR_DE_RECURSOS Sistema Gestor de Recursos]&lt;br /&gt;
* Solicitar soporte mediante ticket: [https://wiki.nlhpc.cl/Como_abrir_un_ticket Cómo abrir un ticket]&lt;br /&gt;
* Preguntas frecuentes: [https://wiki.nlhpc.cl/FAQs FAQs]&lt;/div&gt;</summary>
		<author><name>Jmorales</name></author>
	</entry>
	<entry>
		<id>https://wiki.nlhpc.cl/index.php?title=Software_Leftraru&amp;diff=717</id>
		<title>Software Leftraru</title>
		<link rel="alternate" type="text/html" href="https://wiki.nlhpc.cl/index.php?title=Software_Leftraru&amp;diff=717"/>
		<updated>2024-04-19T16:36:28Z</updated>

		<summary type="html">&lt;p&gt;Jmorales: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;El software instalado en Guacolda-Leftraru Epu se encuentra dividido en dos sistemas de aplicaciones distintos,&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.nlhpc.cl/Lmod Lmod]&lt;br /&gt;
* [https://wiki.nlhpc.cl/Environment_Modules Environment Modules]&lt;br /&gt;
&lt;br /&gt;
Este software corresponde a las aplicaciones instaladas por el Equipo de Soporte solicitadas al email [mailto:soporte@nlhpc.cl soporte@nlhpc.cl]&lt;/div&gt;</summary>
		<author><name>Jmorales</name></author>
	</entry>
	<entry>
		<id>https://wiki.nlhpc.cl/index.php?title=Sumario&amp;diff=716</id>
		<title>Sumario</title>
		<link rel="alternate" type="text/html" href="https://wiki.nlhpc.cl/index.php?title=Sumario&amp;diff=716"/>
		<updated>2024-04-19T16:36:02Z</updated>

		<summary type="html">&lt;p&gt;Jmorales: /* Software instalado en el Clúster */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Información para nuevos usuarios ==&lt;br /&gt;
Esta es la wiki para nuestra comunidad de usuarios del NLHPC. Aquí encontrará información útil para:&lt;br /&gt;
&lt;br /&gt;
* Ingresar al clúster&lt;br /&gt;
* Descripción del hardware&lt;br /&gt;
* Lanzar tareas en el gestor de recursos &#039;&#039;&#039;Slurm&#039;&#039;&#039;&lt;br /&gt;
* Preguntas Frecuentes&lt;br /&gt;
* Para más información puede visitar [https://wiki.nlhpc.cl/Informaci%C3%B3n_para_nuevos_usuarios Aquí]&lt;br /&gt;
&lt;br /&gt;
== Recursos computacionales del Clúster ==&lt;br /&gt;
Nuestro clúster cuenta actualmente con 7 particiones: general, largemem, V100, mi100, mi210, main  y debug.&lt;br /&gt;
&lt;br /&gt;
Las caracterísiticas de estas particiones pueden encontrarse en [https://wiki.nlhpc.cl/Hardware_Disponible Recursos Computacionales NLHPC]&lt;br /&gt;
&lt;br /&gt;
== Creación de cuentas ==&lt;br /&gt;
El proceso de creación de cuentas es relativamente fácil. Para poder crear una cuenta debe seguir las instrucciones del siguiente [http://www.nlhpc.cl/es/servicios enlace] y luego postular a una cuenta rellenando información en un formulario online.&lt;br /&gt;
&lt;br /&gt;
== Software instalado en el Clúster ==&lt;br /&gt;
Guacolda-Leftraru Epu cuenta con una amplia gama de software.&lt;br /&gt;
&lt;br /&gt;
Para saber el software que está instalado en nuestro clúster, vaya al siguiente link: [https://wiki.nlhpc.cl/Lmod Lmod]&lt;br /&gt;
&lt;br /&gt;
Tenga en cuenta que el NLHPC no entrega licencias de software, por lo que es responsabilidad de cada usuario o grupo de usuarios el adquirir estas licencias.&lt;br /&gt;
&lt;br /&gt;
== Accediendo al Clúster ==&lt;br /&gt;
Nuestro clúster utiliza Linux como sistema operativo el que permite el acceso a nuestros usuarios mediante el protocolo [https://es.wikipedia.org/wiki/Secure_Shell SSH] para conectase remotamente. Puede conectarse a su cuenta accediendo a la siguiente dirección:&lt;br /&gt;
&lt;br /&gt;
 leftraru.nlhpc.cl &lt;br /&gt;
&lt;br /&gt;
Puede encontrar mayor información en [https://wiki.nlhpc.cl/Tutorial_de_acceso_a_Leftraru_via_SSH Tutorial de acceso a Leftraru via SSH]. Para facilitar la copia de archivos hacia y desde el clúster, vea el [https://wiki.nlhpc.cl/Tutorial_de_acceso_a_archivos Tutorial de acceso a archivos]&lt;br /&gt;
&lt;br /&gt;
== MFA o autenticación multifactor == &lt;br /&gt;
MFA o autenticación multifactor agrega una capa de protección al proceso de inicio de sesión. En el caso del NLHPC, se ha decidido integrar MFA adicionalmente al uso de contraseñas y llaves. El proceso de creación de MFA se ejecutará automáticamente cuando inicie sesión y es necesario que tenga a la mano su celular con la aplicación Google Authenticator o Authy instalada. Cuando inicie sesión, se mostrará un código qr que deberá escanear en alguna de estas aplicaciones. También se mostrarán un “secret key” que le permitirá recuperar el acceso en el caso de extravío de su celular. La próxima vez que inicie sesión en su cuenta se pedirá tanto la contraseña de acceso como el código generado por la aplicación multifactor.&lt;br /&gt;
&lt;br /&gt;
== Slurm, sistema de gestión de recursos ==&lt;br /&gt;
En el NLHPC utilizamos [https://slurm.schedmd.com/ Slurm] como gestor de recursos. Slurm provee de un framework para encolar trabajos, asignación de nodos de cómputo, reserva de tiempo de CPU, ejecución y gestión de trabajos dentro de clúster. Nuestros nodos de cómputo se encuentran agrupados en particiones, dentro de las cuales los usuarios pueden ejecutar sus trabajos dependiendo de sus necesidades.&lt;br /&gt;
&lt;br /&gt;
Para ver más información acerca de cómo trabajar con Slurm en el clúster, por favor visite el tutorial de [https://wiki.nlhpc.cl/SISTEMA_GESTOR_DE_RECURSOS ejecución de tareas dentro de Leftaru.]&lt;br /&gt;
&lt;br /&gt;
== Lustre, sistema de archivos distribuido ==&lt;br /&gt;
[https://es.wikipedia.org/wiki/Lustre_%28sistema_de_archivos%29 Lustre] es un conocido [https://es.wikipedia.org/wiki/Sistema_de_archivos_distribuido sistema de archivos distribuido] de alta disponibilidad que permite usar una red de computadores para construir un espacio de almacenamiento amplio, escalable y mantenible en el que se pueden definir cuotas de utilización por usuario.&lt;br /&gt;
&lt;br /&gt;
Lustre es open source, pero debido a su envergadura y dificultad para constituirlo, se ha optado por contratar una solución privada (a la empresa [http://www.ddn.com/ DDN]) que incluye tanto infraestructura como configuraciones optimizadas de tal manera de contar con una opción de almacenamiento acorde a las necesidades del NLHPC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Limitaciones y excepciones de Lustre:&#039;&#039;&#039; A pesar de tener muchas características sobresalientes, y en pos de aumentar el rendimiento de la lectura y escritura de archivos, Lustre no permite bloquear un archivo ([https://en.wikipedia.org/wiki/File_locking file locking] en inglés). Esto implica que muchos de los motores de bases de datos más conocidos (MySQL, Postgres, etc.) e incluso algunas aplicaciones que hacen uso de esta característica no funcionen o se caigan en su ejecución. Se recomienda realizar esa parte del trabajo en la partición /mnt/flock/usuario.&lt;br /&gt;
&lt;br /&gt;
== Tutoriales ==&lt;br /&gt;
[https://wiki.nlhpc.cl/Tutorial_de_acceso_a_Leftraru_via_SSH Tutorial de acceso a Leftraru via SSH]&lt;br /&gt;
&lt;br /&gt;
[https://wiki.nlhpc.cl/SISTEMA_GESTOR_DE_RECURSOS Ejecución de tareas dentro de Leftaru]&lt;br /&gt;
&lt;br /&gt;
Presentación uso del clúster del NLHPC&lt;br /&gt;
&lt;br /&gt;
[https://wiki.nlhpc.cl/Escalamiento Escalamiento de Aplicaciones]&lt;br /&gt;
&lt;br /&gt;
[https://wiki.nlhpc.cl/Monitoreo_De_Tareas Monitoreo De Tareas]&lt;br /&gt;
&lt;br /&gt;
[https://wiki.nlhpc.cl/Categor%C3%ADa:Software Documentación de temas relacionados con el software del clúster]&lt;/div&gt;</summary>
		<author><name>Jmorales</name></author>
	</entry>
	<entry>
		<id>https://wiki.nlhpc.cl/index.php?title=Informaci%C3%B3n_para_nuevos_usuarios&amp;diff=715</id>
		<title>Información para nuevos usuarios</title>
		<link rel="alternate" type="text/html" href="https://wiki.nlhpc.cl/index.php?title=Informaci%C3%B3n_para_nuevos_usuarios&amp;diff=715"/>
		<updated>2024-04-19T16:34:55Z</updated>

		<summary type="html">&lt;p&gt;Jmorales: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Esta es la wiki de usuarios de Leftraru Epu, el clúster HPC del NLHPC. Aquí encontrará información útil para:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Ingresar al clúster: [https://wiki.nlhpc.cl/Tutorial_de_acceso_a_Leftraru_via_SSH Tutorial acceso SSH]&lt;br /&gt;
* Descripción del hardware: [https://wiki.nlhpc.cl/Hardware_Disponible Recursos Computacionales NLHPC]&lt;br /&gt;
* Lanzar tareas en el gestor de colas Slurm: [https://wiki.nlhpc.cl/SISTEMA_GESTOR_DE_RECURSOS Sistema Gestor de Recursos]&lt;br /&gt;
* Solicitar soporte mediante ticket: [https://wiki.nlhpc.cl/Como_abrir_un_ticket Cómo abrir un ticket]&lt;br /&gt;
* Preguntas frecuentes: [https://wiki.nlhpc.cl/FAQs FAQs]&lt;/div&gt;</summary>
		<author><name>Jmorales</name></author>
	</entry>
	<entry>
		<id>https://wiki.nlhpc.cl/index.php?title=Software_Leftraru&amp;diff=714</id>
		<title>Software Leftraru</title>
		<link rel="alternate" type="text/html" href="https://wiki.nlhpc.cl/index.php?title=Software_Leftraru&amp;diff=714"/>
		<updated>2024-04-19T16:34:14Z</updated>

		<summary type="html">&lt;p&gt;Jmorales: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;El software instalado en Leftraru Epu se encuentra dividido en dos sistemas de aplicaciones distintos,&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.nlhpc.cl/Lmod Lmod]&lt;br /&gt;
* [https://wiki.nlhpc.cl/Environment_Modules Environment Modules]&lt;br /&gt;
&lt;br /&gt;
Este software corresponde a las aplicaciones instaladas por el Equipo de Soporte solicitadas al email [mailto:soporte@nlhpc.cl soporte@nlhpc.cl]&lt;/div&gt;</summary>
		<author><name>Jmorales</name></author>
	</entry>
	<entry>
		<id>https://wiki.nlhpc.cl/index.php?title=Hardware_Disponible&amp;diff=713</id>
		<title>Hardware Disponible</title>
		<link rel="alternate" type="text/html" href="https://wiki.nlhpc.cl/index.php?title=Hardware_Disponible&amp;diff=713"/>
		<updated>2024-04-19T16:33:16Z</updated>

		<summary type="html">&lt;p&gt;Jmorales: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;El NLHPC cuenta actualmente con los siguientes recursos computacionales, distribuidos en varias particiones [https://wiki.nlhpc.cl/SISTEMA_GESTOR_DE_RECURSOS SLURM]:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;background:#ffffff&amp;quot; align=&amp;quot;top&amp;quot; class=&amp;quot;sortable wikitable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;caption align=&amp;quot;center&amp;quot; style=&amp;quot;background:DarkSlateBlue; color:white&amp;quot;&amp;gt;&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;Partición general&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/caption&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;60 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Nodo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Modelo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Cantidad&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;100 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Procesador&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;120 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;RAM&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;140 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Infiniband&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;sn[001-048]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Dell PowerEdge C6420&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;48&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2 x Intel Xeon Gold 6152 CPU @ 2.10GHz, 22 cores C./U.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;187 GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Infiniband FDR&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;background:#ffffff&amp;quot; align=&amp;quot;top&amp;quot; class=&amp;quot;sortable wikitable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;caption align=&amp;quot;center&amp;quot; style=&amp;quot;background:DarkSlateBlue; color:white&amp;quot;&amp;gt;&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;Partición largemem&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/caption&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;60 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Nodo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Modelo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Cantidad&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;100 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Procesador&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;120 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;RAM&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;140 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Infiniband&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;fn[001-009]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Dell PowerEdge R640&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;9&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2 x Intel Xeon Gold 6152 CPU @ 2.10GHz, 22 cores C./U.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;765 GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Infiniband FDR&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;background:#ffffff&amp;quot; align=&amp;quot;top&amp;quot; class=&amp;quot;sortable wikitable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;caption align=&amp;quot;center&amp;quot; style=&amp;quot;background:DarkSlateBlue; color:white&amp;quot;&amp;gt;&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;Partición v100&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/caption&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;60 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Nodo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Modelo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Cantidad&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;100 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Procesador&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;160 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;GPU&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;120 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;RAM&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;140 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Infiniband&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;gn[001-002]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Dell PowerEdge R740&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2 x Intel Xeon Gold 6152 CPU @ 2.10GHz, 22 cores C./U.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2x NVIDIA Tesla V100 C/U.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;187 GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Infiniband FDR&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;background:#ffffff&amp;quot; align=&amp;quot;top&amp;quot; class=&amp;quot;sortable wikitable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;caption align=&amp;quot;center&amp;quot; style=&amp;quot;background:DarkSlateBlue; color:white&amp;quot;&amp;gt;&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;Partición mi100&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/caption&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;60 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Nodo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Modelo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Cantidad&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;100 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Procesador&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;160 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;GPU&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;120 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;RAM&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;140 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Infiniband&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;gn003&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Dell PowerEdge R7525&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2 x AMD EPYC 7713 64-Core Processor CPU @ 2.0GHz, 64 cores C./U.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2x Instinct MI100 C/U.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;502 GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Infiniband FDR&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;background:#ffffff&amp;quot; align=&amp;quot;top&amp;quot; class=&amp;quot;sortable wikitable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;caption align=&amp;quot;center&amp;quot; style=&amp;quot;background:DarkSlateBlue; color:white&amp;quot;&amp;gt;&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;Partición MI210&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/caption&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;60 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Nodo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Modelo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Cantidad&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;100 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Procesador&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;120 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;RAM&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;140 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Infiniband&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;gn00[4-5]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Lenovo ThinkSystem SR675 V3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2 x AMD EPYC 9224 @ 2.5GHz, 24 cores c/u.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;768 GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Infiniband HDR&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;background:#ffffff&amp;quot; align=&amp;quot;top&amp;quot; class=&amp;quot;sortable wikitable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;caption align=&amp;quot;center&amp;quot; style=&amp;quot;background:DarkSlateBlue; color:white&amp;quot;&amp;gt;&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;Partición main&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/caption&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;60 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Nodo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Modelo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Cantidad&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;100 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Procesador&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;120 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;RAM&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;140 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Infiniband&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;mn00[1-29]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Lenovo ThinkSystem SR645 V3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;29&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2 x AMD EPYC 9754 @ 2,25GHz, 128 cores c/u.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;768 GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Infiniband HDR&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La partición debug es para uso exclusivo de pruebas que duren hasta 30 minutos. Cualquier trabajo que supere ese tiempo es cancelado automáticamente.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;background:#ffffff&amp;quot; align=&amp;quot;top&amp;quot; class=&amp;quot;sortable wikitable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;caption align=&amp;quot;center&amp;quot; style=&amp;quot;background:DarkSlateBlue; color:white&amp;quot;&amp;gt;&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;Partición debug&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/caption&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;60 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Nodo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Modelo&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;80 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Cantidad&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;100 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Procesador&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;120 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;RAM&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;140 px&amp;quot; style=&amp;quot;background:Lavender; color:Black&amp;quot;&amp;gt;Infiniband&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;leftraru[1-2]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Lenovo ThinkSystem SR645 V3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2 x AMD EPYC 9224  @ 2,5GHz, 24 cores c/u.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;768 GB&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Infiniband HDR&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La capacidad total de Guacolda-Leftraru Epu al día de hoy es de 9956 cores y 430 TFlops.&lt;br /&gt;
&lt;br /&gt;
Para más información respecto a la utilización del sistema gestor de colas y uso de recursos vea el siguiente enlace: [https://wiki.nlhpc.cl/SISTEMA_GESTOR_DE_RECURSOS SLURM]&lt;/div&gt;</summary>
		<author><name>Jmorales</name></author>
	</entry>
	<entry>
		<id>https://wiki.nlhpc.cl/index.php?title=Descripci%C3%B3n_General_del_Sistema&amp;diff=712</id>
		<title>Descripción General del Sistema</title>
		<link rel="alternate" type="text/html" href="https://wiki.nlhpc.cl/index.php?title=Descripci%C3%B3n_General_del_Sistema&amp;diff=712"/>
		<updated>2024-04-19T16:31:43Z</updated>

		<summary type="html">&lt;p&gt;Jmorales: /* Infraestructura Leftraru Epu */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== National Laboratory for High Performance Computing ==&lt;br /&gt;
El NLHPC en Chile está dirigido a la instalación en Chile de una capacidad computacional que pueda satisfacer la demanda científica nacional de computación de alto rendimiento (HPC), ofreciendo servicios de alta calidad y promoviendo su uso en las problemáticas de Investigación tanto básica como también aplicada, con énfasis en aplicaciones industriales. En años recientes, el desarrollo de las ciencias aplicadas y la industria ha sido dirigido por el uso sofisticado de las tecnologías de la información y las comunicaciones (ICT), proceso en el cual HPC ha jugado un rol fundamental.&lt;br /&gt;
&lt;br /&gt;
Nuestros servicios están diseñados para ofrecer soporte al ciclo de vida completo de la investigación e innovación basada en HPC.&lt;br /&gt;
&lt;br /&gt;
== Misión del NLHPC ==&lt;br /&gt;
La consolidación de una facilidad a nivel nacional de HPC al ofrecer servicios de alta calidad y training avanzado para así responder a la alta demanda de computación científica, desarrollando lazos entre grupos de investigación, la industria y el sector público.&lt;br /&gt;
&lt;br /&gt;
== Visión del NLHPC ==&lt;br /&gt;
Visionamos al NLHPC como un centro altamente competitivo con una gama de servicios para la investigación en computación de alto rendimiento de calidad de clase mundial.&lt;br /&gt;
&lt;br /&gt;
== Objetivo General ==&lt;br /&gt;
El NLHPC servirá como socio IT clave para los proyectos de investigación basados en HPC a gran escala.&lt;br /&gt;
&lt;br /&gt;
=== Objetivos específicos ===&lt;br /&gt;
Desarrollar y dar soporte a recursos computacionales y de redes eficaces y confiables permitiendo a investigadores nacionales tener acceso a capacidad HPC para así resolver intensos problemas científicos de computación y data. Estimular y participar en la creación de una red nacional de alta velocidad para la transmisión de data de investigación Usar y explorar arquitecturas y técnicas innovadoras para acelerar la computación científica. Gatillar nuevas iniciativas industriales en HPC. Ayudar a educar a las próximas generaciones de científicos e ingenieros en HPC. Incrementar la conciencia social sobre el rol de HPC en la sociedad contemporánea y el desarrollo tecnológico.&lt;br /&gt;
&lt;br /&gt;
== Infraestructura Guacolda-Leftraru Epu ==&lt;br /&gt;
=== Infraestructura Leftraru Epu===&lt;br /&gt;
* 280 TFlops total de rendimiento (sin coprocesadores)&lt;br /&gt;
* 7.360 cores total de cómputo&lt;br /&gt;
*  24.320 GB total de memoria RAM&lt;br /&gt;
* 27 nodos main &lt;br /&gt;
** 2 x AMD EPYC 9754 @ 2.25GHz, 128 cores c/u &lt;br /&gt;
** 768 GB de RAM c/u&lt;br /&gt;
* 2 nodos master &lt;br /&gt;
** 2 x AMD EPYC 9224 @ 2.5GHz Processor, 24 cores c/u &lt;br /&gt;
** 384 GB de RAM c/u&lt;br /&gt;
* 2 nodos gpu MI210 &lt;br /&gt;
** 2 x AMD EPYC 9224 @ 2.5GHz Processor, 24 cores c/u &lt;br /&gt;
** 1536 GB de RAM c/u&lt;br /&gt;
** 6 tarjetas AMD Instinct MI210 c/u&lt;br /&gt;
* 1 nodo gpu MI100 &lt;br /&gt;
** 2 x AMD EPYC 7713 @ 2.0GHz, 64 cores c/u&lt;br /&gt;
** 502 GB de RAM c/u&lt;br /&gt;
** 2 tarjetas AMD Instinct MI100 c/u.&lt;br /&gt;
* Infiniband HDR 100 Gbps&lt;br /&gt;
* Red servicio 1 Gpbs&lt;br /&gt;
* Red XClarity Controller para administración de hardware&lt;br /&gt;
* Racks enfriados por agua&lt;br /&gt;
* Enfriamiento in-row respaldo&lt;br /&gt;
* UPS 120 KVA autonomia: 30 mins&lt;br /&gt;
&lt;br /&gt;
=== Infraestructura Guacolda ===&lt;br /&gt;
&lt;br /&gt;
* 196 TFlops total de rendimiento (sin coprocesadores)&lt;br /&gt;
* 2.596 cores total de cómputo&lt;br /&gt;
* 16.235 GB total de memoria RAM&lt;br /&gt;
* 48 nodos General&lt;br /&gt;
** 2 x Intel(R) Xeon(R) Gold 6152 CPU @ 2.10GHz. 22 cores c/u &lt;br /&gt;
** 187 GB de RAM c/u&lt;br /&gt;
* 9 nodos largemem&lt;br /&gt;
** 2 x Intel(R) Xeon(R) Gold 6152 CPU @ 2.10GHz. 22 cores c/u &lt;br /&gt;
** 765 GB de RAM c/u&lt;br /&gt;
* 2 nodos v100&lt;br /&gt;
** 2 x Intel(R) Xeon(R) Gold 6152 CPU @ 2.10GHz. 22 cores c/u &lt;br /&gt;
** 187 GB de RAM c/u&lt;br /&gt;
** 2 x NVIDIA Tesla V100 c/u&lt;br /&gt;
* Infiniband FDR 56 Gbps&lt;br /&gt;
* Racks enfriados por agua&lt;br /&gt;
* Enfriamiento in-row respaldo&lt;br /&gt;
* UPS 120 KVA autonomia: 30 mins&lt;br /&gt;
&lt;br /&gt;
=== Almacenamiento Cluster ===&lt;br /&gt;
* Almacenamiento paralelo de clase mundial&lt;br /&gt;
* Alto rendimiento en operaciones IO&lt;br /&gt;
* Tolerante a fallas (alta disponibilidad)&lt;br /&gt;
* Interconexión infiniband&lt;br /&gt;
* Capacidades Big Data&lt;br /&gt;
&lt;br /&gt;
Características en Guacolda-Leftraru Epu&lt;br /&gt;
&lt;br /&gt;
* 4 PB de almacenamiento IBM Elastic Storage System (IBM ESS 3200)&lt;br /&gt;
* Almacenamiento metadata separado&lt;br /&gt;
* 2 controladoras SFA en H.A&lt;/div&gt;</summary>
		<author><name>Jmorales</name></author>
	</entry>
	<entry>
		<id>https://wiki.nlhpc.cl/index.php?title=Descripci%C3%B3n_General_del_Sistema&amp;diff=711</id>
		<title>Descripción General del Sistema</title>
		<link rel="alternate" type="text/html" href="https://wiki.nlhpc.cl/index.php?title=Descripci%C3%B3n_General_del_Sistema&amp;diff=711"/>
		<updated>2024-04-19T16:31:31Z</updated>

		<summary type="html">&lt;p&gt;Jmorales: /* Infraestructura Guacolda */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== National Laboratory for High Performance Computing ==&lt;br /&gt;
El NLHPC en Chile está dirigido a la instalación en Chile de una capacidad computacional que pueda satisfacer la demanda científica nacional de computación de alto rendimiento (HPC), ofreciendo servicios de alta calidad y promoviendo su uso en las problemáticas de Investigación tanto básica como también aplicada, con énfasis en aplicaciones industriales. En años recientes, el desarrollo de las ciencias aplicadas y la industria ha sido dirigido por el uso sofisticado de las tecnologías de la información y las comunicaciones (ICT), proceso en el cual HPC ha jugado un rol fundamental.&lt;br /&gt;
&lt;br /&gt;
Nuestros servicios están diseñados para ofrecer soporte al ciclo de vida completo de la investigación e innovación basada en HPC.&lt;br /&gt;
&lt;br /&gt;
== Misión del NLHPC ==&lt;br /&gt;
La consolidación de una facilidad a nivel nacional de HPC al ofrecer servicios de alta calidad y training avanzado para así responder a la alta demanda de computación científica, desarrollando lazos entre grupos de investigación, la industria y el sector público.&lt;br /&gt;
&lt;br /&gt;
== Visión del NLHPC ==&lt;br /&gt;
Visionamos al NLHPC como un centro altamente competitivo con una gama de servicios para la investigación en computación de alto rendimiento de calidad de clase mundial.&lt;br /&gt;
&lt;br /&gt;
== Objetivo General ==&lt;br /&gt;
El NLHPC servirá como socio IT clave para los proyectos de investigación basados en HPC a gran escala.&lt;br /&gt;
&lt;br /&gt;
=== Objetivos específicos ===&lt;br /&gt;
Desarrollar y dar soporte a recursos computacionales y de redes eficaces y confiables permitiendo a investigadores nacionales tener acceso a capacidad HPC para así resolver intensos problemas científicos de computación y data. Estimular y participar en la creación de una red nacional de alta velocidad para la transmisión de data de investigación Usar y explorar arquitecturas y técnicas innovadoras para acelerar la computación científica. Gatillar nuevas iniciativas industriales en HPC. Ayudar a educar a las próximas generaciones de científicos e ingenieros en HPC. Incrementar la conciencia social sobre el rol de HPC en la sociedad contemporánea y el desarrollo tecnológico.&lt;br /&gt;
&lt;br /&gt;
== Infraestructura Guacolda-Leftraru Epu ==&lt;br /&gt;
=== Infraestructura Leftraru Epu===&lt;br /&gt;
* 280 TFlops total de rendimiento (sin coprocesadores)&lt;br /&gt;
* 7.360 cores total de cómputo&lt;br /&gt;
*  24.320 GB total de memoria RAM&lt;br /&gt;
* 27 nodos main &lt;br /&gt;
** 2 x AMD EPYC 9754 @ 2.25GHz, 128 cores c/u &lt;br /&gt;
** 768 GB de RAM c/u&lt;br /&gt;
* 2 nodos master &lt;br /&gt;
** 2 x AMD EPYC 9224 @ 2.5GHz Processor, 24 cores c/u &lt;br /&gt;
** 384 GB de RAM c/u&lt;br /&gt;
* 2 nodos gpu MI210 &lt;br /&gt;
** 2 x AMD EPYC 9224 @ 2.5GHz Processor, 24 cores c/u &lt;br /&gt;
** 1536 GB de RAM c/u&lt;br /&gt;
** 6 tarjetas AMD Instinct MI210 c/u&lt;br /&gt;
* 1 nodo gpu MI100 &lt;br /&gt;
** 2 x AMD EPYC 7713 @ 2.0GHz, 64 cores c/u&lt;br /&gt;
** 502 GB de RAM c/u&lt;br /&gt;
** 2 tarjetas AMD Instinct MI100 c/u.&lt;br /&gt;
* Infiniband HDR 100 Gbps&lt;br /&gt;
* Red servicio 1 Gpbs&lt;br /&gt;
* Red XClarity Controller para administración de hardware&lt;br /&gt;
* Racks enfriados por agua&lt;br /&gt;
* Enfriamiento in-row respaldo&lt;br /&gt;
&lt;br /&gt;
=== Infraestructura Guacolda ===&lt;br /&gt;
&lt;br /&gt;
* 196 TFlops total de rendimiento (sin coprocesadores)&lt;br /&gt;
* 2.596 cores total de cómputo&lt;br /&gt;
* 16.235 GB total de memoria RAM&lt;br /&gt;
* 48 nodos General&lt;br /&gt;
** 2 x Intel(R) Xeon(R) Gold 6152 CPU @ 2.10GHz. 22 cores c/u &lt;br /&gt;
** 187 GB de RAM c/u&lt;br /&gt;
* 9 nodos largemem&lt;br /&gt;
** 2 x Intel(R) Xeon(R) Gold 6152 CPU @ 2.10GHz. 22 cores c/u &lt;br /&gt;
** 765 GB de RAM c/u&lt;br /&gt;
* 2 nodos v100&lt;br /&gt;
** 2 x Intel(R) Xeon(R) Gold 6152 CPU @ 2.10GHz. 22 cores c/u &lt;br /&gt;
** 187 GB de RAM c/u&lt;br /&gt;
** 2 x NVIDIA Tesla V100 c/u&lt;br /&gt;
* Infiniband FDR 56 Gbps&lt;br /&gt;
* Racks enfriados por agua&lt;br /&gt;
* Enfriamiento in-row respaldo&lt;br /&gt;
* UPS 120 KVA autonomia: 30 mins&lt;br /&gt;
&lt;br /&gt;
=== Almacenamiento Cluster ===&lt;br /&gt;
* Almacenamiento paralelo de clase mundial&lt;br /&gt;
* Alto rendimiento en operaciones IO&lt;br /&gt;
* Tolerante a fallas (alta disponibilidad)&lt;br /&gt;
* Interconexión infiniband&lt;br /&gt;
* Capacidades Big Data&lt;br /&gt;
&lt;br /&gt;
Características en Guacolda-Leftraru Epu&lt;br /&gt;
&lt;br /&gt;
* 4 PB de almacenamiento IBM Elastic Storage System (IBM ESS 3200)&lt;br /&gt;
* Almacenamiento metadata separado&lt;br /&gt;
* 2 controladoras SFA en H.A&lt;/div&gt;</summary>
		<author><name>Jmorales</name></author>
	</entry>
	<entry>
		<id>https://wiki.nlhpc.cl/index.php?title=Descripci%C3%B3n_General_del_Sistema&amp;diff=710</id>
		<title>Descripción General del Sistema</title>
		<link rel="alternate" type="text/html" href="https://wiki.nlhpc.cl/index.php?title=Descripci%C3%B3n_General_del_Sistema&amp;diff=710"/>
		<updated>2024-04-19T16:29:51Z</updated>

		<summary type="html">&lt;p&gt;Jmorales: /* Infraestructura Leftraru Epu */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== National Laboratory for High Performance Computing ==&lt;br /&gt;
El NLHPC en Chile está dirigido a la instalación en Chile de una capacidad computacional que pueda satisfacer la demanda científica nacional de computación de alto rendimiento (HPC), ofreciendo servicios de alta calidad y promoviendo su uso en las problemáticas de Investigación tanto básica como también aplicada, con énfasis en aplicaciones industriales. En años recientes, el desarrollo de las ciencias aplicadas y la industria ha sido dirigido por el uso sofisticado de las tecnologías de la información y las comunicaciones (ICT), proceso en el cual HPC ha jugado un rol fundamental.&lt;br /&gt;
&lt;br /&gt;
Nuestros servicios están diseñados para ofrecer soporte al ciclo de vida completo de la investigación e innovación basada en HPC.&lt;br /&gt;
&lt;br /&gt;
== Misión del NLHPC ==&lt;br /&gt;
La consolidación de una facilidad a nivel nacional de HPC al ofrecer servicios de alta calidad y training avanzado para así responder a la alta demanda de computación científica, desarrollando lazos entre grupos de investigación, la industria y el sector público.&lt;br /&gt;
&lt;br /&gt;
== Visión del NLHPC ==&lt;br /&gt;
Visionamos al NLHPC como un centro altamente competitivo con una gama de servicios para la investigación en computación de alto rendimiento de calidad de clase mundial.&lt;br /&gt;
&lt;br /&gt;
== Objetivo General ==&lt;br /&gt;
El NLHPC servirá como socio IT clave para los proyectos de investigación basados en HPC a gran escala.&lt;br /&gt;
&lt;br /&gt;
=== Objetivos específicos ===&lt;br /&gt;
Desarrollar y dar soporte a recursos computacionales y de redes eficaces y confiables permitiendo a investigadores nacionales tener acceso a capacidad HPC para así resolver intensos problemas científicos de computación y data. Estimular y participar en la creación de una red nacional de alta velocidad para la transmisión de data de investigación Usar y explorar arquitecturas y técnicas innovadoras para acelerar la computación científica. Gatillar nuevas iniciativas industriales en HPC. Ayudar a educar a las próximas generaciones de científicos e ingenieros en HPC. Incrementar la conciencia social sobre el rol de HPC en la sociedad contemporánea y el desarrollo tecnológico.&lt;br /&gt;
&lt;br /&gt;
== Infraestructura Guacolda-Leftraru Epu ==&lt;br /&gt;
=== Infraestructura Leftraru Epu===&lt;br /&gt;
* 280 TFlops total de rendimiento (sin coprocesadores)&lt;br /&gt;
* 7.360 cores total de cómputo&lt;br /&gt;
*  24.320 GB total de memoria RAM&lt;br /&gt;
* 27 nodos main &lt;br /&gt;
** 2 x AMD EPYC 9754 @ 2.25GHz, 128 cores c/u &lt;br /&gt;
** 768 GB de RAM c/u&lt;br /&gt;
* 2 nodos master &lt;br /&gt;
** 2 x AMD EPYC 9224 @ 2.5GHz Processor, 24 cores c/u &lt;br /&gt;
** 384 GB de RAM c/u&lt;br /&gt;
* 2 nodos gpu MI210 &lt;br /&gt;
** 2 x AMD EPYC 9224 @ 2.5GHz Processor, 24 cores c/u &lt;br /&gt;
** 1536 GB de RAM c/u&lt;br /&gt;
** 6 tarjetas AMD Instinct MI210 c/u&lt;br /&gt;
* 1 nodo gpu MI100 &lt;br /&gt;
** 2 x AMD EPYC 7713 @ 2.0GHz, 64 cores c/u&lt;br /&gt;
** 502 GB de RAM c/u&lt;br /&gt;
** 2 tarjetas AMD Instinct MI100 c/u.&lt;br /&gt;
* Infiniband HDR 100 Gbps&lt;br /&gt;
* Red servicio 1 Gpbs&lt;br /&gt;
* Red XClarity Controller para administración de hardware&lt;br /&gt;
* Racks enfriados por agua&lt;br /&gt;
* Enfriamiento in-row respaldo&lt;br /&gt;
&lt;br /&gt;
=== Infraestructura Guacolda ===&lt;br /&gt;
&lt;br /&gt;
* 150 TFlops total de rendimiento (sin coprocesadores)&lt;br /&gt;
* 2.596 cores total de cómputo&lt;br /&gt;
* 16.235 GB total de memoria RAM&lt;br /&gt;
* 48 nodos&lt;br /&gt;
** 2 x Intel(R) Xeon(R) Gold 6152 CPU @ 2.10GHz. 22 cores c/u 187 GB de RAM&lt;br /&gt;
* 9 nodos&lt;br /&gt;
** 2 x Intel(R) Xeon(R) Gold 6152 CPU @ 2.10GHz. 22 cores c/u 765 GB de RAM&lt;br /&gt;
* 2 nodos&lt;br /&gt;
** 2 x Intel(R) Xeon(R) Gold 6152 CPU @ 2.10GHz. 22 cores c/u 187 GB de RAM&lt;br /&gt;
** 2x NVIDIA Tesla V100 c/u&lt;br /&gt;
* Infiniband FDR 56 Gbps&lt;br /&gt;
* Racks enfriados por agua&lt;br /&gt;
* Enfriamiento in-row respaldo&lt;br /&gt;
* UPS 120 KVA autonomia: 30 mins&lt;br /&gt;
&lt;br /&gt;
=== Almacenamiento Cluster ===&lt;br /&gt;
* Almacenamiento paralelo de clase mundial&lt;br /&gt;
* Alto rendimiento en operaciones IO&lt;br /&gt;
* Tolerante a fallas (alta disponibilidad)&lt;br /&gt;
* Interconexión infiniband&lt;br /&gt;
* Capacidades Big Data&lt;br /&gt;
&lt;br /&gt;
Características en Guacolda-Leftraru Epu&lt;br /&gt;
&lt;br /&gt;
* 4 PB de almacenamiento IBM Elastic Storage System (IBM ESS 3200)&lt;br /&gt;
* Almacenamiento metadata separado&lt;br /&gt;
* 2 controladoras SFA en H.A&lt;/div&gt;</summary>
		<author><name>Jmorales</name></author>
	</entry>
	<entry>
		<id>https://wiki.nlhpc.cl/index.php?title=Descripci%C3%B3n_General_del_Sistema&amp;diff=709</id>
		<title>Descripción General del Sistema</title>
		<link rel="alternate" type="text/html" href="https://wiki.nlhpc.cl/index.php?title=Descripci%C3%B3n_General_del_Sistema&amp;diff=709"/>
		<updated>2024-04-18T19:06:13Z</updated>

		<summary type="html">&lt;p&gt;Jmorales: /* Infraestructura Guacolda */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== National Laboratory for High Performance Computing ==&lt;br /&gt;
El NLHPC en Chile está dirigido a la instalación en Chile de una capacidad computacional que pueda satisfacer la demanda científica nacional de computación de alto rendimiento (HPC), ofreciendo servicios de alta calidad y promoviendo su uso en las problemáticas de Investigación tanto básica como también aplicada, con énfasis en aplicaciones industriales. En años recientes, el desarrollo de las ciencias aplicadas y la industria ha sido dirigido por el uso sofisticado de las tecnologías de la información y las comunicaciones (ICT), proceso en el cual HPC ha jugado un rol fundamental.&lt;br /&gt;
&lt;br /&gt;
Nuestros servicios están diseñados para ofrecer soporte al ciclo de vida completo de la investigación e innovación basada en HPC.&lt;br /&gt;
&lt;br /&gt;
== Misión del NLHPC ==&lt;br /&gt;
La consolidación de una facilidad a nivel nacional de HPC al ofrecer servicios de alta calidad y training avanzado para así responder a la alta demanda de computación científica, desarrollando lazos entre grupos de investigación, la industria y el sector público.&lt;br /&gt;
&lt;br /&gt;
== Visión del NLHPC ==&lt;br /&gt;
Visionamos al NLHPC como un centro altamente competitivo con una gama de servicios para la investigación en computación de alto rendimiento de calidad de clase mundial.&lt;br /&gt;
&lt;br /&gt;
== Objetivo General ==&lt;br /&gt;
El NLHPC servirá como socio IT clave para los proyectos de investigación basados en HPC a gran escala.&lt;br /&gt;
&lt;br /&gt;
=== Objetivos específicos ===&lt;br /&gt;
Desarrollar y dar soporte a recursos computacionales y de redes eficaces y confiables permitiendo a investigadores nacionales tener acceso a capacidad HPC para así resolver intensos problemas científicos de computación y data. Estimular y participar en la creación de una red nacional de alta velocidad para la transmisión de data de investigación Usar y explorar arquitecturas y técnicas innovadoras para acelerar la computación científica. Gatillar nuevas iniciativas industriales en HPC. Ayudar a educar a las próximas generaciones de científicos e ingenieros en HPC. Incrementar la conciencia social sobre el rol de HPC en la sociedad contemporánea y el desarrollo tecnológico.&lt;br /&gt;
&lt;br /&gt;
== Infraestructura Guacolda-Leftraru Epu ==&lt;br /&gt;
=== Infraestructura Leftraru Epu===&lt;br /&gt;
* 280 TFlops total de rendimiento (sin coprocesadores)&lt;br /&gt;
* 7.360 cores total de cómputo&lt;br /&gt;
* 24.320 GB total de memoria RAM&lt;br /&gt;
* 27 nodos main &lt;br /&gt;
** 2 x AMD EPYC 9754 @ 2.25GHz, 128 cores c/u 768 GB de RAM&lt;br /&gt;
* 2 nodos master&lt;br /&gt;
** 2 x AMD EPYC 9224 @ 2.5GHz Processor, 24 cores c/u 384 GB de RAM&lt;br /&gt;
* 2 nodos gpu MI210&lt;br /&gt;
** 2 x AMD EPYC 9224 @ 2.5GHz Processor, 24 cores c/u 1536 GB de RAM &lt;br /&gt;
** 6 tarjetas AMD Instinct MI210&lt;br /&gt;
* 1 nodo gpu MI100&lt;br /&gt;
** 2 x AMD EPYC 7713 @ 2.0GHz, 64 cores c/u, 502 GB de RAM, 2 tarjetas AMD Instinct MI100 c/u.&lt;br /&gt;
* Infiniband HDR 100 Gbps&lt;br /&gt;
* Red servicio 1 Gpbs&lt;br /&gt;
* Red XClarity Controller para administración de hardware&lt;br /&gt;
* Racks enfriados por agua&lt;br /&gt;
* Enfriamiento in-row respaldo&lt;br /&gt;
* UPS 120 KVA autonomia: 30 mins&lt;br /&gt;
&lt;br /&gt;
=== Infraestructura Guacolda ===&lt;br /&gt;
&lt;br /&gt;
* 150 TFlops total de rendimiento (sin coprocesadores)&lt;br /&gt;
* 2.596 cores total de cómputo&lt;br /&gt;
* 16.235 GB total de memoria RAM&lt;br /&gt;
* 48 nodos&lt;br /&gt;
** 2 x Intel(R) Xeon(R) Gold 6152 CPU @ 2.10GHz. 22 cores c/u 187 GB de RAM&lt;br /&gt;
* 9 nodos&lt;br /&gt;
** 2 x Intel(R) Xeon(R) Gold 6152 CPU @ 2.10GHz. 22 cores c/u 765 GB de RAM&lt;br /&gt;
* 2 nodos&lt;br /&gt;
** 2 x Intel(R) Xeon(R) Gold 6152 CPU @ 2.10GHz. 22 cores c/u 187 GB de RAM&lt;br /&gt;
** 2x NVIDIA Tesla V100 c/u&lt;br /&gt;
* Infiniband FDR 56 Gbps&lt;br /&gt;
* Racks enfriados por agua&lt;br /&gt;
* Enfriamiento in-row respaldo&lt;br /&gt;
* UPS 120 KVA autonomia: 30 mins&lt;br /&gt;
&lt;br /&gt;
=== Almacenamiento Cluster ===&lt;br /&gt;
* Almacenamiento paralelo de clase mundial&lt;br /&gt;
* Alto rendimiento en operaciones IO&lt;br /&gt;
* Tolerante a fallas (alta disponibilidad)&lt;br /&gt;
* Interconexión infiniband&lt;br /&gt;
* Capacidades Big Data&lt;br /&gt;
&lt;br /&gt;
Características en Guacolda-Leftraru Epu&lt;br /&gt;
&lt;br /&gt;
* 4 PB de almacenamiento IBM Elastic Storage System (IBM ESS 3200)&lt;br /&gt;
* Almacenamiento metadata separado&lt;br /&gt;
* 2 controladoras SFA en H.A&lt;/div&gt;</summary>
		<author><name>Jmorales</name></author>
	</entry>
	<entry>
		<id>https://wiki.nlhpc.cl/index.php?title=Descripci%C3%B3n_General_del_Sistema&amp;diff=708</id>
		<title>Descripción General del Sistema</title>
		<link rel="alternate" type="text/html" href="https://wiki.nlhpc.cl/index.php?title=Descripci%C3%B3n_General_del_Sistema&amp;diff=708"/>
		<updated>2024-04-18T19:05:05Z</updated>

		<summary type="html">&lt;p&gt;Jmorales: /* Infraestructura Leftraru Epu */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== National Laboratory for High Performance Computing ==&lt;br /&gt;
El NLHPC en Chile está dirigido a la instalación en Chile de una capacidad computacional que pueda satisfacer la demanda científica nacional de computación de alto rendimiento (HPC), ofreciendo servicios de alta calidad y promoviendo su uso en las problemáticas de Investigación tanto básica como también aplicada, con énfasis en aplicaciones industriales. En años recientes, el desarrollo de las ciencias aplicadas y la industria ha sido dirigido por el uso sofisticado de las tecnologías de la información y las comunicaciones (ICT), proceso en el cual HPC ha jugado un rol fundamental.&lt;br /&gt;
&lt;br /&gt;
Nuestros servicios están diseñados para ofrecer soporte al ciclo de vida completo de la investigación e innovación basada en HPC.&lt;br /&gt;
&lt;br /&gt;
== Misión del NLHPC ==&lt;br /&gt;
La consolidación de una facilidad a nivel nacional de HPC al ofrecer servicios de alta calidad y training avanzado para así responder a la alta demanda de computación científica, desarrollando lazos entre grupos de investigación, la industria y el sector público.&lt;br /&gt;
&lt;br /&gt;
== Visión del NLHPC ==&lt;br /&gt;
Visionamos al NLHPC como un centro altamente competitivo con una gama de servicios para la investigación en computación de alto rendimiento de calidad de clase mundial.&lt;br /&gt;
&lt;br /&gt;
== Objetivo General ==&lt;br /&gt;
El NLHPC servirá como socio IT clave para los proyectos de investigación basados en HPC a gran escala.&lt;br /&gt;
&lt;br /&gt;
=== Objetivos específicos ===&lt;br /&gt;
Desarrollar y dar soporte a recursos computacionales y de redes eficaces y confiables permitiendo a investigadores nacionales tener acceso a capacidad HPC para así resolver intensos problemas científicos de computación y data. Estimular y participar en la creación de una red nacional de alta velocidad para la transmisión de data de investigación Usar y explorar arquitecturas y técnicas innovadoras para acelerar la computación científica. Gatillar nuevas iniciativas industriales en HPC. Ayudar a educar a las próximas generaciones de científicos e ingenieros en HPC. Incrementar la conciencia social sobre el rol de HPC en la sociedad contemporánea y el desarrollo tecnológico.&lt;br /&gt;
&lt;br /&gt;
== Infraestructura Guacolda-Leftraru Epu ==&lt;br /&gt;
=== Infraestructura Leftraru Epu===&lt;br /&gt;
* 280 TFlops total de rendimiento (sin coprocesadores)&lt;br /&gt;
* 7.360 cores total de cómputo&lt;br /&gt;
* 24.320 GB total de memoria RAM&lt;br /&gt;
* 27 nodos main &lt;br /&gt;
** 2 x AMD EPYC 9754 @ 2.25GHz, 128 cores c/u 768 GB de RAM&lt;br /&gt;
* 2 nodos master&lt;br /&gt;
** 2 x AMD EPYC 9224 @ 2.5GHz Processor, 24 cores c/u 384 GB de RAM&lt;br /&gt;
* 2 nodos gpu MI210&lt;br /&gt;
** 2 x AMD EPYC 9224 @ 2.5GHz Processor, 24 cores c/u 1536 GB de RAM &lt;br /&gt;
** 6 tarjetas AMD Instinct MI210&lt;br /&gt;
* 1 nodo gpu MI100&lt;br /&gt;
** 2 x AMD EPYC 7713 @ 2.0GHz, 64 cores c/u, 502 GB de RAM, 2 tarjetas AMD Instinct MI100 c/u.&lt;br /&gt;
* Infiniband HDR 100 Gbps&lt;br /&gt;
* Red servicio 1 Gpbs&lt;br /&gt;
* Red XClarity Controller para administración de hardware&lt;br /&gt;
* Racks enfriados por agua&lt;br /&gt;
* Enfriamiento in-row respaldo&lt;br /&gt;
* UPS 120 KVA autonomia: 30 mins&lt;br /&gt;
&lt;br /&gt;
=== Infraestructura Guacolda ===&lt;br /&gt;
&lt;br /&gt;
* 150 TFlops total de rendimiento (sin coprocesadores)&lt;br /&gt;
* 2.596 cores total de cómputo&lt;br /&gt;
* 16.235 GB total de memoria RAM&lt;br /&gt;
* 48 nodos, 2 x Intel(R) Xeon(R) Gold 6152 CPU @ 2.10GHz. 22 cores c/u 187 GB de RAM&lt;br /&gt;
* 9 nodos, 2 x Intel(R) Xeon(R) Gold 6152 CPU @ 2.10GHz. 22 cores c/u 765 GB de RAM&lt;br /&gt;
* 2 nodos, 2 x Intel(R) Xeon(R) Gold 6152 CPU @ 2.10GHz. 22 cores c/u 187 GB de RAM y 2x NVIDIA Tesla V100 c/u&lt;br /&gt;
* Infiniband FDR 56 Gbps&lt;br /&gt;
* Racks enfriados por agua&lt;br /&gt;
* Enfriamiento in-row respaldo&lt;br /&gt;
* UPS 120 KVA autonomia: 30 mins&lt;br /&gt;
&lt;br /&gt;
=== Almacenamiento Cluster ===&lt;br /&gt;
* Almacenamiento paralelo de clase mundial&lt;br /&gt;
* Alto rendimiento en operaciones IO&lt;br /&gt;
* Tolerante a fallas (alta disponibilidad)&lt;br /&gt;
* Interconexión infiniband&lt;br /&gt;
* Capacidades Big Data&lt;br /&gt;
&lt;br /&gt;
Características en Guacolda-Leftraru Epu&lt;br /&gt;
&lt;br /&gt;
* 4 PB de almacenamiento IBM Elastic Storage System (IBM ESS 3200)&lt;br /&gt;
* Almacenamiento metadata separado&lt;br /&gt;
* 2 controladoras SFA en H.A&lt;/div&gt;</summary>
		<author><name>Jmorales</name></author>
	</entry>
	<entry>
		<id>https://wiki.nlhpc.cl/index.php?title=Descripci%C3%B3n_General_del_Sistema&amp;diff=707</id>
		<title>Descripción General del Sistema</title>
		<link rel="alternate" type="text/html" href="https://wiki.nlhpc.cl/index.php?title=Descripci%C3%B3n_General_del_Sistema&amp;diff=707"/>
		<updated>2024-04-18T19:03:43Z</updated>

		<summary type="html">&lt;p&gt;Jmorales: /* Infraestructura Leftraru Epu */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== National Laboratory for High Performance Computing ==&lt;br /&gt;
El NLHPC en Chile está dirigido a la instalación en Chile de una capacidad computacional que pueda satisfacer la demanda científica nacional de computación de alto rendimiento (HPC), ofreciendo servicios de alta calidad y promoviendo su uso en las problemáticas de Investigación tanto básica como también aplicada, con énfasis en aplicaciones industriales. En años recientes, el desarrollo de las ciencias aplicadas y la industria ha sido dirigido por el uso sofisticado de las tecnologías de la información y las comunicaciones (ICT), proceso en el cual HPC ha jugado un rol fundamental.&lt;br /&gt;
&lt;br /&gt;
Nuestros servicios están diseñados para ofrecer soporte al ciclo de vida completo de la investigación e innovación basada en HPC.&lt;br /&gt;
&lt;br /&gt;
== Misión del NLHPC ==&lt;br /&gt;
La consolidación de una facilidad a nivel nacional de HPC al ofrecer servicios de alta calidad y training avanzado para así responder a la alta demanda de computación científica, desarrollando lazos entre grupos de investigación, la industria y el sector público.&lt;br /&gt;
&lt;br /&gt;
== Visión del NLHPC ==&lt;br /&gt;
Visionamos al NLHPC como un centro altamente competitivo con una gama de servicios para la investigación en computación de alto rendimiento de calidad de clase mundial.&lt;br /&gt;
&lt;br /&gt;
== Objetivo General ==&lt;br /&gt;
El NLHPC servirá como socio IT clave para los proyectos de investigación basados en HPC a gran escala.&lt;br /&gt;
&lt;br /&gt;
=== Objetivos específicos ===&lt;br /&gt;
Desarrollar y dar soporte a recursos computacionales y de redes eficaces y confiables permitiendo a investigadores nacionales tener acceso a capacidad HPC para así resolver intensos problemas científicos de computación y data. Estimular y participar en la creación de una red nacional de alta velocidad para la transmisión de data de investigación Usar y explorar arquitecturas y técnicas innovadoras para acelerar la computación científica. Gatillar nuevas iniciativas industriales en HPC. Ayudar a educar a las próximas generaciones de científicos e ingenieros en HPC. Incrementar la conciencia social sobre el rol de HPC en la sociedad contemporánea y el desarrollo tecnológico.&lt;br /&gt;
&lt;br /&gt;
== Infraestructura Guacolda-Leftraru Epu ==&lt;br /&gt;
=== Infraestructura Leftraru Epu===&lt;br /&gt;
* 280 TFlops total de rendimiento (sin coprocesadores)&lt;br /&gt;
* 7.360 cores total de cómputo&lt;br /&gt;
* 24.320 GB total de memoria RAM&lt;br /&gt;
* 27 nodos main &lt;br /&gt;
** 2 x AMD EPYC 9754 @ 2.25GHz, 128 cores c/u 768 GB de RAM&lt;br /&gt;
* 2 nodos master&lt;br /&gt;
** 2 x AMD EPYC 9224 @ 2.5GHz Processor, 24 cores c/u 384 GB de RAM&lt;br /&gt;
* 2 nodos gpu MI210&lt;br /&gt;
** 2 x AMD EPYC 9224 @ 2.5GHz Processor, 24 cores c/u 1536 GB de RAM, &lt;br /&gt;
* 6 tarjetas AMD Instinct MI210&lt;br /&gt;
* 1 nodo gpu MI100&lt;br /&gt;
** 2 x AMD EPYC 7713 @ 2.0GHz, 64 cores c/u, 502 GB de RAM, 2 tarjetas AMD Instinct MI100 c/u.&lt;br /&gt;
* Infiniband HDR 100 Gbps&lt;br /&gt;
* Red servicio 1 Gpbs&lt;br /&gt;
* Red XClarity Controller para administración de hardware&lt;br /&gt;
* Racks enfriados por agua&lt;br /&gt;
* Enfriamiento in-row respaldo&lt;br /&gt;
* UPS 120 KVA autonomia: 30 mins&lt;br /&gt;
&lt;br /&gt;
=== Infraestructura Guacolda ===&lt;br /&gt;
&lt;br /&gt;
* 150 TFlops total de rendimiento (sin coprocesadores)&lt;br /&gt;
* 2.596 cores total de cómputo&lt;br /&gt;
* 16.235 GB total de memoria RAM&lt;br /&gt;
* 48 nodos, 2 x Intel(R) Xeon(R) Gold 6152 CPU @ 2.10GHz. 22 cores c/u 187 GB de RAM&lt;br /&gt;
* 9 nodos, 2 x Intel(R) Xeon(R) Gold 6152 CPU @ 2.10GHz. 22 cores c/u 765 GB de RAM&lt;br /&gt;
* 2 nodos, 2 x Intel(R) Xeon(R) Gold 6152 CPU @ 2.10GHz. 22 cores c/u 187 GB de RAM y 2x NVIDIA Tesla V100 c/u&lt;br /&gt;
* Infiniband FDR 56 Gbps&lt;br /&gt;
* Racks enfriados por agua&lt;br /&gt;
* Enfriamiento in-row respaldo&lt;br /&gt;
* UPS 120 KVA autonomia: 30 mins&lt;br /&gt;
&lt;br /&gt;
=== Almacenamiento Cluster ===&lt;br /&gt;
* Almacenamiento paralelo de clase mundial&lt;br /&gt;
* Alto rendimiento en operaciones IO&lt;br /&gt;
* Tolerante a fallas (alta disponibilidad)&lt;br /&gt;
* Interconexión infiniband&lt;br /&gt;
* Capacidades Big Data&lt;br /&gt;
&lt;br /&gt;
Características en Guacolda-Leftraru Epu&lt;br /&gt;
&lt;br /&gt;
* 4 PB de almacenamiento IBM Elastic Storage System (IBM ESS 3200)&lt;br /&gt;
* Almacenamiento metadata separado&lt;br /&gt;
* 2 controladoras SFA en H.A&lt;/div&gt;</summary>
		<author><name>Jmorales</name></author>
	</entry>
	<entry>
		<id>https://wiki.nlhpc.cl/index.php?title=Descripci%C3%B3n_General_del_Sistema&amp;diff=706</id>
		<title>Descripción General del Sistema</title>
		<link rel="alternate" type="text/html" href="https://wiki.nlhpc.cl/index.php?title=Descripci%C3%B3n_General_del_Sistema&amp;diff=706"/>
		<updated>2024-04-18T19:02:44Z</updated>

		<summary type="html">&lt;p&gt;Jmorales: /* Infraestructura Leftraru Epu */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== National Laboratory for High Performance Computing ==&lt;br /&gt;
El NLHPC en Chile está dirigido a la instalación en Chile de una capacidad computacional que pueda satisfacer la demanda científica nacional de computación de alto rendimiento (HPC), ofreciendo servicios de alta calidad y promoviendo su uso en las problemáticas de Investigación tanto básica como también aplicada, con énfasis en aplicaciones industriales. En años recientes, el desarrollo de las ciencias aplicadas y la industria ha sido dirigido por el uso sofisticado de las tecnologías de la información y las comunicaciones (ICT), proceso en el cual HPC ha jugado un rol fundamental.&lt;br /&gt;
&lt;br /&gt;
Nuestros servicios están diseñados para ofrecer soporte al ciclo de vida completo de la investigación e innovación basada en HPC.&lt;br /&gt;
&lt;br /&gt;
== Misión del NLHPC ==&lt;br /&gt;
La consolidación de una facilidad a nivel nacional de HPC al ofrecer servicios de alta calidad y training avanzado para así responder a la alta demanda de computación científica, desarrollando lazos entre grupos de investigación, la industria y el sector público.&lt;br /&gt;
&lt;br /&gt;
== Visión del NLHPC ==&lt;br /&gt;
Visionamos al NLHPC como un centro altamente competitivo con una gama de servicios para la investigación en computación de alto rendimiento de calidad de clase mundial.&lt;br /&gt;
&lt;br /&gt;
== Objetivo General ==&lt;br /&gt;
El NLHPC servirá como socio IT clave para los proyectos de investigación basados en HPC a gran escala.&lt;br /&gt;
&lt;br /&gt;
=== Objetivos específicos ===&lt;br /&gt;
Desarrollar y dar soporte a recursos computacionales y de redes eficaces y confiables permitiendo a investigadores nacionales tener acceso a capacidad HPC para así resolver intensos problemas científicos de computación y data. Estimular y participar en la creación de una red nacional de alta velocidad para la transmisión de data de investigación Usar y explorar arquitecturas y técnicas innovadoras para acelerar la computación científica. Gatillar nuevas iniciativas industriales en HPC. Ayudar a educar a las próximas generaciones de científicos e ingenieros en HPC. Incrementar la conciencia social sobre el rol de HPC en la sociedad contemporánea y el desarrollo tecnológico.&lt;br /&gt;
&lt;br /&gt;
== Infraestructura Guacolda-Leftraru Epu ==&lt;br /&gt;
=== Infraestructura Leftraru Epu===&lt;br /&gt;
* 280 TFlops total de rendimiento (sin coprocesadores)&lt;br /&gt;
* 7.360 cores total de cómputo&lt;br /&gt;
* 24.320 GB total de memoria RAM&lt;br /&gt;
* 27 nodos main, &lt;br /&gt;
** 2 x AMD EPYC 9754 @ 2.25GHz, 128 cores c/u 768 GB de RAM&lt;br /&gt;
* 2 nodos master, 2 x AMD EPYC 9224 @ 2.5GHz Processor, 24 cores c/u 384 GB de RAM&lt;br /&gt;
* 2 nodos gpu MI210, 2 x AMD EPYC 9224 @ 2.5GHz Processor, 24 cores c/u 1536 GB de RAM, * 6 tarjetas AMD Instinct MI210&lt;br /&gt;
*1 nodo gpu MI100, 2 x AMD EPYC 7713 @ 2.0GHz, 64 cores c/u, 502 GB de RAM, 2 tarjetas AMD Instinct MI100 c/u.&lt;br /&gt;
* Infiniband HDR 100 Gbps&lt;br /&gt;
* Red servicio 1 Gpbs&lt;br /&gt;
* Red XClarity Controller para administración de hardware&lt;br /&gt;
* Racks enfriados por agua&lt;br /&gt;
* Enfriamiento in-row respaldo&lt;br /&gt;
* UPS 120 KVA autonomia: 30 mins&lt;br /&gt;
&lt;br /&gt;
=== Infraestructura Guacolda ===&lt;br /&gt;
&lt;br /&gt;
* 150 TFlops total de rendimiento (sin coprocesadores)&lt;br /&gt;
* 2.596 cores total de cómputo&lt;br /&gt;
* 16.235 GB total de memoria RAM&lt;br /&gt;
* 48 nodos, 2 x Intel(R) Xeon(R) Gold 6152 CPU @ 2.10GHz. 22 cores c/u 187 GB de RAM&lt;br /&gt;
* 9 nodos, 2 x Intel(R) Xeon(R) Gold 6152 CPU @ 2.10GHz. 22 cores c/u 765 GB de RAM&lt;br /&gt;
* 2 nodos, 2 x Intel(R) Xeon(R) Gold 6152 CPU @ 2.10GHz. 22 cores c/u 187 GB de RAM y 2x NVIDIA Tesla V100 c/u&lt;br /&gt;
* Infiniband FDR 56 Gbps&lt;br /&gt;
* Racks enfriados por agua&lt;br /&gt;
* Enfriamiento in-row respaldo&lt;br /&gt;
* UPS 120 KVA autonomia: 30 mins&lt;br /&gt;
&lt;br /&gt;
=== Almacenamiento Cluster ===&lt;br /&gt;
* Almacenamiento paralelo de clase mundial&lt;br /&gt;
* Alto rendimiento en operaciones IO&lt;br /&gt;
* Tolerante a fallas (alta disponibilidad)&lt;br /&gt;
* Interconexión infiniband&lt;br /&gt;
* Capacidades Big Data&lt;br /&gt;
&lt;br /&gt;
Características en Guacolda-Leftraru Epu&lt;br /&gt;
&lt;br /&gt;
* 4 PB de almacenamiento IBM Elastic Storage System (IBM ESS 3200)&lt;br /&gt;
* Almacenamiento metadata separado&lt;br /&gt;
* 2 controladoras SFA en H.A&lt;/div&gt;</summary>
		<author><name>Jmorales</name></author>
	</entry>
	<entry>
		<id>https://wiki.nlhpc.cl/index.php?title=Descripci%C3%B3n_General_del_Sistema&amp;diff=705</id>
		<title>Descripción General del Sistema</title>
		<link rel="alternate" type="text/html" href="https://wiki.nlhpc.cl/index.php?title=Descripci%C3%B3n_General_del_Sistema&amp;diff=705"/>
		<updated>2024-04-18T19:01:23Z</updated>

		<summary type="html">&lt;p&gt;Jmorales: /* Infraestructura Guacolda */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== National Laboratory for High Performance Computing ==&lt;br /&gt;
El NLHPC en Chile está dirigido a la instalación en Chile de una capacidad computacional que pueda satisfacer la demanda científica nacional de computación de alto rendimiento (HPC), ofreciendo servicios de alta calidad y promoviendo su uso en las problemáticas de Investigación tanto básica como también aplicada, con énfasis en aplicaciones industriales. En años recientes, el desarrollo de las ciencias aplicadas y la industria ha sido dirigido por el uso sofisticado de las tecnologías de la información y las comunicaciones (ICT), proceso en el cual HPC ha jugado un rol fundamental.&lt;br /&gt;
&lt;br /&gt;
Nuestros servicios están diseñados para ofrecer soporte al ciclo de vida completo de la investigación e innovación basada en HPC.&lt;br /&gt;
&lt;br /&gt;
== Misión del NLHPC ==&lt;br /&gt;
La consolidación de una facilidad a nivel nacional de HPC al ofrecer servicios de alta calidad y training avanzado para así responder a la alta demanda de computación científica, desarrollando lazos entre grupos de investigación, la industria y el sector público.&lt;br /&gt;
&lt;br /&gt;
== Visión del NLHPC ==&lt;br /&gt;
Visionamos al NLHPC como un centro altamente competitivo con una gama de servicios para la investigación en computación de alto rendimiento de calidad de clase mundial.&lt;br /&gt;
&lt;br /&gt;
== Objetivo General ==&lt;br /&gt;
El NLHPC servirá como socio IT clave para los proyectos de investigación basados en HPC a gran escala.&lt;br /&gt;
&lt;br /&gt;
=== Objetivos específicos ===&lt;br /&gt;
Desarrollar y dar soporte a recursos computacionales y de redes eficaces y confiables permitiendo a investigadores nacionales tener acceso a capacidad HPC para así resolver intensos problemas científicos de computación y data. Estimular y participar en la creación de una red nacional de alta velocidad para la transmisión de data de investigación Usar y explorar arquitecturas y técnicas innovadoras para acelerar la computación científica. Gatillar nuevas iniciativas industriales en HPC. Ayudar a educar a las próximas generaciones de científicos e ingenieros en HPC. Incrementar la conciencia social sobre el rol de HPC en la sociedad contemporánea y el desarrollo tecnológico.&lt;br /&gt;
&lt;br /&gt;
== Infraestructura Guacolda-Leftraru Epu ==&lt;br /&gt;
=== Infraestructura Leftraru Epu===&lt;br /&gt;
* 280 TFlops total de rendimiento (sin coprocesadores)&lt;br /&gt;
* 7.360 cores total de cómputo&lt;br /&gt;
* 24.320 GB total de memoria RAM&lt;br /&gt;
* 27 nodos main, 2 x AMD EPYC 9754 @ 2.25GHz, 128 cores c/u 768 GB de RAM&lt;br /&gt;
* 2 nodos master, 2 x AMD EPYC 9224 @ 2.5GHz Processor, 24 cores c/u 384 GB de RAM&lt;br /&gt;
* 2 nodos gpu MI210, 2 x AMD EPYC 9224 @ 2.5GHz Processor, 24 cores c/u 1536 GB de RAM, * 6 tarjetas AMD Instinct MI210&lt;br /&gt;
*1 nodo gpu MI100, 2 x AMD EPYC 7713 @ 2.0GHz, 64 cores c/u, 502 GB de RAM, 2 tarjetas AMD Instinct MI100 c/u.&lt;br /&gt;
* Infiniband HDR 100 Gbps&lt;br /&gt;
* Red servicio 1 Gpbs&lt;br /&gt;
* Red XClarity Controller para administración de hardware&lt;br /&gt;
* Racks enfriados por agua&lt;br /&gt;
* Enfriamiento in-row respaldo&lt;br /&gt;
* UPS 120 KVA autonomia: 30 mins&lt;br /&gt;
&lt;br /&gt;
=== Infraestructura Guacolda ===&lt;br /&gt;
&lt;br /&gt;
* 150 TFlops total de rendimiento (sin coprocesadores)&lt;br /&gt;
* 2.596 cores total de cómputo&lt;br /&gt;
* 16.235 GB total de memoria RAM&lt;br /&gt;
* 48 nodos, 2 x Intel(R) Xeon(R) Gold 6152 CPU @ 2.10GHz. 22 cores c/u 187 GB de RAM&lt;br /&gt;
* 9 nodos, 2 x Intel(R) Xeon(R) Gold 6152 CPU @ 2.10GHz. 22 cores c/u 765 GB de RAM&lt;br /&gt;
* 2 nodos, 2 x Intel(R) Xeon(R) Gold 6152 CPU @ 2.10GHz. 22 cores c/u 187 GB de RAM y 2x NVIDIA Tesla V100 c/u&lt;br /&gt;
* Infiniband FDR 56 Gbps&lt;br /&gt;
* Racks enfriados por agua&lt;br /&gt;
* Enfriamiento in-row respaldo&lt;br /&gt;
* UPS 120 KVA autonomia: 30 mins&lt;br /&gt;
&lt;br /&gt;
=== Almacenamiento Cluster ===&lt;br /&gt;
* Almacenamiento paralelo de clase mundial&lt;br /&gt;
* Alto rendimiento en operaciones IO&lt;br /&gt;
* Tolerante a fallas (alta disponibilidad)&lt;br /&gt;
* Interconexión infiniband&lt;br /&gt;
* Capacidades Big Data&lt;br /&gt;
&lt;br /&gt;
Características en Guacolda-Leftraru Epu&lt;br /&gt;
&lt;br /&gt;
* 4 PB de almacenamiento IBM Elastic Storage System (IBM ESS 3200)&lt;br /&gt;
* Almacenamiento metadata separado&lt;br /&gt;
* 2 controladoras SFA en H.A&lt;/div&gt;</summary>
		<author><name>Jmorales</name></author>
	</entry>
	<entry>
		<id>https://wiki.nlhpc.cl/index.php?title=Descripci%C3%B3n_General_del_Sistema&amp;diff=704</id>
		<title>Descripción General del Sistema</title>
		<link rel="alternate" type="text/html" href="https://wiki.nlhpc.cl/index.php?title=Descripci%C3%B3n_General_del_Sistema&amp;diff=704"/>
		<updated>2024-04-18T18:59:55Z</updated>

		<summary type="html">&lt;p&gt;Jmorales: /* Infraestructura Leftraru Epu */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== National Laboratory for High Performance Computing ==&lt;br /&gt;
El NLHPC en Chile está dirigido a la instalación en Chile de una capacidad computacional que pueda satisfacer la demanda científica nacional de computación de alto rendimiento (HPC), ofreciendo servicios de alta calidad y promoviendo su uso en las problemáticas de Investigación tanto básica como también aplicada, con énfasis en aplicaciones industriales. En años recientes, el desarrollo de las ciencias aplicadas y la industria ha sido dirigido por el uso sofisticado de las tecnologías de la información y las comunicaciones (ICT), proceso en el cual HPC ha jugado un rol fundamental.&lt;br /&gt;
&lt;br /&gt;
Nuestros servicios están diseñados para ofrecer soporte al ciclo de vida completo de la investigación e innovación basada en HPC.&lt;br /&gt;
&lt;br /&gt;
== Misión del NLHPC ==&lt;br /&gt;
La consolidación de una facilidad a nivel nacional de HPC al ofrecer servicios de alta calidad y training avanzado para así responder a la alta demanda de computación científica, desarrollando lazos entre grupos de investigación, la industria y el sector público.&lt;br /&gt;
&lt;br /&gt;
== Visión del NLHPC ==&lt;br /&gt;
Visionamos al NLHPC como un centro altamente competitivo con una gama de servicios para la investigación en computación de alto rendimiento de calidad de clase mundial.&lt;br /&gt;
&lt;br /&gt;
== Objetivo General ==&lt;br /&gt;
El NLHPC servirá como socio IT clave para los proyectos de investigación basados en HPC a gran escala.&lt;br /&gt;
&lt;br /&gt;
=== Objetivos específicos ===&lt;br /&gt;
Desarrollar y dar soporte a recursos computacionales y de redes eficaces y confiables permitiendo a investigadores nacionales tener acceso a capacidad HPC para así resolver intensos problemas científicos de computación y data. Estimular y participar en la creación de una red nacional de alta velocidad para la transmisión de data de investigación Usar y explorar arquitecturas y técnicas innovadoras para acelerar la computación científica. Gatillar nuevas iniciativas industriales en HPC. Ayudar a educar a las próximas generaciones de científicos e ingenieros en HPC. Incrementar la conciencia social sobre el rol de HPC en la sociedad contemporánea y el desarrollo tecnológico.&lt;br /&gt;
&lt;br /&gt;
== Infraestructura Guacolda-Leftraru Epu ==&lt;br /&gt;
=== Infraestructura Leftraru Epu===&lt;br /&gt;
* 280 TFlops total de rendimiento (sin coprocesadores)&lt;br /&gt;
* 7.360 cores total de cómputo&lt;br /&gt;
* 24.320 GB total de memoria RAM&lt;br /&gt;
* 27 nodos main, 2 x AMD EPYC 9754 @ 2.25GHz, 128 cores c/u 768 GB de RAM&lt;br /&gt;
* 2 nodos master, 2 x AMD EPYC 9224 @ 2.5GHz Processor, 24 cores c/u 384 GB de RAM&lt;br /&gt;
* 2 nodos gpu MI210, 2 x AMD EPYC 9224 @ 2.5GHz Processor, 24 cores c/u 1536 GB de RAM, * 6 tarjetas AMD Instinct MI210&lt;br /&gt;
*1 nodo gpu MI100, 2 x AMD EPYC 7713 @ 2.0GHz, 64 cores c/u, 502 GB de RAM, 2 tarjetas AMD Instinct MI100 c/u.&lt;br /&gt;
* Infiniband HDR 100 Gbps&lt;br /&gt;
* Red servicio 1 Gpbs&lt;br /&gt;
* Red XClarity Controller para administración de hardware&lt;br /&gt;
* Racks enfriados por agua&lt;br /&gt;
* Enfriamiento in-row respaldo&lt;br /&gt;
* UPS 120 KVA autonomia: 30 mins&lt;br /&gt;
&lt;br /&gt;
=== Infraestructura Guacolda ===&lt;br /&gt;
* 150 TFlops sin coprocesadores&lt;br /&gt;
* 48 nodos, 2 x Intel(R) Xeon(R) Gold 6152 CPU @ 2.10GHz. 22 cores c/u 187 GB de RAM&lt;br /&gt;
* 9 nodos, 2 x Intel(R) Xeon(R) Gold 6152 CPU @ 2.10GHz. 22 cores c/u 765 GB de RAM&lt;br /&gt;
* 2 nodos, 2 x Intel(R) Xeon(R) Gold 6152 CPU @ 2.10GHz. 22 cores c/u 187 GB de RAM y 2x NVIDIA Tesla V100 c/u&lt;br /&gt;
* Nueva generación de procesadores Intel Xeon Skylake (SP)&lt;br /&gt;
* Intel Advanced Vector Extensions 512 (Intel AVX-512)&lt;br /&gt;
* Ganancia en el rendimiento en aplicaciones de deep learning de hasta 113x (respecto a los procesadores de Leftraru Epu)&lt;br /&gt;
&lt;br /&gt;
=== Almacenamiento Cluster ===&lt;br /&gt;
* Almacenamiento paralelo de clase mundial&lt;br /&gt;
* Alto rendimiento en operaciones IO&lt;br /&gt;
* Tolerante a fallas (alta disponibilidad)&lt;br /&gt;
* Interconexión infiniband&lt;br /&gt;
* Capacidades Big Data&lt;br /&gt;
&lt;br /&gt;
Características en Guacolda-Leftraru Epu&lt;br /&gt;
&lt;br /&gt;
* 4 PB de almacenamiento IBM Elastic Storage System (IBM ESS 3200)&lt;br /&gt;
* Almacenamiento metadata separado&lt;br /&gt;
* 2 controladoras SFA en H.A&lt;/div&gt;</summary>
		<author><name>Jmorales</name></author>
	</entry>
	<entry>
		<id>https://wiki.nlhpc.cl/index.php?title=Descripci%C3%B3n_General_del_Sistema&amp;diff=703</id>
		<title>Descripción General del Sistema</title>
		<link rel="alternate" type="text/html" href="https://wiki.nlhpc.cl/index.php?title=Descripci%C3%B3n_General_del_Sistema&amp;diff=703"/>
		<updated>2024-04-18T18:55:26Z</updated>

		<summary type="html">&lt;p&gt;Jmorales: /* Almacenamiento Cluster */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== National Laboratory for High Performance Computing ==&lt;br /&gt;
El NLHPC en Chile está dirigido a la instalación en Chile de una capacidad computacional que pueda satisfacer la demanda científica nacional de computación de alto rendimiento (HPC), ofreciendo servicios de alta calidad y promoviendo su uso en las problemáticas de Investigación tanto básica como también aplicada, con énfasis en aplicaciones industriales. En años recientes, el desarrollo de las ciencias aplicadas y la industria ha sido dirigido por el uso sofisticado de las tecnologías de la información y las comunicaciones (ICT), proceso en el cual HPC ha jugado un rol fundamental.&lt;br /&gt;
&lt;br /&gt;
Nuestros servicios están diseñados para ofrecer soporte al ciclo de vida completo de la investigación e innovación basada en HPC.&lt;br /&gt;
&lt;br /&gt;
== Misión del NLHPC ==&lt;br /&gt;
La consolidación de una facilidad a nivel nacional de HPC al ofrecer servicios de alta calidad y training avanzado para así responder a la alta demanda de computación científica, desarrollando lazos entre grupos de investigación, la industria y el sector público.&lt;br /&gt;
&lt;br /&gt;
== Visión del NLHPC ==&lt;br /&gt;
Visionamos al NLHPC como un centro altamente competitivo con una gama de servicios para la investigación en computación de alto rendimiento de calidad de clase mundial.&lt;br /&gt;
&lt;br /&gt;
== Objetivo General ==&lt;br /&gt;
El NLHPC servirá como socio IT clave para los proyectos de investigación basados en HPC a gran escala.&lt;br /&gt;
&lt;br /&gt;
=== Objetivos específicos ===&lt;br /&gt;
Desarrollar y dar soporte a recursos computacionales y de redes eficaces y confiables permitiendo a investigadores nacionales tener acceso a capacidad HPC para así resolver intensos problemas científicos de computación y data. Estimular y participar en la creación de una red nacional de alta velocidad para la transmisión de data de investigación Usar y explorar arquitecturas y técnicas innovadoras para acelerar la computación científica. Gatillar nuevas iniciativas industriales en HPC. Ayudar a educar a las próximas generaciones de científicos e ingenieros en HPC. Incrementar la conciencia social sobre el rol de HPC en la sociedad contemporánea y el desarrollo tecnológico.&lt;br /&gt;
&lt;br /&gt;
== Infraestructura Guacolda-Leftraru Epu ==&lt;br /&gt;
=== Infraestructura Leftraru Epu===&lt;br /&gt;
* 44 TFlops&lt;br /&gt;
* 2640 cores&lt;br /&gt;
* 132 nodos slims&lt;br /&gt;
* 12 Xeon Phi&lt;br /&gt;
* Infiniband FDR 56 Gbps&lt;br /&gt;
* Red servicio 1 Gpbs&lt;br /&gt;
* Red iLO para administracion de hardware&lt;br /&gt;
* Racks enfriados por agua&lt;br /&gt;
* Enfriamiento in-row respaldo&lt;br /&gt;
* UPS 120 KVA autonomia: 30 mins&lt;br /&gt;
&lt;br /&gt;
=== Infraestructura Guacolda ===&lt;br /&gt;
* 150 TFlops sin coprocesadores&lt;br /&gt;
* 48 nodos, 2 x Intel(R) Xeon(R) Gold 6152 CPU @ 2.10GHz. 22 cores c/u 187 GB de RAM&lt;br /&gt;
* 9 nodos, 2 x Intel(R) Xeon(R) Gold 6152 CPU @ 2.10GHz. 22 cores c/u 765 GB de RAM&lt;br /&gt;
* 2 nodos, 2 x Intel(R) Xeon(R) Gold 6152 CPU @ 2.10GHz. 22 cores c/u 187 GB de RAM y 2x NVIDIA Tesla V100 c/u&lt;br /&gt;
* Nueva generación de procesadores Intel Xeon Skylake (SP)&lt;br /&gt;
* Intel Advanced Vector Extensions 512 (Intel AVX-512)&lt;br /&gt;
* Ganancia en el rendimiento en aplicaciones de deep learning de hasta 113x (respecto a los procesadores de Leftraru Epu)&lt;br /&gt;
&lt;br /&gt;
=== Almacenamiento Cluster ===&lt;br /&gt;
* Almacenamiento paralelo de clase mundial&lt;br /&gt;
* Alto rendimiento en operaciones IO&lt;br /&gt;
* Tolerante a fallas (alta disponibilidad)&lt;br /&gt;
* Interconexión infiniband&lt;br /&gt;
* Capacidades Big Data&lt;br /&gt;
&lt;br /&gt;
Características en Guacolda-Leftraru Epu&lt;br /&gt;
&lt;br /&gt;
* 4 PB de almacenamiento IBM Elastic Storage System (IBM ESS 3200)&lt;br /&gt;
* Almacenamiento metadata separado&lt;br /&gt;
* 2 controladoras SFA en H.A&lt;/div&gt;</summary>
		<author><name>Jmorales</name></author>
	</entry>
	<entry>
		<id>https://wiki.nlhpc.cl/index.php?title=Descripci%C3%B3n_General_del_Sistema&amp;diff=702</id>
		<title>Descripción General del Sistema</title>
		<link rel="alternate" type="text/html" href="https://wiki.nlhpc.cl/index.php?title=Descripci%C3%B3n_General_del_Sistema&amp;diff=702"/>
		<updated>2024-04-18T18:54:59Z</updated>

		<summary type="html">&lt;p&gt;Jmorales: /* Infraestructura Guacolda */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== National Laboratory for High Performance Computing ==&lt;br /&gt;
El NLHPC en Chile está dirigido a la instalación en Chile de una capacidad computacional que pueda satisfacer la demanda científica nacional de computación de alto rendimiento (HPC), ofreciendo servicios de alta calidad y promoviendo su uso en las problemáticas de Investigación tanto básica como también aplicada, con énfasis en aplicaciones industriales. En años recientes, el desarrollo de las ciencias aplicadas y la industria ha sido dirigido por el uso sofisticado de las tecnologías de la información y las comunicaciones (ICT), proceso en el cual HPC ha jugado un rol fundamental.&lt;br /&gt;
&lt;br /&gt;
Nuestros servicios están diseñados para ofrecer soporte al ciclo de vida completo de la investigación e innovación basada en HPC.&lt;br /&gt;
&lt;br /&gt;
== Misión del NLHPC ==&lt;br /&gt;
La consolidación de una facilidad a nivel nacional de HPC al ofrecer servicios de alta calidad y training avanzado para así responder a la alta demanda de computación científica, desarrollando lazos entre grupos de investigación, la industria y el sector público.&lt;br /&gt;
&lt;br /&gt;
== Visión del NLHPC ==&lt;br /&gt;
Visionamos al NLHPC como un centro altamente competitivo con una gama de servicios para la investigación en computación de alto rendimiento de calidad de clase mundial.&lt;br /&gt;
&lt;br /&gt;
== Objetivo General ==&lt;br /&gt;
El NLHPC servirá como socio IT clave para los proyectos de investigación basados en HPC a gran escala.&lt;br /&gt;
&lt;br /&gt;
=== Objetivos específicos ===&lt;br /&gt;
Desarrollar y dar soporte a recursos computacionales y de redes eficaces y confiables permitiendo a investigadores nacionales tener acceso a capacidad HPC para así resolver intensos problemas científicos de computación y data. Estimular y participar en la creación de una red nacional de alta velocidad para la transmisión de data de investigación Usar y explorar arquitecturas y técnicas innovadoras para acelerar la computación científica. Gatillar nuevas iniciativas industriales en HPC. Ayudar a educar a las próximas generaciones de científicos e ingenieros en HPC. Incrementar la conciencia social sobre el rol de HPC en la sociedad contemporánea y el desarrollo tecnológico.&lt;br /&gt;
&lt;br /&gt;
== Infraestructura Guacolda-Leftraru Epu ==&lt;br /&gt;
=== Infraestructura Leftraru Epu===&lt;br /&gt;
* 44 TFlops&lt;br /&gt;
* 2640 cores&lt;br /&gt;
* 132 nodos slims&lt;br /&gt;
* 12 Xeon Phi&lt;br /&gt;
* Infiniband FDR 56 Gbps&lt;br /&gt;
* Red servicio 1 Gpbs&lt;br /&gt;
* Red iLO para administracion de hardware&lt;br /&gt;
* Racks enfriados por agua&lt;br /&gt;
* Enfriamiento in-row respaldo&lt;br /&gt;
* UPS 120 KVA autonomia: 30 mins&lt;br /&gt;
&lt;br /&gt;
=== Infraestructura Guacolda ===&lt;br /&gt;
* 150 TFlops sin coprocesadores&lt;br /&gt;
* 48 nodos, 2 x Intel(R) Xeon(R) Gold 6152 CPU @ 2.10GHz. 22 cores c/u 187 GB de RAM&lt;br /&gt;
* 9 nodos, 2 x Intel(R) Xeon(R) Gold 6152 CPU @ 2.10GHz. 22 cores c/u 765 GB de RAM&lt;br /&gt;
* 2 nodos, 2 x Intel(R) Xeon(R) Gold 6152 CPU @ 2.10GHz. 22 cores c/u 187 GB de RAM y 2x NVIDIA Tesla V100 c/u&lt;br /&gt;
* Nueva generación de procesadores Intel Xeon Skylake (SP)&lt;br /&gt;
* Intel Advanced Vector Extensions 512 (Intel AVX-512)&lt;br /&gt;
* Ganancia en el rendimiento en aplicaciones de deep learning de hasta 113x (respecto a los procesadores de Leftraru Epu)&lt;br /&gt;
&lt;br /&gt;
=== Almacenamiento Cluster ===&lt;br /&gt;
* Almacenamiento paralelo de clase mundial&lt;br /&gt;
* Alto rendimiento en operaciones IO&lt;br /&gt;
* Tolerante a fallas (alta disponibilidad)&lt;br /&gt;
* Interconexión infiniband&lt;br /&gt;
* Capacidades Big Data&lt;br /&gt;
&lt;br /&gt;
Características en Guacolda-Leftraru&lt;br /&gt;
&lt;br /&gt;
* 4 PB de almacenamiento IBM Elastic Storage System (IBM ESS 3200)&lt;br /&gt;
* Almacenamiento metadata separado&lt;br /&gt;
* 2 controladoras SFA en H.A&lt;/div&gt;</summary>
		<author><name>Jmorales</name></author>
	</entry>
	<entry>
		<id>https://wiki.nlhpc.cl/index.php?title=Descripci%C3%B3n_General_del_Sistema&amp;diff=701</id>
		<title>Descripción General del Sistema</title>
		<link rel="alternate" type="text/html" href="https://wiki.nlhpc.cl/index.php?title=Descripci%C3%B3n_General_del_Sistema&amp;diff=701"/>
		<updated>2024-04-18T18:54:22Z</updated>

		<summary type="html">&lt;p&gt;Jmorales: /* Infraestructura Leftraru */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== National Laboratory for High Performance Computing ==&lt;br /&gt;
El NLHPC en Chile está dirigido a la instalación en Chile de una capacidad computacional que pueda satisfacer la demanda científica nacional de computación de alto rendimiento (HPC), ofreciendo servicios de alta calidad y promoviendo su uso en las problemáticas de Investigación tanto básica como también aplicada, con énfasis en aplicaciones industriales. En años recientes, el desarrollo de las ciencias aplicadas y la industria ha sido dirigido por el uso sofisticado de las tecnologías de la información y las comunicaciones (ICT), proceso en el cual HPC ha jugado un rol fundamental.&lt;br /&gt;
&lt;br /&gt;
Nuestros servicios están diseñados para ofrecer soporte al ciclo de vida completo de la investigación e innovación basada en HPC.&lt;br /&gt;
&lt;br /&gt;
== Misión del NLHPC ==&lt;br /&gt;
La consolidación de una facilidad a nivel nacional de HPC al ofrecer servicios de alta calidad y training avanzado para así responder a la alta demanda de computación científica, desarrollando lazos entre grupos de investigación, la industria y el sector público.&lt;br /&gt;
&lt;br /&gt;
== Visión del NLHPC ==&lt;br /&gt;
Visionamos al NLHPC como un centro altamente competitivo con una gama de servicios para la investigación en computación de alto rendimiento de calidad de clase mundial.&lt;br /&gt;
&lt;br /&gt;
== Objetivo General ==&lt;br /&gt;
El NLHPC servirá como socio IT clave para los proyectos de investigación basados en HPC a gran escala.&lt;br /&gt;
&lt;br /&gt;
=== Objetivos específicos ===&lt;br /&gt;
Desarrollar y dar soporte a recursos computacionales y de redes eficaces y confiables permitiendo a investigadores nacionales tener acceso a capacidad HPC para así resolver intensos problemas científicos de computación y data. Estimular y participar en la creación de una red nacional de alta velocidad para la transmisión de data de investigación Usar y explorar arquitecturas y técnicas innovadoras para acelerar la computación científica. Gatillar nuevas iniciativas industriales en HPC. Ayudar a educar a las próximas generaciones de científicos e ingenieros en HPC. Incrementar la conciencia social sobre el rol de HPC en la sociedad contemporánea y el desarrollo tecnológico.&lt;br /&gt;
&lt;br /&gt;
== Infraestructura Guacolda-Leftraru Epu ==&lt;br /&gt;
=== Infraestructura Leftraru Epu===&lt;br /&gt;
* 44 TFlops&lt;br /&gt;
* 2640 cores&lt;br /&gt;
* 132 nodos slims&lt;br /&gt;
* 12 Xeon Phi&lt;br /&gt;
* Infiniband FDR 56 Gbps&lt;br /&gt;
* Red servicio 1 Gpbs&lt;br /&gt;
* Red iLO para administracion de hardware&lt;br /&gt;
* Racks enfriados por agua&lt;br /&gt;
* Enfriamiento in-row respaldo&lt;br /&gt;
* UPS 120 KVA autonomia: 30 mins&lt;br /&gt;
&lt;br /&gt;
=== Infraestructura Guacolda ===&lt;br /&gt;
* 150 TFlops sin coprocesadores&lt;br /&gt;
* 48 nodos, 2 x Intel(R) Xeon(R) Gold 6152 CPU @ 2.10GHz. 22 cores c/u 187 GB de RAM&lt;br /&gt;
* 9 nodos, 2 x Intel(R) Xeon(R) Gold 6152 CPU @ 2.10GHz. 22 cores c/u 765 GB de RAM&lt;br /&gt;
* 2 nodos, 2 x Intel(R) Xeon(R) Gold 6152 CPU @ 2.10GHz. 22 cores c/u 187 GB de RAM y 2x NVIDIA Tesla V100 c/u&lt;br /&gt;
* Nueva generación de procesadores Intel Xeon Skylake (SP)&lt;br /&gt;
* Intel Advanced Vector Extensions 512 (Intel AVX-512)&lt;br /&gt;
* Ganancia en el rendimiento en aplicaciones de deep learning de hasta 113x (respecto a los procesadores de Leftraru)&lt;br /&gt;
=== Almacenamiento Cluster ===&lt;br /&gt;
* Almacenamiento paralelo de clase mundial&lt;br /&gt;
* Alto rendimiento en operaciones IO&lt;br /&gt;
* Tolerante a fallas (alta disponibilidad)&lt;br /&gt;
* Interconexión infiniband&lt;br /&gt;
* Capacidades Big Data&lt;br /&gt;
&lt;br /&gt;
Características en Guacolda-Leftraru&lt;br /&gt;
&lt;br /&gt;
* 4 PB de almacenamiento IBM Elastic Storage System (IBM ESS 3200)&lt;br /&gt;
* Almacenamiento metadata separado&lt;br /&gt;
* 2 controladoras SFA en H.A&lt;/div&gt;</summary>
		<author><name>Jmorales</name></author>
	</entry>
	<entry>
		<id>https://wiki.nlhpc.cl/index.php?title=Descripci%C3%B3n_General_del_Sistema&amp;diff=700</id>
		<title>Descripción General del Sistema</title>
		<link rel="alternate" type="text/html" href="https://wiki.nlhpc.cl/index.php?title=Descripci%C3%B3n_General_del_Sistema&amp;diff=700"/>
		<updated>2024-04-18T18:54:00Z</updated>

		<summary type="html">&lt;p&gt;Jmorales: /* Infraestructura Guacolda-Leftraru */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== National Laboratory for High Performance Computing ==&lt;br /&gt;
El NLHPC en Chile está dirigido a la instalación en Chile de una capacidad computacional que pueda satisfacer la demanda científica nacional de computación de alto rendimiento (HPC), ofreciendo servicios de alta calidad y promoviendo su uso en las problemáticas de Investigación tanto básica como también aplicada, con énfasis en aplicaciones industriales. En años recientes, el desarrollo de las ciencias aplicadas y la industria ha sido dirigido por el uso sofisticado de las tecnologías de la información y las comunicaciones (ICT), proceso en el cual HPC ha jugado un rol fundamental.&lt;br /&gt;
&lt;br /&gt;
Nuestros servicios están diseñados para ofrecer soporte al ciclo de vida completo de la investigación e innovación basada en HPC.&lt;br /&gt;
&lt;br /&gt;
== Misión del NLHPC ==&lt;br /&gt;
La consolidación de una facilidad a nivel nacional de HPC al ofrecer servicios de alta calidad y training avanzado para así responder a la alta demanda de computación científica, desarrollando lazos entre grupos de investigación, la industria y el sector público.&lt;br /&gt;
&lt;br /&gt;
== Visión del NLHPC ==&lt;br /&gt;
Visionamos al NLHPC como un centro altamente competitivo con una gama de servicios para la investigación en computación de alto rendimiento de calidad de clase mundial.&lt;br /&gt;
&lt;br /&gt;
== Objetivo General ==&lt;br /&gt;
El NLHPC servirá como socio IT clave para los proyectos de investigación basados en HPC a gran escala.&lt;br /&gt;
&lt;br /&gt;
=== Objetivos específicos ===&lt;br /&gt;
Desarrollar y dar soporte a recursos computacionales y de redes eficaces y confiables permitiendo a investigadores nacionales tener acceso a capacidad HPC para así resolver intensos problemas científicos de computación y data. Estimular y participar en la creación de una red nacional de alta velocidad para la transmisión de data de investigación Usar y explorar arquitecturas y técnicas innovadoras para acelerar la computación científica. Gatillar nuevas iniciativas industriales en HPC. Ayudar a educar a las próximas generaciones de científicos e ingenieros en HPC. Incrementar la conciencia social sobre el rol de HPC en la sociedad contemporánea y el desarrollo tecnológico.&lt;br /&gt;
&lt;br /&gt;
== Infraestructura Guacolda-Leftraru Epu ==&lt;br /&gt;
=== Infraestructura Leftraru ===&lt;br /&gt;
* 44 TFlops&lt;br /&gt;
* 2640 cores&lt;br /&gt;
* 132 nodos slims&lt;br /&gt;
* 12 Xeon Phi&lt;br /&gt;
* Infiniband FDR 56 Gbps&lt;br /&gt;
* Red servicio 1 Gpbs&lt;br /&gt;
* Red iLO para administracion de hardware&lt;br /&gt;
* Racks enfriados por agua&lt;br /&gt;
* Enfriamiento in-row respaldo&lt;br /&gt;
* UPS 120 KVA autonomia: 30 mins&lt;br /&gt;
=== Infraestructura Guacolda ===&lt;br /&gt;
* 150 TFlops sin coprocesadores&lt;br /&gt;
* 48 nodos, 2 x Intel(R) Xeon(R) Gold 6152 CPU @ 2.10GHz. 22 cores c/u 187 GB de RAM&lt;br /&gt;
* 9 nodos, 2 x Intel(R) Xeon(R) Gold 6152 CPU @ 2.10GHz. 22 cores c/u 765 GB de RAM&lt;br /&gt;
* 2 nodos, 2 x Intel(R) Xeon(R) Gold 6152 CPU @ 2.10GHz. 22 cores c/u 187 GB de RAM y 2x NVIDIA Tesla V100 c/u&lt;br /&gt;
* Nueva generación de procesadores Intel Xeon Skylake (SP)&lt;br /&gt;
* Intel Advanced Vector Extensions 512 (Intel AVX-512)&lt;br /&gt;
* Ganancia en el rendimiento en aplicaciones de deep learning de hasta 113x (respecto a los procesadores de Leftraru)&lt;br /&gt;
=== Almacenamiento Cluster ===&lt;br /&gt;
* Almacenamiento paralelo de clase mundial&lt;br /&gt;
* Alto rendimiento en operaciones IO&lt;br /&gt;
* Tolerante a fallas (alta disponibilidad)&lt;br /&gt;
* Interconexión infiniband&lt;br /&gt;
* Capacidades Big Data&lt;br /&gt;
&lt;br /&gt;
Características en Guacolda-Leftraru&lt;br /&gt;
&lt;br /&gt;
* 4 PB de almacenamiento IBM Elastic Storage System (IBM ESS 3200)&lt;br /&gt;
* Almacenamiento metadata separado&lt;br /&gt;
* 2 controladoras SFA en H.A&lt;/div&gt;</summary>
		<author><name>Jmorales</name></author>
	</entry>
</feed>