You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 14 Next »


Uvod

Za raspoređivanje u upravljanje poslovima na računalnom klasteru Supek, koristi se PBS Pro (Portable Batch System Professional) koji obavlja raspoređivanje poslova unutar klastera. Njegova primarna zadaća je raspodjela računalnih zadataka, tj. paketnih poslova, među dostupnim računalnim resursima.

U ovom dokumentu opisano je korištenje PBS Pro 2022.1.1 verzije.

Izvođenje poslova

Korinsičke aplikacije(u nastavku poslovi) koji se pokreću pomoću sustava PBS moraju biti opisani startnom shell skritpom(sh, bash, zsh...). Unutar startne skriipte iznad normalnih naredbi, navode se PBS parametri. Te parametre moguće je navesti i prilikom podnošenja posla.


Osnovno pokretanje posla:

qsub moj_posao.pbs


Pokretanje posla uz parametre:

qsub -q cpu -l ncpus=4:mem=10GB moj_posao.pbs


Više informacija za qsub parametre:

qsub --help

Opis posla

Za opisivanje poslova koristi se jezik sustava PBS, dok datoteka za opis posla je standardna shell skripta. U zaglavlju svek skripte navode se PBS parametri koji detaljno opisuju posao nakon kojih slijede naredbe za izvrašavanje željene aplikacije.


Struktura startne skripte:


moj_posao.pbs
#!/bin/bash

#PBS -<parametar1> <vrijednost>
#PBS -<parametar2> <vrijednost>

<naredba>


Konkretni primjer startne skripte:


moj_posao.pbs
#!/bin/bash

#PBS -P testni_primjer
#PBS -q cpu
#PBS -e /home/moj_direktorij
#PBS -l select=2:ncpus=10

module load gcc/12.1.0

gcc --version


Osnovni PBS parametri

OpcijaArgument opcijeZnačenje opcije
-Pime_projektaSpecificiranje imena projekta
-NimePostavljanje imena posla
-qdestinacijaSpecificiranje reda posla i/ili servera
-llista_resursaTraženje resursa potrebnih za izvođenje posla
-Mlista_korisnikaPostavljanje liste primatelja mail-a
-mopcije_mailaPostavljanje vrste notifikacije mail-a
-oputanja/do/željenog/direktorijaPostavljanje imena/putanje u koje se sprema standardni izlaz
-eputanja/do/željenog/direktorijaPostavljanje imena/putanje u koje se sprema standardna greška
-j oe-Povezivanje standardnog izlaza i greške u istu datoteku


Opcije za slanje obavijesti putem pošte opcijom -m:

aMail se šalje kada batch sustav prekine posao
bMail se šalje kada posao počne izvršavati
eMail se šalje kada posao završi
jMail se šalje za podposlove. Mora se kombinirati s jednom ili više podopcija a, b ili e


Opcije za traženje resursa opcijom -l

-l select=3:ncpus=2Traženje 3 komada(chunk-a) čvora po 2 jezgre
-l select=1:ncpus=10:mem=20GBTraženje 1 komada(chunka-a) čvora sa 10 jezgri i 20GB radne memorije





PBS varijable okoline

ImeOpis
PBS_JOBIDIdentifikator posla koji daje PBS kada se posao preda. Stvoreno nakon izvršenjanaredbe qsub.
PBS_JOBNAMENaziv posla koji je dao korisnik. Zadani naziv je naziv podnešene skripte.
PBS_NODEFILEPopis radnih čvorova, odnosno procesorskih jezgri na kojima se izvršava posao
PBS_O_WORKDIRRadni direktorij u kojem je podnesen posao, odnosno u kojem je pozvana naredba qsub.
OMP_NUM_THREADSOpenMP varijabla koju PBS izvozi u okolinu, a koja je jednaka vrijednosti opcije select iz zaglavlja PBS skripte
NCPUSBroj zatraženih jezgara. Odgovara vrijednosti iz opcije select iz zaglavlja PBS skripte.
TMPDIRPutanja do scratch direktorija.




Određivanje radnog direktorija

Dok je u PBS pro određena putanja za outpu i error datoteke u direktoriju u kojem se izvode, input i output datoteke samog programa se zadano ščitavaju/spremaju u $HOME direktorij.  PBS Pro nema opciju određivanja izvođenja posla u trenutnom direktoriju u kojem se nalazimo stoga je potrebno ručno promijeniti direktorij.

Poslije zaglavlja potrebno je napisati:

cd $PBS_O_WORKDIR

Prebacit će izvođenje posla u direktorij u kojem je pokrenuta skripta.



Paralelni poslovi

OpenMP paralelizacija

Ukoliko Vaša aplikacija koristi paralelizaciju isključivo na razini OpenMP dretvi (engl. threadovs) i ne može se širiti van jednog radnog čvora (odnosno radi s dijeljenom memorijom), posao možete pozvati na način kako je prikazano u primjeru xTB aplikacije niže.

OpenMP aplikacije zahtjevaju definiranje varijable OMP_NUM_THREADS.

PBS sustav vodi računa o tome umjesto Vas, te joj pridružuje vrijednost varijable ncpus, definirane u zaglavlju PBS skripte.

#!/bin/bash

#PBS -q cpu
#PBS -l ncpus=8

cd ${PBS_O_WORKDIR}

xtb C2H4BrCl.xyz --chrg 0 --uhf 0 --opt vtight

MPI paralelizacija

Ukoliko Vaša aplikacija koristi paralelizaciju isključivo na razini MPI procesa (engl. threadovs) i može se širiti van jednog radnog čvora (odnosno radi s raspodjeljenom memorijom), posao možete pozvati na način kako je prikazano u primjeru Quantum ESPRESSO aplikacije niže.

Vrijednost varijable select iz zaglavlja PBS skripte odgovara broju MPI procesa, međutim, nema pripadajuću varijablu koju PBS sustav izvodi u okolinu.

Kako bi se izbjeglo prepisivanje, u primjeru niže, definirana je varijabla MPI_NUM_PROCESSES koja odgovara vrijednosti varijable select.

#!/bin/bash

#PBS -q cpu
#PBS -l select=16

MPI_NUM_PROCESSES=$(cat ${PBS_NODEFILE} | wc -l)

cd ${PBS_O_WORKDIR}

mpiexec -n ${PBS_O_WORKDIR} pw.x -i calcite.in

MPI + OpenMP (hibridna) paralelizacija

Ukoliko se Vaša aplikacije može paralelizirati hibridno, odnosno dijeliti svoje MPI procese u OpenMP threadove, možete posao pozvati na način kako je prikazano u primjeru GROMACS aplikacije niže:

OpenMP aplikacije zahtjevaju definiranje varijable OMP_NUM_THREADS. PBS sustav joj automatski pridružuje vrijednost varijable ncpus, definirane u zaglavlju PBS skripte.

Vrijednost varijable select iz zaglavlja PBS skripte odgovara broju MPI procesa, međutim, nema pripadajuću varijablu koju PBS sustav izvodi u okolinu. Kako bi se izbjeglo prepisivanje, u primjeru niže, definirana je varijabla MPI_NUM_PROCESSES koja odgovara vrijednosti varijable select.

#!/bin/bash

#PBS -q cpu
#PBS -l select=8:ncpus=4

MPI_NUM_PROCESSES=$(cat ${PBS_NODEFILE} | wc -l)

cd ${PBS_O_WORKDIR}

mpiexec -n ${MPI_NUM_PROCESSES} -d ${OMP_NUM_THREADS} --cpu-bind depth gmx mdrun -v -deffnm md

Prilagođena raspodjela MPI procesa

Ukoliko sami želite kontrolirati kako će PBS sustav raspodjeliti Vašu aplikaciju na čvorove, odnosno koliko će se MPI procesa nalaziti na svakom čvoru, morate dodatno aktivirati opciju place=scatter u zaglavlju skripte, te koristiti mpiexec opciju --ppn, čiji je argument broj MPI procesa koji želite na svakom čvoru.

Primjer je dan s GROMACS aplikacijom niže, kojoj je svaki MPI proces smješten na vlastiti čvor. Aplikacija će se izvoditi na 8 čvorova i koristiti sumarno 32 procesorske jezgre; svaki MPI proces bit će smješten na vlastiti čvor, a svaki MPI proces dodatno će stvoriti 4 OpenMP dretve (eng. threads).

#!/bin/bash

#PBS -q cpu
#PBS -l select=8:ncpus=4
#PBS -l place=scatter

MPI_NUM_PROCESSES=$(cat ${PBS_NODEFILE} | wc -l)

cd ${PBS_O_WORKDIR}

mpiexec -n ${MPI_NUM_PROCESSES} --ppn 1 -d ${OMP_NUM_THREADS} --cpu-bind depth gmx mdrun -v -deffnm md

Praćenje i upravljanje izvođenja posla

Prikaz stanja posla

Za prikaz stanja poslova koristi se PBS-ova naredba qstat. Osnovna sintaksa naredbe je:

qstat <opcije> <ID_posla>

Izvršavanjem naredbe qstat bez dodatnih opcija dobiva se ispis svih trenuthi poslova svih korisnika:

Job id            Name             User              Time Use S Queue
----------------  ---------------- ----------------  -------- - -----
2663.x3000c0s25b* mpi+omp_s        kmrkalj           00:36:09 R cpu             

Neke od korištenijih opcija su:

-EGrupira poslove prema poslužitelju i prikazuje poslove poredane prema uzlaznom ID-u. Kada se qstat prikaže s popisom poslova, poslovi su grupirani po poslužitelju i svaka grupa je prikazana uzlaznim ID-om. Ova opcija također poboljšava performanse qstata.
-tPrikazuje informacije o statusu za poslove, nizove poslova i podposlove.
-pPrikaz stupca za Iskorišteno vrijeme zamjenjuje se postotkom obavljenog posla. Za posao niza ovo je postotak završenih podposlova. Za normalan posao, to je postotak iskorištenog dodijeljenog CPU vremena.
-xPrikazuje informacije o statusu za dovršene i premještene poslove uz poslove u čekanju i pokrenute poslove.
-QPrikazuje status redova u standardnom formatu.
-qPrikazuje status redova u alternativnom formatu.
-fPrikazuje status posla u alternativnom formatu

Primjeri korištenja:

Detaljan prikaz posla

qstat -fxw 2648
  • No labels