...
Najjednostavniji oblik SGE poslova su serijski poslovi koji zahtijevaju samo jedan procesor za izvođenje. Za njih obično nije potrebno navoditi nikakve posebne parametre, nego se samo navodi ime programa.
Primjeri korištenja:
Primjer skripte bez dodatnih parametara
Code Block language bash #!/bin/bash date
Primjer jednostavne skripte s parametrima
Code Block language bash #!/bin/bash #$ -N Date_SGE_script #$ -o Date_SGE.out #$ -e Date_SGE.err date
Primjer izvođenja programa iz trenutnog direktorija
Code Block language bash title moj_program.sge #!/bin/bash #$ -N mojprog #$ -P local #$ -o mojprog.out #$ -e mojprog.err #$ -cwd mojprog
...
Code Block | ||
---|---|---|
| ||
#$ -pe <tip_paralelnog_posla> <N>,[<Ni>,...]<S>-<E>,[<Si>-<Ei>,] |
Primjeri korištenja:
Posao za izvođenje zahtijeva 14 procesorskih jezgara:
Code Block #$ -pe *mpi 14
Broj dodijeljenih procesorskih jezgara može biti između 2 i 4:
Code Block #$ -pe *mpi 2-4
Broj dodijeljenih procesorskih jezgara može biti 5 ili 10:
Code Block #$ -pe *mpi 5,10
Broj dodijeljenih procesorskih jezgara može biti 1 ili između 2 i 4:
Code Block #$ -pe *mpi 1,2-4
...
Samo pokretanje paralelnih poslova je specifično jer postoje alati za pokretanje podnaslova (npr. mpirun
) koji sami obavljaju raspoređivanje podposlova po čvorovima. Kada SGE dodijeli čvorove paralelnom poslu, popis čvorova spremi u datoteku $TMPDIR/machines
koja se unutar skripte za opis posla prenosi kao parametar paralelnim poslovima (npr. mpirun, mpiexec, pvm
...).
Primjer startne skripte za pokretanje jedne vrste paralelnog posla:
...
Vrijednost <početak>
je identifikator prvog zadatka, <kraj>
identifikator posljednjeg zadatka, a <korak>
vrijednost za koju se uvećava svaki sljedeći identifikator između <početak>
i <kraj>
. SGE sprema identifikator svakog zadatka u varijablu $SGE_TASK_ID
, pomoću koje korisnici mogu dodijeliti različite parametre pojedinom zadatku. Zadaci mogu biti serijski ili paralelni poslovi.
Primjeri korištenja
Primjer skripte za pokretanje polja poslova od 10 serijskih poslova:
Code Block language bash #!/bin/bash #$ -N job_array_serial #$ -cwd #$ -o output/ #$ -j y #$ -t 1-10 ./starSeeker starCluster.$SGE_TASK_ID
Primjer skripte za pokretanje polja poslova od 10 paralelnih poslova:
Code Block language bash #!/bin/bash #$ -N job_array_parallel #$ -cwd #$ -o output/ #$ -j y #$ -t 1-10 mpiexec -machinefile $TMPDIR/machines ./starseeker starCluster.$SGE_TASK_ID
...
Code Block | ||
---|---|---|
| ||
Your "qrsh" request could not be scheduled, try again later. |
Primjeri korištenja
Izravan pristup do komandne linije testnog čvora:
Code Block language text qrsh
Interaktivno izvođenje naredbe
Code Block language text qrsh /home/user/moja_skripta
Interaktivno izvođenje aplikacije s grafičkim sučeljem
Code Block language text qrsh -DISPLAY=10.1.1.1:0.0 <moja_skripta>
...
Warning |
---|
Privremeni direktorij na /scratch disku se briše automatski po završetku izvršavanja posla. |
Primjeri korištenja:
Primjer jednostavnog korištenja $TMPDIR varijable:
Code Block language bash #!/bin/bash #$ -N scratch_1 #$ -cwd #$ -o output/scratch.out #$ -j y #$ -l scratch=50 cd $TMPDIR pwd > test cp test $SGE_O_WORKDIR
Primjer kopiranja podataka na scratch disk:
Code Block language bash #!/bin/bash #$ -N scratch_2 #$ -cwd #$ -o output/scratch.out #$ -j y #$ -l scratch=50 mkdir -p $TMPDIR/data cp -r $HOME/data/* $TMPDIR/data python3.5 main.py $TMPDIR/data
Ukoliko privremeni podaci premašuju 500 GB potrebno je koristiti /shared. Za razliku od scratch-a, direktorij na shared-u je potrebno ručno kreirati i nema automatskog uklanjanja direktorija.
Primjer korištenja:
Code Block | ||
---|---|---|
| ||
#!/bin/bash #$ -N shared #$ -cwd #$ -o output/shared.out #$ -j y mkdir -p /shared/$USER/$TMPDIR cd /shared/$USER/$TMPDIR pwd > test cp test $SGE_O_WORKDIR |
...
Info |
---|
Vrijednosti resursa definirane u startnoj skripti posla postavljaju se po procesu. Na primjer, ukoliko korisnik na jednom čvoru zahtijeva 3 procesorske jezgre, vrijednosti svih zatraženih resursa biti će pomnožene s 3. |
Primjeri korištenja:
Primjer posla koji zahtijeva 20 CPU jezgara i 10 GB radne memorije po procesu (poslu će ukupno biti dodijeljeno 200 GB radne memorije):
Code Block #$ -pe *mpi 20 #$ -l memory=10
Posao zahtijeva 100 GB prostora na scratchu:
Code Block #$ -pe *mpisingle 4 #$ -l scratch=25
...
- b - početak izvođenja
- a - greška u izvođenju
- e - završetak izvođenja
- n - ne slati obavijesti (pretpostavljena opcija)
Primjer korištenja:
Code Block | ||
---|---|---|
| ||
#$ -m ae #$ -M moj@mail.com |
...
Opcije naredbe qstat je moguće kombinirati što je naročito bitno kada je potrebno filtrirati kroz nekoliko stotina poslova.
Primjeri korištenja:
Prikaz svih poslova u redu čekanja
Code Block $ qstat -u "*" -s p
Prikaz poslova svih korisnika koji se trenutno izvršavaju i zahtijevali su paralelnu okolinu
a16-mpi
Code Block $ qstat -u "*" -s r -pe a16-mpi
Prikaz svih poslova i čvorova korisnika pero
Code Block $ qstat –s r –f –u pero
Prikaz svi poslova koji se trenutno izvršavaju na čvorovima s grafičkim procesorima:
Code Block $ qstat –u "*" -q gpu.*.q
...
Code Block |
---|
-j <ID_posla> : detaljan opis pojedinih poslova -h <adresa_čvora> : statistike za pojedine čvorove -q <ime_reda> : statistike za pojedine redove -o <ime_korisnika> : statistike za pojedine korisnike -pe <ime_paralelne_okoline> : statistike za pojedine paralelne okoline -slots <broj_procesora> : statistike za poslove za određeni broj procesora -P <projekt> : prikaz sažetka potrošnje definiranog projekta |
Primjeri korištenja:
Detaljne informacije o svim poslovima izvršenim na klasteru (oprez: velika količina podataka):
Code Block $ qacct -j
Prikaz informacija o svim poslovima definiranog korisnika:
Code Block $ qacct -j -o <korisnik>
Prikaz sažetka potrošnje računalnih resursa definiranog korisnika (ako se ne definira
<korisnik>
, prikazuju se podaci za sve korisnike):Code Block $ qacct -o <korisnik>
Prikaz informacija o svim poslovima za definirani projekt:
Code Block $ qacct -j -P <projekt>
Prikaz sažetka potrošnje definiranog projekta (ako se ne definira
<projekt>
, prikazuju se podaci za sve projekte):Code Block $ qacct -P <projekt>
...