1. Domů
  2. Dokumentace
  3. Dokumentace pro uživatele...
  4. Fronta luna
  5. Spouštění úloh ve frontě luna

Spouštění úloh ve frontě luna

Všechny výpočetní uzly luna jsou zařazené pod frontový systém PBS Professional (Portable Batch System).

Úlohy se zadávají z čelního uzlu tarkil.metacentrum.cz nebo z vyhrazeného uzlu luna.fzu.cz příkazem qsub.

Ve frontovém systému PBSPro rozlišujeme dva typy požadavků úlohy na zdroje – jednak požadavky na zdroje, které úloha nárokuje v rámci jednoho výpočetního uzlu (tzv. per-chunk), jednak požadavky na zdroje, které úloha nárokuje jako celek (tzv. job-wide).

Syntaxe pro per-chunk požadavky:

-l select=N:<resource_name1=value1>:<resource_name2=value2> ...

kde N je počet chunků. Defaultně je nastavena hodnota 1. Jeden chunk představuje nedělitelnou množinu zdrojů přidělených úloze na jednom výpočetním uzlu. Zároveň lze ovlivnit, jakým způsobem se chunky budou na výpočetní uzly přiřazovat.

Syntaxe pro job-wide požadavky:

-l <resource_name=value>

Mezi požadavky v rámci jednoho uzlu (per-chunk) patří:

  • počet výpočetních jader
    • ncpus=
  • velikost alokované paměti (defaultně pouze 400 MB na 1 výpočetní uzel)
    • mem=
  • velikost a typ scratche (defaultně se žádný nepřiděluje)
    • scratch_local=
  • konkrétní vlastnost uzlu
    • vlastnost=True/False

Mezi požadavky úlohy jako celek (job-wide) patří:

  • předpokládaný walltime
    • -l walltime=HH:MM:SS
  • umístění chunků
    • -l place=free/pack/scatter/excl
  • požadavek na Infiniband
    • -l place=group=infiniband
  • licence
    • -l <lic_name>=<amount>
  • posílání notifikačních e-mailů
    • -m=<abe>
  • závislosti mezi úlohami
    • -W depend=afterok:<Job Id>

Příklady:

qsub -q luna -l select=1:ncpus=8:mem=10gb:scratch_local=20gb -l walltime=48:00:00 job_script.sh
qsub -q luna -l select=1:ncpus=4:mem=12gb:scratch_local=20gb -l matlab=1 -l matlab_Optimization_Toolbox=4 -l walltime=72:00:00 job_script.sh
qsub -q luna -l select=1:ncpus=2:mem=20gb:scratch_local=40gb -W depend=afterok:123456.meta-pbs.metacentrum.cz -l walltime=10:00:00 job_script.sh

Chunky mohou být umístěny:

  • na jednom nebo více výpočetních uzlech podle aktuální obsazenosti – jedná se o defaultní rozmístění
  • pouze na jednom výpočetním uzlu
    • -l place=pack
  • pouze na různých uzlech (počet uzlů odpovídá počtu chunků)
    • -l place=scatter
  • na exkluzivním uzlu/uzlech
    • -l place=excl

Příklad:

qsub -q luna -l select=2:ncpus=4:mem=10gb -l walltime=72:00:00 -l place=scatter:excl job_script.sh


Paralelní úlohy:
Pokud úloha požaduje více výpočetních uzlů (tj. více chunků), stačí pouze zadat požadavek na Infiniband ve tvaru -l place=group=infiniband. Tento parametr zajistí, že se úloze přiřadí pouze uzly z jednoho klastru.
Infiniband sítí jsou propojené pouze výpočetní uzly klastru Luna2019 (luna65-99).

Příklad:

qsub -q luna -l select=2:ncpus=4:mem=10gb -l walltime=72:00:00 -l place=group=infiniband job_script.sh

Pozn.: Nezapomeňte u paralelní úlohy vhodně nastavit proměnnou OMP_NUM_THREADS. Hodnota zpravidla odpovídá počtu požadovaných ncpus. V opačném případě úloha obsadí na výpočetním uzlu všechna dostupná výpočetní jádra a omezí tak procesy jiných úloh.

export OMP_NUM_THREADS=$PBS_NUM_PPN

Pokud potřebujete spustit úlohu na konkrétní skupině výpočetních uzlů luna (luna65-95, luna96-99, luna100-105, luna201-206), potom stačí zadat požadavek -l select=luna= a rok pořízení (2019, 2020, 2021, 2022).

Příklad:

qsub -q luna -l select=luna=2021 ...

Požadavky úlohy na paměť – maximální možná velikost paměti, kterou úloha může požadovat na jednom výpočetním uzlu, je přehledně uvedena v následující tabulce.

Typ uzluVelikost osazené pamětiVelikost využitelné paměti
luna65-95512 GB504 GB
luna96-99512 GB504 GB
luna100-1051024 GB1008 GB
luna201-206512 GB504 GB

V případě, že jste pro úlohu neodhadli správně potřebný walltime, můžete hodnotu walltime prodloužit pomocí příkazu:

qextend <full JobId> <additional_walltime>

Příklad:

qextend 8642013.meta-pbs.metacentrum.cz 12:00:00

Pro tento příkaz jsou nastavené limity, viz podrobné informace na stánkách MetaCentra.

Parametry lze specifikovat také ve spouštěcím skriptu pomocí řádků začínajících #PBS. Všechny tyto řádky musí být uvedeny na začátku skriptu před ostatními příkazy. Potom stačí úlohu zadat pouze:

qsub <job script>

Příklad skriptu:

#!/bin/bash
#PBS -q luna
#PBS -l select=1:ncpus=8:mem=16gb:scratch_local=20gb
#PBS -l walltime=72:00:00
...
<commands> 

Doporučení:

  • Ve skriptech používejte plnou cestu k úložištím, t.j. /storage/lokalita/home/username/, nepoužívejte pouze /home/username/.
  • Domovský adresář je defaultně přístupný všem uživatelům, výjimku tvoří výstupy z úloh. Práva přístupu si můžete sami kdykoliv změnit.
  • Pomocí sestavovače příkazu qsub na webové stránce MetaCentra (https://metavo.metacentrum.cz/cs/state/index.html – volba “Osobní pohled” – volba „Sestavovač qsub pro PBSPro“) si můžete předem zjistit, zda výpočetní uzel s požadovanými vlastnostmi existuje, případně, jak jsou dané uzly zaplněné úlohami.
  • Pozor na posílání notifikačních e-mailů u většího počtu úloh. Mohlo by dojít k zahlcení Vaší e-mailové schránky, případně i k zablokování poštovního serveru MetaCentra.

Příkaz qstat zobrazuje pouze běžící a čekající úlohy. Pro zobrazení nedávno dokončených úloh je třeba přidat parametr -x

stat -x -u username
qstat -x -f JobID
qstat -xwn -u username ... the option -n lists assigned worker nodes

Dokončená úloha je ve stavu F (finished).

V případě, že úlohu nelze ukončit příkazem qdel JobID, použijte následující parametr:

qdel -W force JobID

Dokumentace a návody: