CERIT logo

CERIT-SC

  • O NÁS
    • KONTAKTY
    • LIDÉ A ZKUŠENOSTI
    • PROJEKT OP VAVPI
    • HISTORIE
    • INTRANET
    • AKTUALITY
  • CÍLE A NABÍDKA
  • VÝZKUM A VÝVOJ
  • HARDWARE
  • DOKUMENTACE
    • QUICKSTART
    • PŘÍSTUP K INFRASTRUKTUŘE
    • SPECIFIKACE VLASTNOSTÍ UZLŮ/ÚLOH
    • ÚLOŽNÉ SVAZKY
    • APLIKAČNÍ PROGRAMY
    • PŘÍKLADY
    • PRAVIDLA VYUŽITÍ
    • TECHNICKÁ PODPORA
    • POD POKLIČKOU
  • SEMINÁŘE
    • ZAHÁJENÍ PROVOZU
  • VEŘEJNÉ ZAKÁZKY

CS | EN


    • O nás
    • Cíle a nabídka
    • Výzkum a vývoj
    • Hardware
    • Dokumentace
      • » QuickStart
      • » Přístup k infrastruktuře
      • » Specifikace vlastností uzlů/úloh
      • » Úložné svazky
      • » Aplikační programy
      • » Příklady
      • » Pravidla využití
      • » Technická podpora
      • » Pod pokličkou
    • Semináře
    • Veřejné zakázky

logo CERIT

logo MU

logo EU

logo OPVaVpI

Příklady

Dokumentace » 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í:

  1. 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)
  2. 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)
  3. 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)
  4. ú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í zdroje
    • Not 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):

  1. /home ... tento svazek využívejte jako úložiště svých běžných dat (domovský adresář).
  2. /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í.
  3. /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ř. mojeuloha.sh), který na svém začátku provede aktivaci systému modulů a aktivaci modulu Vámi požadované aplikace (více viz sekce Aplikační programy):

#!/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 /scratch na uzlu, na kterém bude spuštěna, a po ukončení výpočtu k následnému přenesení výstupních souborů a úklidu pracovního adresáře.

Na konec výše uvedeného skriptu přidejte řádky:

LOGNAME=`whoami` #programy spustene pres pbsdsh nemaji kompletni prostredi
 
DATADIR="/storage/brno1/home/$LOGNAME/" # sdilene pres NFSv4
PISECEK="/scratch/$LOGNAME/$PBS_JOBID/" # lokalni disk
 
mkdir $PISECEK
cp $DATADIR/vstup.txt $PISECEK || exit 1
cd $PISECEK || exit 2
 
# ... vlastni vypocet ...
 
cp $PISECEK/vystup.txt $DATADIR
if [ $? -ne 0 ]; then
    echo Copy output data failed. Copy them manualy from `hostname` 1>&2
    exit 3
fi
 
rm -rf $PISECEK
if [ $? -ne 0 ]; then
    echo Cleanup failed. Please, remove data manually from `hostname` 1>&2
    exit 4
fi

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 /scratch potřebné (úloha může počítat přímo nad daty uloženými ve svazku /home).

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 (příkazem bude následně vypsán identifikátor (jobID) Vaší úlohy):

$ qsub –l walltime=<timespec> -l nodes=<nodesnum>:ppn=<procpernode> mojeuloha.sh
12345.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 #!/bin/bash :

#PBS –l walltime=<timespec>
#PBS –l nodes=<nodesnum>:ppn=<procpernode>:...

Následné zadání úlohy je pak provedeno příkazem:

$ qsub mojeuloha.sh

b) 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 následovně:

$ qstat <jobID>   # vypíše základní informace o dané úloze
$ qstat -f <jobID>   # vypíše kompletní informace o dané úloze

Ve 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:

  • Q (queued) ... čekající
  • R (running) ... běžící
  • E (exiting) ... ukončující se
  • C (completed) ... ukončená

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 následujícím způsobem:

$ 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í:

  • <job_name>.o<jobID> ... standardní výstup
  • <job_name>.e<jobID> ... standardní chybový výstup

tj. například soubory "mojeuloha.o12345" a "mojeuloha.e12345". Jejich prozkoumáním lze např. zjistit výsledky běhu úlohy či důvody jejího neúspěšného zpracování.

Zadání dávkové úlohy, určené pro běh na CERIT-SC zdrojích, z čelních uzlů MetaCentra:
Při zadávání dávkové úlohy z čelních uzlů MetaCentra je na výše uvedený návod zapotřebí aplikovat následující úpravy:
  • bod 2. Vstupní data úlohy si nakopírujte do (pod)adresáře na svazku /storage (CERIT-SC svazek /home není 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 qsub nezapomeň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 qstat dotazován:
    $ qstat -u <username> wagap.cerit-sc.cz



(c) 2011 CERIT - Centrum vzdělávání, výzkumu a inovací pro ICT v Brně

BRNO