meta data stránky
  •  
Překlady této stránky:
Error loading plugin include
ParseError: syntax error, unexpected 'include' (T_INCLUDE), expecting identifier (T_STRING) or '{'
More info is available in the error log.

Toto je starší verze dokumentu!


Frontový systém SLURM (probíhá aktualizace)

Frontový systém pomáhá optimálnímu využití prostředků clusteru, přináší řadu nástrojů pro spouštění a správu běhu úloh i jejich paralelizaci. Správa front a úloh v nich je možná jedině na administratovním uzlu „kraken“.

Nejběžnějšími příkazy jsou:

sinfo

vypíše přehled front a jejich aktuální využití

srun <volby> <spouštěný_program> <parametry_spouštěného_programu>

klíčový příkaz pro zadání úlohy do fronty. Pro paralelní úlohy nahrazuje zároveň příkaz „mpirun“ (mpi knihovny v modulech proto ani příkaz mpirun nenabízí..).

sbatch <script_file>

zadání úlohy do fronty dle připraveného skriptu, viz příklady níže. Součástí skriptu bývá řádka s příkazem „srun“. Nejběžnější způsob pro zadávání úlohy do fronty je právě sbatch+skript.

squeue

vypíše přehled běžících úloh, vč. čísla úlohy ve frontě, uživatelského pojmenování, stavu (čekající/běh/…)

scancel <number>

ukončí úlohu <number> zařazenou ve frontě

Na clusteru Kraken je k dispozici 6 front rozdělených dle délky běhu úlohy (express, short, long) a části clusteru:

name nodes length
Mexpress M 6 hours (default)
Mshort 2 days
Mlong 2 weeks
Lexpress L 6 hours
Lshort 2 days
Llong 2 weeks

Parametry pro srun resp. skript pro sbatch

option description example
-J, –job-name=<jobname> Job name, shown e.g. in output of squeue
–mail-type=<type> Send email with BEGIN, END, FAIL, ALL,…
-n, –ntasks=<number> Number of resources (~cores) to be allocated for the task -n 50
-N, –nodes=<nodes> Number of nodes to be used -N 3
–ntasks-per-node=<ntasks> Request that ntasks be invoked on each node
-o, –output=<filename_pattern> Name of file where slurm will output -o out.txt
-p, –partition=<partition_names> Request a specific partition for the resource allocation -p Mshort
-w, –nodelist=<node_name_list> Request a specific list of hosts -w kraken-m2,kraken-m[5-6]
-x, –exclude={<host1[,<host2>…]} Request that a specific list of hosts not be included in the resources allocated to this job –exclude=kraken-m[7-9]
Příklad: skript pro sbatch

Všechny volby vypíšeme jako jeden příkaz srun

srun -n 8 -N 2 HelloWorld

nebo připravíme soubor pro sbatch, např. muj_test_front.sh:

#!/bin/bash
#SBATCH --job-name=test
#SBATCH --output=output.txt
#
#SBATCH -n 7
#SBATCH -N 3
#SBATCH -p Mexpress
#SBATCH --mail-type=ALL
#SBATCH --mail-user=uzivatel@it.cas.cz
module load HelloWorld
cd ~/test_front
srun HelloWorld

Předání úlohy systému:

sbatch muj_test_front.sh
Fluent (Ansys)

Základní skript pro spuštění 2D úlohy v aplikaci Fluent (verze 2020 R1) ve frontě přes příkaz sbatch:

#!/bin/bash

#SBATCH --job-name=fluent_test
#SBATCH --output=slurm-%j.out

#SBATCH --partition=Mexpress
#SBATCH --exclude=kraken-m[7-9]
#SBATCH --ntasks=4

FLUENTNODES="$(scontrol show hostnames)"
FLUENTNODES=$(echo $FLUENTNODES | tr ' ' ',')

/ansys_inc/v211/fluent/bin/fluent -ssh 2ddp -mpi=openmpi -slurm -t $SLURM_NTASKS -cnf=$FLUENTNODES -g -i my_journal_file.jou

Vzhledem k nastavení licencí pro ANSYS není doporučeno úlohy dělit mezi více uzlů. Výpočetní uzly mají vzhledem k zakoupeným licencím dostatečný počet jader, rozdělení úlohy mezi více uzlů tak způsobí jen zpomalení výpočtu.

Aktuálně nelze kvůli speciálním požadavkům ANSYSu na nastavení SSH spouštět ANSYS přes fronty na strojích kraken-m7,…,kraken-m9 (proto #SBATCH –exclude=kraken-m[7-9]). Uživatele by ale toto dočasné nastavení nemělo omezovat.

Abaqus

Běh na 5 jádrech v rámci 1 uzlu lze zadat skriptem pro „sbatch“:

#!/bin/bash

#SBATCH --job-name=Abaqus_test
#SBATCH --output=slurm_out.txt
#SBATCH -N 1
#SBATCH -n 5

/var/DassaultSystemes/SIMULIA/Commands/abaqus job=PLATE_HOLE.inp cpus=$SLURM_NTASKS
Comsol

Comsol umí využít proměnné, které poskytuje SLURM, skript pro „sbatch“ je proto poměrně jednoduchý. Jediná odlišnost je, že počet jader volíme pomocí proměnných „–nodes“ a „–ntasks-per-node“, proměnnou „–ntasks“ si Comsol dopočítává sám. Rozdělení úlohy mezi více nodů výpočet značně zpomaluje, je proto doporučeno ponechat „–nodes=1“.

#!/bin/bash
#SBATCH --job-name=comsol_test
#SBATCH --output=test.%j.output
#SBATCH --error=test.%j.error

#SBATCH --nodes=1
#SBATCH --ntasks-per-node=8

comsol batch -mpibootstrap slurm -inputfile in.mph -outputfile out.mph

Více se lze dočíst zde: COMSOL