Versions Compared

Key

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

...

Table of Contents
outlinetrue


Uvod

Za raspoređivanje i 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.

...

Note
titleKorištenje GPU-a

GPU-ovi su dostupni samo na GPU pristupnom i radnim poslužiteljima, a njihovo korištenje je ograničeno na gpu i gpu-testredove poslova. Više o redovima poslova na pročitajte na stranici Redovi poslova.

Izvođenje poslova

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

...

Code Block
qcat jobID
qcat -e jobID
qtail jobID
qtail -e jobID

Podnošenje poslova

Postoji nekoliko načina na koji se poslovi mogu podnijeti:

...

Tip
titlePolja poslova

Ovaj način poželjan je naspram višetrukog podnošenja (npr. for petljom) jer:

  • smanjuje opterećenje reda poslova - svaki posao će se istovremeno natjecati za resurse sa svima ostalim u redu, umjesto jedan za drugim
  • lakše upravljanje - modifikacija svih poslova moguća je pozivom glavnog (npr. 14575[]) ili pojedinačnog (npr. 14575[3]) identifikatora posla

Varijable okoliša koje PBS definira pri njihovom izvršavanju su:

  • PBS_ARRAY_INDEX - redni broj podposla u polju poslova (npr. jedan do devet u primjeru gore)
  • PBS_ARRAY_ID - identifikator glavnog polja poslova
  • PBS_JOBID - identifikator podposla u polju poslova


Opis posla

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

...

Code Block
languagebash
titlemoj_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
-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
-Wgroup_listšifra_projektaOdabir projekta pod kojim će se izvoditi posao

...

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

PBS varijable okoline

ImeOpis
PBS_JOBID Identifikator posla koji daje PBS kada se posao preda. Stvoreno nakon izvršenja naredbe 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 ncpus iz zaglavlja PBS skripte
NCPUSBroj zatraženih jezgara. Odgovara vrijednosti iz opcije ncpus iz zaglavlja PBS skripte.
TMPDIRPutanja do scratch direktorija.

...

Tip
titleOdređivanje radnog direktorija

Dok je u PBS pro 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 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. 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.

...

Code Block
languagebash
linenumberstrue
#!/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 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.

...

Code Block
languagebash
linenumberstrue
#!/bin/bash

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

cd ${PBS_O_WORKDIR}

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

...

Code Block
languagebash
linenumberstrue
#!/bin/bash

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

cd ${PBS_O_WORKDIR}

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

cray-pals

Za izvođenje aplikacija koje koriste paralelizaciju MPI (ili hibridno MPI+OMP) potrebno je podignuti modul cray-pals prije pozivanja naredbe  mpiexec , čime se osigurava ispravna integracija aplikacije sa sustavom za podnošenje poslova PBS Pro i Crayevom inačicom aplikacije MPI mpiexec baziranoj na implementaciji MPICH.

...

Note
titleZnanstvene aplikacije na Supeku i cray-pals

Znanstvene aplikacije koje su dostupne na Supeku putem modulefiles alata u sebi već pozivaju ovaj modul, stoga ga nije potrebno opet podizati.


Praćenje i upravljanje izvođenja posla

Praćenje posla

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

...

Code Block
languagebash
$ tracejob 2670

Job: 2670.x3000c0s25b0n0.hsn.hpc.srce.hr

03/30/2023 11:23:24  L    Considering job to run
03/30/2023 11:23:24  S    Job Queued at request of mhrzenja@x3000c0s25b0n0.hsn.hpc.srce.hr, owner =
                          mhrzenja@x3000c0s25b0n0.hsn.hpc.srce.hr, job name = mapping, queue = cpu
03/30/2023 11:23:24  S    Job Run at request of Scheduler@x3000c0s25b0n0.hsn.hpc.srce.hr on exec_vnode
                          (x8000c0s0b0n0:ncpus=40:mem=104857600kb)
03/30/2023 11:23:24  L    Job run
03/30/2023 11:23:24  S    enqueuing into cpu, state Q hop 1
03/30/2023 11:23:56  S    Holds u set at request of mhrzenja@x3000c0s25b0n0.hsn.hpc.srce.hr
03/30/2023 11:24:22  S    Holds u released at request of mhrzenja@x3000c0s25b0n0.hsn.hpc.srce.hr

Upravljanje poslovima

Poslom se može upravljati i nakon pokretanja.

...

Code Block
languagebash
qdel -W force -x <ID_posla>

Odgađanje izvođenja

PBS pruža mogućnost izvođenja poslova u ovisnosti o drugima, što je korisno u slučajevima poput:

...

Note

Posao s direktivom -W depend=... neće biti podnesen ako navedeni ID-ovi poslova ne postoje (iliti, ako nisu u redu čekanja)

Primjeri

Ako želimo da posao1 započne nakon uspješnog završetka posao0 :

...