Od února 2022 je spouštění úloh na výpočetních uzlech clusteru Kraken možné výhradně přes frontový systém ([[https://slurm.schedmd.com/documentation.html|SLURM]]). Výpočetní uzly nejsou samostatně dostupné ze sítě. Pro připojení ke clusteru, přípravu a zadávání úloh do frontového systému, je vyhrazen administrativní uzel "kraken". Administrativní uzel není určen k běhu výpočtů, užívejte ho především k práci s daty, zadávání úloh do front a kompilaci vlastních programů. Paralelní úlohy mimo fronty spouštět nelze. Pro výpočetně nenáročné paralelní programy (např. Paraview) je určena fronta "NoCompute", která běží jen na administrativním uzlu (ten má kvůli zpracování velkých dat navýšenou RAM na 320GB). Aktuální vytížení clusteru zobrazuje, kromě [[computing:cluster:fronty:start#zakladni_prikazy|příkazů systému SLURM]], příkaz ''freenodes'' {{:computing:cluster:fronty:computing:cluster:fronty:freenodes.png?direct&400|}} **Uživatelé zadáním úlohy do fronty přenechávají spuštění výpočtu frontovému systému. Úloha je do fronty zařazena v pořadí dle interních priorit systému a čeká na spuštění. Frontový systém úlohu spustí hned jak jsou dostupné výpočetní kapacity, uživatelé proto dostupnost výpočetní kapacity sami sledovat nemusí, mohou se z clusteru odhlásit a vyčkat na dokončení výpočtu (lze nastavit i notifikační email, viz [[computing:cluster:fronty:start#parametry_prikazu_srun_a_sbatch|Přehled příkazů]]).** Níže naleznete základní popis práce s frontovým systémem (SLURM), specifika spouštění konkrétních aplikací jsou na samostatných stránkách: * [[computing:cluster:fronty:abaqus|Abaqus]] * [[computing:cluster:fronty:ansys|Ansys (Fluent)]] * [[computing:cluster:fronty:comsol|Comsol]] * [[computing:cluster:fronty:matlab|Matlab]] * [[computing:cluster:fronty:openfoam|OpenFOAM]] * [[computing:cluster:fronty:paraview|Paraview]] * [[computing:cluster:fronty:pmd|PMD]] ====== Frontový systém SLURM ====== Frontový systém se stará o optimální využití clusteru, přináší řadu nástrojů pro zadávání úloh, jejich kontrolu a paralelizaci. Všechny úkony provádíme po přihlášení na administrativní uzel "kraken" (ssh username@kraken). Kompletní dokumentace je na adrese [[https://slurm.schedmd.com|slurm.schedmd.com]] ==== Základní příkazy: ==== === Spouštění úloh === K dispozici jsou 2 příkazy pro zařazení úlohy do fronty, ''srun'' a ''sbatch'': srun //Klíčový příkaz pro zadání úlohy do fronty.// Pro paralelní úlohy nahrazuje příkaz "mpirun" (mpi knihovny v modulech proto ani příkaz mpirun nenabízí..).\\ ''srun'' v této podobě vyžádá prostředky dle '''' a program na nich spustí. Spouštíte-li **ne**paralelní úlohu, ponechte parametr ''-n 1'' (výchozí), zvolíte-li vyšší hodnotu, neparalelní program se spustí n-krát! sbatch //Zadání úlohy do fronty dle připraveného skriptu, viz příklady níže. Součástí skriptu pro paralelní úlohy bývá řádka s příkazem "srun" (komerční kódy bývají spouštěny bez //srun//, podobně jako kódy).// Nejběžnější způsob pro zadávání úlohy do fronty je právě sbatch+skript. === Řízení úloh === sinfo //Vypíše přehled front a jejich aktuální využití.// squeue //Vypíše informace o běžících úlohách ve frontovém systému.// Význam zkratek ve výpisu //squeue// ([[https://curc.readthedocs.io/en/latest/running-jobs/squeue-status-codes.html|kompletní přehled zde]]): - ve sloupci "ST" (status): **R** - running, **PD** - pending (čeká na alokaci výp. zdrojů), **CG** - completing (část procesů je dokončena, ale některé jsou stále aktivní),... - ve sloupci REASON: **Priority** - ve frontě je/jsou úloha/y s vyšší prioritou, **Dependency** - úloha čeká na dokončení úlohy v závislosti a bude spuštěna poté, **Resources** - úloha čeká na uvolnění potřebných výp. zdrojů,... scancel //Ukončí úlohu zařazenou ve frontě.// === Informace o uživateli === sacct //Vypíše informace o úlohách uživatele (včetně historie).// {{:computing:cluster:fronty:slurm_command_summary.pdf|Seznam příkazů s parametry v PDF dokumentu.}} ===== Spouštění úloh ===== Úlohy je možné spouštěn na více uzlech, ale vždy jen na jedné části serveru kraken: * část **M** - stroje kraken-m1 až m10 (všichni uživatelé) * část **L** - stroje kraken-l1 až l4 (omezený přístup) Úlohy lze spouštět: * přímo z řádky příkazem ''srun'' * pomocí skriptu příkazem ''sbatch'' ==== Pokyny ke spouštění úloh ==== * Úloha musí vždy běžet pod nějakou frontou (partition). Pokud není zadána žádná fronta, je použita Mexpress. Seznam definovaných front je uveden níže. * Zadáním fronty je definován časový limit běhu. * Úlohám ve frontách express a short nelze pomocí ''-''''-time'' zadat delší dobu běhu. Defaultní čas front long je nastavený na 1 týden, ale umožňují běh až 2 týdny, např. 9 dní a 5 hodin zadáme „''-p Llong'' ''-''''-time=9-05:00:0''“. * Slurm při zařazení do fronty čekajících úloh upřednostní úlohu a uživatele, který cluster méně vytěžuje. Není proto výhodné deklarovat delší čas výpočtu, než je nezbytně nutné. ==== Předdefinované fronty a časové limity ==== Na clusteru Kraken je k dispozici 6 front ("partition") rozdělených dle délky běhu úlohy (express, short, long) a části clusteru ("Mxxx" a "Lxxx"). Nespecifikuje-li uživatel frontu přepínačem ``-````-partition`` užije se defaultní hodnota (Mexpress): ^ cluster part ^ partition ^ node ^ time limit ^ | M (nodes kraken-m[1-10]) | **Mexpress** | kraken-m[1-10] | 6 hours | | ::: | Mshort | kraken-m[1-10] | **2 days** | | ::: | ::: | ::: | 3 days | | ::: | Mlong | kraken-m[3-6],kraken-m8 | **1 week** | | ::: | ::: | ::: | 2 weeks | | L (nodes kraken-l[1-4]) | Lexpress | kraken-l[1-4] | 6 hours | | ::: | Lshort | kraken-l[1-4] | 2 days | | ::: | Llong | kraken-l[1-4] | **1 week** | | ::: | ::: | ::: | 2 months (max) | | admin node only | NoCompute | kraken | **1 hour** | | ::: | ::: | ::: | 8 hours | *bold=default Detaily nastavení lze zobrazit také příkazem scontrol show partition [partition_name] ==== Parametry příkazů ''srun'' a ''sbatch'' ==== Běh programu se řídí pomocí parametrů. U příkazu ''srun'' se zadávají přímo do příkazové řádky, u příkazu ''sbatch'' se zapisují do spouštěcího skriptu. Ve skriptu je před každým parametrem zapsán identifikátor ''#SBATCH''. Volby můžeme zadávat ve dvou tvarech, buď plný tvar ''-''''-ntasks=5'' (dvě pomlčky a rovnítko) nebo zkráceně ''-n 5'' (jedna pomlčka a mezera). ^ volba ^ popis ^ příklad ^ | ``-J``, ``-````-job-name=`` | Job name, shown e.g. in output of //squeue// | ``-J my_first_job`` | | ``-p``, ``-````-partition=`` | Request a specific partition for the resource allocation | ``-p Mshort`` | | ``-n``, ``-````-ntasks=`` | Number of resources (~cores) to be allocated for the task | ``-n 50`` | | ``-N``, ``-````-nodes=`` | Number of nodes to be used | ``-N 3`` | | ``-````-mem`` | Job memory request | ``-````-mem=1gb`` | | ``-o``, ``-````-output=`` | Name of file where slurm will output | ``-o out.txt`` | | ``-e``, ``-````-error=`` | standard error to file | ``-e err.txt`` | | ``-````-mail-user=`` | User to receive email notification of state changes as defined by --mail-type | ``-````-mail-user=my@email`` | | ``-````-mail-type=`` | Send email with BEGIN, END, FAIL, ALL,... | ``-````-mail-type=BEGIN,END`` | | ``-````-ntasks-per-node=`` | Request that ntasks be invoked on each node | | | ``-t``, ``-````-time=