Globus GRAM
Izvor: CRO NGI
Sadržaj |
Uvod
Globus GRAM je servis koji omogućava izvođenje poslova na klasteru.
GRAM se sastoji od servisa Gatekeeper koji prihvaća zahtjeve za izvođenje poslova. Kada zahtjev dođe Gatekeeper pokreće perl program jobmanager koji nadzire izvođenje pojedinih poslova. Arhitektura sustava je prikazana na slici dolje.
Adresa Gatekeepera se definira na sljedeći način:
[https://]<host>[:port][/jobmanager-name]
Podarazumijevani port je 2119. Vrijednost "name" odgovoara imenu lokalnog sustava za upravljanje poslovima (npr. sge, pbs).
Opisivanje poslova
Poslove je moguće pokretati izravnim navođenjem naredbi iz komandne linije ili opisivanjem pomoću jezika Resource Specification Language (RSL). Ukoliko se pokreću složeniji poslovi preporuča se korištenje RSL jezika. Detaljan opis jezika moguće je pronaći na adresi [1]. Najbitniji elementi jezika RSL su navedeni u tablici.
| Atribut | Opis |
| executable | ime izvršnog programa |
| stdin | ime datoteke iz koje se uzima standardni ulaz |
| stdout | ime datoteke u koju se sprema standardni izlaz (stdout) |
| stderr | ime datoteke u koju se sprema standardna greška (stderr) |
| arguments | argumenti izvršnog programa |
| jobType | tip posla (opisano u nastavku) |
| count | značenje parametra ovisi o tipu posla |
| queue | naziv reda u koji se podnosi posao |
| project | projekt kojemu posao pripada |
| file_stage_in ("<src>" "<dest>")... | lista datoteka koje se prenose na CE čvor prije početka posla |
| file_stage_in ("<src>" "<dest>")... | lista datoteka koje se prenose sa CE čvora po završetku posla |
Dva su načina izvođenja posla na klasterima: na frontendu i na čvorovima pomoću JMS-a. Za pojedini pristup zaduženi su pripadni servis. Za izvođenje na frontendu koristi se JobManager fork, a za JMS-ove se koristi pripadni naziv: sge, pbs ili condor. Podrazumijevani način izvođenja je na frontendu. Način izvođenja moguće je specificirati u adresi računala: <adresa>/jobmanager-<tip>. Primjeri: grozd.irb.cro-grid.hr/jobmanager-pbs ili grozd.srce.cro-grid.hr/jobmanager-fork. Prilikom izvođenja većih ili paralelnih poslova obavezno koristiti JMS-ove.
Globus GRAM omogućava pokretanje četiri vrste poslova (RSL element jobType):
| Vrsta posla | Opis |
| single | GRAM će pokrenuti posao samo jednom. Ovaj tip posla se u kombinaciji s atributom count koristi za aplikacije koje imaju vlastiti mehanizam pokretanja na više procesora (npr. Gaussian). |
| multiple | Višestruko izvođenje istog serijskog posla. Parametar count određuje broj izvođenja. Podrazumijevana vrsta posla. |
| mpi | Izvođenje MPI poslova. Parametar count određuje broj procesa MPI posla. |
| condor | Izvođenje aplikacija prilagođenih Condor klasteru (isključivo ukoliko CE čvor koristi Condor klaster) |
Upravljanje poslovima
Prije pokretanja poslova moguće je provjeriti da li je korisnik autoriziran za pristup na udaljeni stroj:
globusrun -a -r grozd.irb.cro-grid.hr
Interaktivno izvođenje jednostavne naredbe ostvaruje se sa:
globus-job-run <Gatekeeper_addresa> <naredba>
Izlaz naredbe je standardni izlaz posla. Naredba se navodi s punim putom, u suprotnom će Globus prijaviti grešku (error code 5).
Batch izvođenje jednostavne naredbe ostvaruje se sa:
globus-job-submit <adresa> <naredba>
Izlaz naredbe je ID posla, koji je ujedno i adresa jobmanagera zaduženog za posao i koja se koristi za upravljanje poslom.
Pokretanje i upravljanje poslova opisanih RSL-om ostvaruje se naredbom globusrun.
globusrun <parametri>
Izlaz naredbe je adresa jobmanagera zaduženog za posao. Parametri naredbe su navedeni u tablici.
| Opcija | Opis |
| -r <adresa> | adresa Gatekeepera kojem se šalje posao na izvođenje |
| -f <rslfile> | ime datoteke u kojoj je pohranjen RSL opis posla |
| -b | posao se pokreće u batch obliku (podrazumijevani oblik je interaktivni) |
| -a | naredba će samo obaviti autorizaciju korisnika |
| -status <IDPosla> | dohvat statusa posla |
| -k <IDPosla> | naredba zaustavlja posao |
Pregled ostalih parametara moguće je dobiti naredbom globusrun -help.
Dohvat izlaza iz posla dohvaća se naredbom:
globus-job-get-output <IDPosla>
Status posla se dohvaća naredbom:
globus-job-status <IDPosla>
Posao se zaustavlja naredbom:
globus-job-kill <IDPosla>
Primjeri izvođenja
1. Izvođenje posla na IRB-ovom klasteru iz komandne linije:
globus-job-submit grozd.irb.cro-grid.hr/jobmanager-pbs /home/eimamagi/mojProgram
2. Interaktivno izvođenje posla na IRB-ovom klasteru iz komandne linije:
globus-job-run grozd.irb.cro-grid.hr/jobmanager-pbs /home/eimamagi/mojProgram
3. Izvođenje posla opisanog RSL jezikom:
globusrun -r grozd.irb.cro-grid.hr/jobmanager-pbs -f mojPosao.rsl
4. RSL za jednostavan serijski posao (sve datoteke su na udaljenom računalu)
& (executable="/home/eimamagi/mojProg") (jobType="single") (stdout="/home/eimamagi/mojProg.stdout") (stderr="/home/eimamagi/mojProg.stderr")
4. RSL za jednostavan serijski posao (sve datoteke su na lokalnom računalu pc-emir.srce.hr)
& (executable="gsiftp://pc-emir.srce.hr/home/eimamagi/mojProg") (jobType="single") (stdout="gsiftp://pc-emir.srce.hr/home/eimamagi/mojProg.stdout") (stderr="gsiftp://pc-emir.srce.hr/home/eimamagi/mojProg.stderr")
5. RSL za višestruko izvođenje jednostavnog serijskog posla
& (executable="gsiftp://pc-emir.srce.hr/home/eimamagi/mojProg") (jobType="multiple") (count="4") (stdout="gsiftp://pc-emir.srce.hr/home/eimamagi/mojProg.stdout") (stderr="gsiftp://pc-emir.srce.hr/home/eimamagi/mojProg.stderr")
6. RSL za MPI posao
& (executable="/home/eimamagi/NPB3.2-MPI/intelLAM/lu.S.4") (count="4") (hostCount="2") (jobType="mpi") (stdout="gsiftp://pc-emir.srce.hr/home/eimamagi/globus/mg.W.4.etfos") (stderr="gsiftp://pc-emir.srce.hr/home/eimamagi/globus/mg.W.4.etfos.err")
7. RSL za posao koji se izvodi na više klastera
+ ( &(resourceManagerContact="grozd.gradri.cro-grid.hr/jobmanager-sge") (subjobStartType=loose-barrier) (label="subjob 0") (executable="/home/eimamagi/NPB3.2-MPI/intelLAM/lu.B.4") (count="4") (jobType=mpi) (stdout="gsiftp://pc-emir.srce.hr/home/eimamagi/globus/lu.MPI.gradri") (stderr="gsiftp://pc-emir.srce.hr/home/eimamagi/globus/lu.MPI.gradri.err") ) ( &(resourceManagerContact="grozd.etfos.cro-grid.hr/jobmanager-pbs") (subjobStartType=loose-barrier) (label="subjob 1") (executable="/home/eimamagi/NPB3.2-MPI/intelLAM/lu.B.4") (count="4") (jobType=mpi) (stdout="gsiftp://pc-emir.srce.hr/home/eimamagi/globus/lu.MPI.etfos") (stderr="gsiftp://pc-emir.srce.hr/home/eimamagi/globus/lu.MPI.etfos.err") ) ( &(resourceManagerContact="grozd.fesb.cro-grid.hr/jobmanager-pbs") (subjobStartType=loose-barrier) (label="subjob 2") (executable="/home/eimamagi/NPB3.2-MPI/intelLAM/lu.B.4") (count="4") (jobType=mpi) (stdout="gsiftp://pc-emir.srce.hr/home/eimamagi/globus/lu.MPI.fesb") (stderr="gsiftp://pc-emir.srce.hr/home/eimamagi/globus/lu.MPI.fesb.err") )
8. RSL sa prijenosom datoteka
&
(executable="/bin/cat")
(arguments="test")
(scratch_dir=.)
(directory=$(SCRATCH_DIRECTORY))
(stdout="stage.out")
(stderr="stage.err")
(file_stage_in=("gsiftp://crnjak.srce.hr/home/mpitecaj/gram/test" "test"))
(file_stage_out=
("stage.out" "gsiftp://crnjak.srce.hr/home/mpitecaj/gram/output/stage.out")
("stage.err" "gsiftp://crnjak.srce.hr/home/mpitecaj/gram/output/stage.err")
)
9. RSL za izvođenje Gaussiana
&
(executable="/usr/local/bin/dog03-64")
(arguments="test230.com")
(scratch_dir=.)
(directory=$(SCRATCH_DIRECTORY))
(stdout="gaus.out")
(stderr="gaus.err")
(jobType="single")
(count="8")
(file_stage_in=("gsiftp://cs4.cro-ngi.hr/home/eimamagi/tecaj/gram/test230.com" "test230.com"))
(file_stage_out=
("gaus.out" "gsiftp://cs4.cro-ngi.hr/home/eimamagi/tecaj/gram/output/gaus.out")
("gaus.err" "gsiftp://cs4.cro-ngi.hr/home/eimamagi/tecaj/gram/output/gaus.err")
("test230.log" "gsiftp://cs4.cro-ngi.hr/home/eimamagi/tecaj/gram/test230.log")
)
