Prehľad témy
-
Všeobecné
-
Test slúžiaci na zhodnotenie získaných znalostí po absolvovaní všetkých tém Spúšťanie úloh na vysokovýkonnom klastri.
-
Cieľ: Cieľom témy je získať poznatky ako úspešne spustiť predpripravený spúšťací skript
Prerekvezity: Kompilácia a spustenie programu
PBS súbor
Ak chceme spustiť úlohu v prostredí vysoko výkonného klastra, budeme musieť nastaviť dávkový súbor Portable Batch System (PBS). Súbor PBS definuje príkazy a prostriedky klastra používané na prácu. Tento PBS súbor je jednoduchý textový súbor, ktorý je možné ľahko upravovať pomocou editora, akým je napríklad Vi. Môže byť ľubovoľne pomenovaný, preto skripty s názvom napr. myscript.job, myscript.pbs alebo myscript pracujú rovnako správne.
Spúšťací skript je jednoduchý shell skript. Skladá sa zo smerníc PBS, komentárov a vykonateľných príkazov. Znak # označuje koment, ale keď riadky začínajú s #PBS tak sú interpretované ako príkaz PBS. Prázdne riadky môžu byť zahrnuté pre lepšiu prehľadnosť.
Potvrdenie úlohy na spustenie
Po prihlásení na vysoko výkonný klaster je potrebné potvrdiť PBS job pre spustenie nami požadovanej úlohy. K tomu sa používa príkaz qsub, ktorý pošle úlohu do fronty PBS a požaduje dodatočné výpočtové zdroje. Príkaz qstat sa používa na kontrolu stavu úlohy už vo fronte PBS. Pre zjednodušenie potvrdenia úlohy vytvoríme skript PBS a použijeme príkazy qsub a qstat pre interakciu s frontou PBS.
Vytváranie PBS skriptu
Pre nastavenie potrebných parametrov pre našu prácu, môžeme vytvoriť ovládací súbor obsahujúci príkazy, ktoré majú byť vykonané. Zvyčajne je to vo forme skriptu PBS. Tento skript je potom potvrdený do fronty PBS pomocou príkazu qsub.
Nižšie je ukážkový PBS súbor s názvom my_job.sh a následné vysvetlenie každého riadku v súbore.#!/bin/bash ###Prvý riadok v súbore identifikuje, ktorý interpreter bude použitý pre úlohu #PBS -N dimacs_job ###Voliteľne môžeme pomenovať vykonávanú úlohu. Ak neposkytneme meno, bude použitý názov skriptu. Toto meno je súčasťou log súboru a taktiež sa zobrazí v zozname čakajúcich a spustených úloh. Môže byť dlhé až 15 znakov, bez medzier a začiatočný znak musí byť písmeno
#PBS -A cislo_projektu ###Spôsobuje, že čas potrebný na úlohu je daný k <account>, projektu. Číslo projektu je reťazec z troch písmen nasledovaných tromi číslicami, napr. edv001. Táto možnosť je vyžadovaná pre každú úlohu
#PBS -r n ###Deklaruje, či je úloha znovu spustiteľná. Môže mať parametre y pre áno a n pre nie #PBS -q batch ###Definuje cieľové umiestnenie pre úlohu. Môže obsahovať názov pre zoznam, server alebo zoznam na konkrétnom servery
#PBS -l nodes=1:ppn=32:ht ###Definuje požiadavky na zdroje pre vykonanie úlohy. Ak nie je zadané, zdroje sú používané bez obmedzenia. Tento konkrétny zápis vyžaduje jeden node a tridsaťdva virtuálnych procesorov pre node
#PBS -v tpt=1 ###Exportuje všetky premenné prostredia z potvrdzujúceho shellu do shellu vykonávača úloh. Neodporúča sa použiť bez vytvorenia potrebného prostredia medzi vykonávačom úlohy
#PBS -l mem=512mb ###Definuje maximálne požadované množstvo RAM pamäte pre vykonanie úlohy. Môže byť v kb pre kilobajty, mb pre magabajty alebo gb pre gigabajty
#PBS -l walltime=480:00:00 ###Maximálny skutočný čas, počas ktorého môže byť úloha v stave spustená. Udáva sa v HH:MM:SS
echo Working directory is $PBS_O_WORKDIR ###Výpis pracovného adresára cd $PBS_O_WORKDIR ###Zmenenie adresára na pracovný echo Running on host `hostname` ###Spúšťa dodatočné informácie echo Time is `date` echo Directory is `pwd` echo This jobs runs on the following processors: echo `cat $PBS_NODEFILE` NPROCS=`wc -l < $PBS_NODEFILE` ###Definuje počet procesorov echo This job has allocated $NPROCS cpus export SOFTDIR="/home/evesel/work" export Home=$PWD export Project=DSJC1000-5 export OMP_NUM_THREADS=16 export WorkDir=/mnt/local/$USER/$PBS_JOBID #----------------------------------------------------------------------------------------------------------------------# #rm -rf $WorkDir; mkdir -p $WorkDir; cd $WorkDir ${SOFTDIR}/pmc -a 0 -f $Home/$Project.mtx -t $OMP_NUM_THREADS > $Home/$Project.log #cd; rm -rf $WorkDir #----------------------------------------------------------------------------------------------------------------------#Spustenie úlohy
Po vytvorení a pripravení spúšťacieho skriptu, úlohu spustíme príkazom:
qsub <názov_spúštiaceho_skriptu>
Informácie o spustených úlohách získame príkazom:
qstat
Potvrdenú úlohu zrušíme príkazom:
qdel <job_id>
Zdroj: https://www.osc.edu/supercomputing/batch-processing-at-osc/job-scripts
https://hpcc.usc.edu/support/documentation/running-a-job-on-the-hpcc-cluster-using-pbs/
Videotutoriál na spustenie úlohy: