Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Tip
titleOdređivanje radnog direktorija

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

Ukoliko Ako se želite prebaciti u direktorij u kojem je pokrenuta skripta, poslije zaglavlja potrebno je napisati:

cd $PBS_O_WORKDIR

Ukoliko Ako želite pokretati poslove visokog opterećenja spremišta (I/O zahtjevni) izvođenje posla ne preporuča se pokretanje iz $PBS_O_WORKDIR-a već sa $TMPDIR lokacije čime će se iskoristiti brzo spremište. U nastavku pročitajte više o korištenju brzog spremišta i privremenim rezultatima.

...

PBS omogućava definiranje potrebnih resursa na nekoliko načina. Glavna jednica za dodjeljivanje resursa je takozvani "Chunk" ili komad čvora. Chunk se definira sa sa opcijom s opcijom select. Broj procesorskih procesorskih  jezgri jezgri po po chunk-u moguće je definirati sa s ncpus, broj mpi procesa sa s mpiprocs i količinu radne memorije sa s mem. Također moguće je definirati walltime (maksimalno vrijeme izvođenja posla) i place (način raspodjeljivanja raspoređivanje chunk-ova po čvorovima). 

Ukoliko Ako neki od parametara nisu definirani koristiti će se defaultne vrijednost:

4320
ParametarDefaultna vrijednost
select1
ncpus1
mpiprocs1
mem

3500 MB

walltime

48:00:00

place

pack

Kontrola memorije pomoću cgrupa

Osim za kontrolu korištenja procesora, cgrupe postavljene su da kontroliraju i potrošnju memorije. To znači da su poslovi koje korisnik pokreće ograničene ograničeni na traženu količinu memorije. Ako posao pokuša iskoristiti više memorije nego je to zatraženo u opisu posla, sustav će ubiti prekinuti taj posao i u izlaznu error datoteku zapisati:

...

Kod svakog posla ova poruka bit će malo drugačija, jer  jer sadrži podatke kao što su UID (jedinstvena brojčana oznaka korisnika), PID( brojčana oznaka procesa koji je ubijen), JOB_ID (ID posla koji dodijeljuje PBS).

...

Dodjeljivanje po traženom chunku

...

Primjeri:
Korisnik traži dva chunka od kojih se svaki sastoji od 10 procesorskih jezgara i 10GB RAM-a, s time da korisnik nije specificirao na koliko čvorova već će sustav optimizirati dodijelu. U ovom slučaju korisnik će na korištenje dobiti 20 procesorskih jezgara i 20 GB radne memorije (moguće po 10 na dva čvora)radne memorije.

Code Block
languagebash
titlePrimjer traženja resursa
#PBS -l select=2:ncpus=10:mem=10GB

...

Korisnik traži 10 chunkova od kojih se svaki sastoji od jedne procesorske jezgre i 1 GB RAM-a, ali uvjetovano s uvjetom na jednom čvoru, pa će korisnik dobiti ukupno 10 procesorskih jezgara i 10 GB RAM-a.

...

U gornjim primjerima poslovi su definirani kroz količinu chunkova, jezgara i memorije, ali sustav dozvoljava da se poslovima dodijeljuju dodjeljuju resursi ako oni nisu zatraženi (default resursi):

Code Block
languagebash
titlePrimjer traženja resursa
#PBS -l ncpus=4:
#PBS -l mem=14GB

U ovom slučaju korisnik dobiva 4 procesorske jezgre i ukupno 14GB memorije na jednom chunku. Kad se poslovi opisuju bez opcije select, nije moguće "ulančavanje resursa" (odvajanje traženih resursa dvotočkom, potrebno je za svaki resurs staviti u novi red -l opciju)

Tip
titleMemorija

Ukoliko Ako definirate poslove koristeći ncpus bez opcije select, poželjno je definirati i količinu memorije, jer će u suprotnom dostupna radna memorija iznositi 3500 MB (select x mem → 1 x 3500 MB).


Spremanje privremenih rezultata

...

  1. Primjer jednostavnog korištenja $TMPDIR varijable:
    Code Block
    #!/bin/bash
    
    #PBS -q cpu
    #PBS -l walltime=00:00:05
    
    cd $TMPDIR
    pwd > test
    cp test $PBS_O_WORKDIR

  2. Primjer kopiranja ulaznih podataka u $TMPDIR, pokretanje aplikacije, i kopiranje u radni direktorij:
    Code Block
    #!/bin/bash
    
    #PBS -q cpu
    #PBS -l walltime=00:00:05
    
    # Stvaranja direktorija za ulazne podatke u privremenom direktoriju
    mkdir -p $TMPDIR/data
    
    # Kopirati sve potrebne inpute u privremeni direktorij
    cp -r $HOME/data/* $TMPDIR/data
    
    # Pokrenuti aplikaciju i preusmjeriti outpute u "aktualni" (privremeni) direktorij
    cd $TMPDIR
    <izvršna naredba aplikacije> 1>output.log 2>error.log
    
    # Kopirati željeni output u radni direktorij
    cp -r /$TMPDIR/output $PBS_O_WORKDIR

Paralelni poslovi

OpenMP paralelizacija

Ukoliko Ako Vaša aplikacija koristi paralelizaciju isključivo na razini OpenMP dretvi (engl. threads) 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.

Tip

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.

Ukoliko Ako definirate poslove koristeći ncpus bez opcije select, poželjno je definirati i količinu memorije, jer će u suprotnom dostupna radna memorija iznositi 3500 MB (select x mem → 1 x 3500 MB).

...

Code Block
languagebash
linenumberstrue
#!/bin/bash

#PBS -q cpu
#PBS -l walltime=10:00:00
#PBS -l ncpus=8:mem=28GB

cd ${PBS_O_WORKDIR}

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

MPI paralelizacija

Ukoliko Ako Vaša aplikacija koristi paralelizaciju isključivo na razini MPI procesa i može se širiti van jednog radnog čvora (odnosno radi s raspodijeljenom memorijom), posao možete pozvati na način kako je prikazano u primjeru Quantum ESPRESSO aplikacije niže. Za izvođenje aplikacija koje koriste paralelizaciju MPI (ili hibridno MPI+OMP) potrebno je učitati mpi modul  prije pozivanja naredbe mpiexec ili mpirun.

...

MPI + OpenMP (hibridna) paralelizacija

Ukoliko Ako 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:

...

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

Code Block
languagebash
Job id            Name             User              Time Use S Queue
----------------  ---------------- ----------------  -------- - -----
111.admin         mpi+omp_s        kmrkalj           00:36:09 R cpu             

...

  • after* - pokretanje trenutnog s obzirom na ostale
    • after - izvršavanje trenutnog nakon početka izvršavanja navedenih
    • afterok - izvršavanje trenutnog nakon uspješnog završetka navedenih
    • afternotok -izvršavanje trenutnognakon greške u završetku navedenih
    • afterany - izvršavanje trenutnog nakon završetka navedenih
  • before* - pokretanje ostalih s obzirom na trenutni
    • before - pokretanjenavedenih nakon početka trenutnog
    • beforeok - pokretanjenavedenih nakon usprešnog uspješnog završetka trenutnog
    • beforenotok - pokretanjenavedenih nakon greške u izvršavanju trenutnog
    • beforeany - pokretanjenavedenih nakon završetka trenutnog
  • on:<broj> - izvršavanje posla koji će ovisiti o naknadno navedenom broju before*   tipa poslova

...