Příklady
V této sekci Vám představíme příklady zadání a spuštění úloh v prostředí infrastruktury CERIT-SC.
Nejprve sumarizace několika základních zásad/doporučení:
- nejdříve si zjistěte, zda Vámi požadovaná aplikace je v rámci CERIT-SC infrastruktury dostupná (soupis dostupných aplikací - viz sekce Aplikační programy)
- rozmyslete si, odkud bude Vaše aplikace brát vstupní data, kde bude mít uložena pracovní data a kam uloží výsledky svého výpočtu (soupis dostupných úložných svazků - viz sekce Úložné svazky)
- zadejte úlohu do plánovacího systému pomocí příkazu
qsub, kterému specifikujete požadavky na přidělení strojů, paměťi a případných licencí využívané aplikace (detaily viz sekce Specifikace vlastností uzlů/úloh) - úloha bude patrně nejdříve nějakou dobu čekat, než budou volné požadované zdroje (stroje požadovaných vlastností a případně potřebný počet licencí aplikace). Důvod, proč nebyla úloha zatím spuštěna, lze nalézt po spuštění následujícího příkazu na některém z čelních uzlů (položka comment ve výstupu příkazu):
$ qstat -f <jobid>kde<jobid>je identifikátor Vaší úlohy (např. 12345.wagap.cerit-sc.cz)Obvyklé důvody čekání úlohy jsou:
Not Running: Not enough nodes fitting the nodespec found- není dost volných strojů požadovaných vlastností; úloha čeká, až nějaká běžící úloha skončí a uvolní zdrojeNot Running: User has reached queue running job limit- vstupní fronta plánovacího serveru má nastaven limit pro maximální počet úloh od jednoho uživatele; pokud máte ve frontě více úloh, než je limit, další Vaše úloha bude spuštěna, až jiná (Vaše) skončí.Not Running: Draining system to allow starving job to run- ve frontě čeká víceprocesorová úloha a systém blokuje máloprocesorové úlohy, dokud nebude víceprocesorová úloha spuštěna, aby ji nepředbíhaly.
Doporučení pro práci se soubory (úložnými svazky):
/home... tento svazek využívejte jako úložiště svých běžných dat (domovský adresář)./scratch... pokud Vaše úloha vyžaduje práci s velkými soubory, ukládejte je (na stroji, na kterém je Vaše úloha opravdu spuštěna) do relevantního podadresáře diskového svazku/scratch. Tento svazek je na rychlém lokálním disku, zdržení diskových operací v průběhu zpracování úlohy tedy bude minimální./storage... tento svazek využívejte pro data, která chcete mít lehce přístupná i z uzlů infrastruktury MetaCentra, a pro data trvalejší hodnoty, která chcete mít dlouhodoběji zálohována (viz sekce Úložné svazky).
Spuštění dávkové úlohy v prostředí infrastruktury CERIT-SC
| 1. Přihlášení na čelní uzel: |
|---|
|
Přihlašte se na čelní uzel CERIT-SC infrastruktury (více viz sekce Přístup k infrastruktuře): $ ssh <username>@zuphux.cerit-sc.cz |
|
Poznámka: Obdobně se lze přihlásit i s využitím alternativních SSH klientů (např. Putty). |
| 2. Příprava vstupních dat úlohy: |
Vstupní data úlohy si nakopírujte do svého domovského (pod)adresáře (/home/<username>/), dostupného na čelním uzlu. |
| 3. Příprava spouštěcího skriptu úlohy: |
|
I. Ve svém oblíbeném textovém editoru si vytvořte shellový skript (se jménem např. #!/bin/bash# Inicializace systemu modulu:. /packages/run/modules-2.0/init/sh# Inicializace konkretni verze konkretni aplikace# (v tomto pripade paralelniho Amberu verze 10)module add amber10-parallel |
|
II. Instruujte Vaši úlohu k počátečnímu přenesení vstupních dat do rychlého úložného svazku Na konec výše uvedeného skriptu přidejte řádky: LOGNAME=`whoami` #programy spustene pres pbsdsh nemaji kompletni prostrediDATADIR="/storage/brno1/home/$LOGNAME/" # sdilene pres NFSv4PISECEK="/scratch/$LOGNAME/$PBS_JOBID/" # lokalni disk mkdir $PISECEKcp $DATADIR/vstup.txt $PISECEK || exit 1cd $PISECEK || exit 2# ... vlastni vypocet ...cp $PISECEK/vystup.txt $DATADIRif [ $? -ne 0 ]; then echo Copy output data failed. Copy them manualy from `hostname` 1>&2 exit 3firm -rf $PISECEKif [ $? -ne 0 ]; then echo Cleanup failed. Please, remove data manually from `hostname` 1>&2 exit 4fi |
|
Poznámky: a) V případě, kdy Vámi zadávaná úloha využití dalších aplikací nevyžaduje, není aktivace systému modulů potřebná. b) V případě, kdy Vaše úloha nevyžaduje intenzívní diskové operace, není rovněž kopírování vstupních/výstupních dat do/z adresáře |
| 4. Zadání (dávkové) úlohy: |
|
Vyspecifikujte si požadavky na přidělení strojů (rozšířené např. o požadavky na dostupnou operační paměť, počet licencí, atp.) a maximální dobu běhu Vaší úlohy (více viz sekce Specifikace vlastností uzlů/úloh). Tyto spolu s Vaší úlohou následně předejte plánovacímu systému s využitím příkazu $ qsub –l walltime=<timespec> -l nodes=<nodesnum>:ppn=<procpernode> mojeuloha.sh12345.wagap.cerit-sc.cz # = jobID |
|
Příklad: Zadání úlohy trvající maximálně 10 hodin, vyžadující 2 stroje (na každém z nich 10 procesorů a 4GB operační paměti) z čelního uzlu CERIT-SC: qsub –l walltime=10:00:00 -l nodes=2:ppn=10,mem=4gb mojeuloha.sh |
|
Poznámky: a) Specifikaci požadavků na přidělení zdrojů lze provést i přímo ve spouštěcím skriptu Vaší úlohy, a to přidáním následujících řádků za úvodní řádek #PBS –l walltime=<timespec>#PBS –l nodes=<nodesnum>:ppn=<procpernode>:...Následné zadání úlohy je pak provedeno příkazem: $ qsub mojeuloha.shb) Pro pomoc se sestavením požadavků úlohy můžete využít pomůcku dostupnou na stránkách MetaCentra - Sestavovač qsub. |
| 5. Sledování stavu zadané úlohy: |
|
Stav Vámi zadané úlohy lze sledovat s využitím příkazu $ qstat <jobID> # vypíše základní informace o dané úloze$ qstat -f <jobID> # vypíše kompletní informace o dané úlozeVe výpisu příkazu lze mimo jiné identifikovat propočítaný čas a aktuální stav úlohy, který nabývá jedné z následujících hodnot:
|
|
Poznámka: Seznam všech Vámi v nedávné době zadaných úloh spolu se základními informacemi k nim lze získat spuštěním následujícího příkazu: $ qstat –u <username> |
| 6. Násilné ukončení úlohy: (jen v případě potřeby) |
|
Pokud potřebujete Vámi zadanou úlohu násilně ukončit (ať už před jejím skutečným spuštěním či v průběhu jejího běhu), provedete to s využitím příkazu $ qdel <jobID> |
|
Poznámka: Po zadání příkazu přejde daná úloha do stavu E (exiting) a následně do stavu C (completed). |
| 7. Získání standardního výstupu (stdout) a standardního chybového výstupu (stderr) běhu úlohy: |
|
Po ukončení běhu úlohy (ať už regulérním, chybovém či násilném) budou ve Vašem domovském adresáři čelního uzlu, ze kterého jste úlohu zadali, vytvořeny následující soubory obsahující standardní výstup a standardní chybový výstup vygenerovaný v průběhu jejího zpracování:
tj. například soubory " |
- bod 2. Vstupní data úlohy si nakopírujte do (pod)adresáře na svazku
/storage(CERIT-SC svazek/homenení z prostředí infrastruktury MetaCentra dostupný) - bod 3. Dle výše uvedeného proveďte patřičné úpravy v kódu skriptu, určeném k přenesení vstupních/výstupních dat na/ze svazku
/scratch - bod 4. Při zadávání úlohy příkazem
qsubnezapomeňte na explicitní specifikaci plánovacího serveru (přepínač "-q @wagap.cerit-sc.cz") - bod 5. Pro výpis všech Vámi v nedávné době zadaných úloh explicitně specifikujte plánovací server, který má být příkazem
qstatdotazován:
$ qstat -u <username> wagap.cerit-sc.cz




