Page tree
Skip to end of metadata
Go to start of metadata
Sadržaj

Uvod


Condor-G je dio sustava Condor koji omogućava izvođenje pomoću GRAM2 ili GRAM4 servisa te sprema informacije o pokrenutim poslovima u red poslova (analogno klasterskom JMS-u). Dodatne informacije o Condor-G možete pronaći na adresi [1].

BITNO! Za rad s sustavom Condor potrebno je imati aktivan zastupnički certifikat pohranjen na podrazumijevanoj lokaciji (/tmp/x509_u<user_id>). Zastupnički certifikat će biti spremljen na podrazumijevanoj lokaciji ako se koristi myproxy-logon ili grid-proxy-init.

Trenutačna verzija sustava Condor-G omogućava izvođenje poslova pomoću GRAM2 servisa.

Opisivanje poslova


Poslovi se opisuju pomoću Condor ClassAds jezika (http://research.cs.wisc.edu/htcondor/manual/v7.8/condor_submit.html).

Osnovni parametri Condor ClassAd jezika su:

AtributOpis
executableime izvršnog programa
inputime datoteke iz koje se uzima standardni ulaz
outputime datoteke u koju se sprema standardni izlaz (stdout)
errorime datoteke u koju se sprema standardna greška (stderr)
argumentsargumenti izvršnog programa
universetip posla. Tipovi su opisani u nastavku.
logime datoteke u koju se spremaju informacije o tijeku izvođenja posla (npr. kada je posao podnesen, gdje je izveden, kada je zaustavljen)
grid_resource
parametar za definiranje adrese grid servisa. Parametar se sastoji od kombinacije parametara:
  • grid_type: tip grid posredničkog sustava. Tipovi su opisani u nastavku.
  • globusscheduler: adresa GRAM servisa kojemu se posao šalje na izvođenje. U slučaju servisa GRAM koristi se identičan zapis kao i kod Globusovih naredbi (<adresa>/jobmanager-<JMS>).

U slučaju korištenja servisa GRAM formatu je sljedeći:

gt2 globusscheduler
x509userproxylokacija zastupničkog korisničkog certifikata. Parametar je nužno navesti ako se zastupnički certifikat ne nalazi na podrazumijevanom mjestu - /tmp/x509_u<user_id>.
globusrslparametar omogućava definiranje osobina posla pomoću Globusovog jezika za opis poslova RSL; opcija iznimno korisna za definiranje GRAM tipa posla (npr. mpi). Parametar se koristi prilikom podnošenja poslova pomoću servisa GRAM.
transfer_executableparametar definira da li je potrebno prenositi izvršnu datoteku na CE čvor.
should_transfer_files = yes|noparametar definira da li je potrebno prenositi dodatne datoteke na CE čvor. Parametar je nužno navesti ukoliko se želi ostvariti prijenos dodatnih datoteka.
WhenToTransferOutput = ON_EXITparametar definira u kojem trenu se izvodi prenošenje izlaznih datoteka sa CE čvora na UI čvor. Parametar je nužno navesti ukoliko se želi ostvariti prijenos dodatnih datoteka.
transfer_input_files = <file>[, <file>]...lista datoteka koje se prenose na CE čvor prije početka posla
transfer_output_files = <file>[, <file>]...lista datoteka koje se prenose sa CE čvora na UI čvor po završetku posla
queue [count]nužan parametar koji definira koliko puta se posao pokreće; ukoliko se ništa ne navede podrazumijeva se 1

U okviru Condor sustava postoji više tipova posla koji se definiraju parametrom universe. Kada se koristi za podnošenje poslova na grid koristi se samo jedan tip: grid. Tip grid posredničkog sustava definira se u okviru parametra grid_resource. Moguće vrijednosti grid_type parametra su: gt2, gt3, gt4, condor, unicore i nordugrid. Na CRO NGI-ju je moguće koristiti isključivo gt2 i gt4. Tip gt3 se odnosi na zastarjeli GRAM3 protokol. Tip condor se odnosi na pokretanje poslova na udaljenim Condor klasterima i još uvijek je u fazi razvoja. Tip unicore je još uvijek u fazi testiranja.

Napomena: ukoliko se izvršni program shell skripta nužno je na početku skripte navesti liniju:

#!/bin/<ime_shella>

U suprotnom će Condor-G prilikom izvođenja prijaviti pogrešku.

Prijenos datoteka

Ukoliko je potrebno obaviti prijenos datoteka na udaljeno sjedište prije završetka posla i datoteka sa udaljenog sjedišta po završetku, koriste se sljedeći parametri:

should_transfer_files = yes
WhenToTransferOutput = ON_EXIT
transfer_input_files = <file>[, <file>]...
transfer_output_files = <file>[, <file>]...

Datoteke u listi transfer_input_files mogu biti definirane relativnim (npr. mojFile, mojDir/mojFile) ili apsolutnim putanjama (/home/ja/mojiFileovi/mojFile). Na udaljenom sjedištu sve navedene datoteke biti smještene u radnom direktoriju posla. Posao bi onda trebao sve ulazne datoteke uzimati iz radnog direktorija.

Datoteke u list transfer_output_files se preporuča definirati isključivo relativnim putanjama. Posao bi trebao spremati sve izlazne datoteke u radni direktorij.

BITNO! Condor ne dozvoljava definiranje iste datoteke u listi transfer_input_files i transfer_output_files. Ukoliko se posao s istom datotekom Condor će prije prijenosa na udaljeno sjedište datoteku izbrisati. U slučaju da imate potrebu prebacivanja istih datoteka koriste se sljedeći parametri:

transfer_input_files = in.dat,same.dat
transfer_output_files = out.dat,same.dat
transfer_output_remaps = "same.dat=same.dat.out"

Po završetku izvođenja posla izlazna datoteka same.dat će biti spremljena u same.dat.out, a ulazna će biti sačuvana u datoteci same.dat.

Raspoređivanje paralelnih procesa na jedan čvor

Neke paralelne aplikacije za izvođenje zahtijevaju sve procesore na istom čvoru. Globus na CRO NGI čvorovima je prilagođen da omogući podnošenje takvog zahtjeva. U Condor-G opisu posla potrebno je postaviti:

environment = "PE_MODE=single"

Sjedišta koja podržavaju isključivo izvođenje paralelnih poslova

U slučaju podnošenja serijskih poslova obavezno postaviti sljedeći uvjet:

Requirements = TARGET.ParallelOnly =?= 0

Na taj način će se izbjeći raspoređivanje poslova na sjedišta koja podržavaju isključivo izvođenje paralelnih poslova.

U slučaju podnošenja paralelnih poslova preporuča se dati veći prioritet sjedištima koja podržavaju isključivo izvođenje paralelnih poslova:

Rank = TARGET.ParallelOnly =?= 1

Korištenje grafičkih procesora

Sjedište Srce sadrži 36 grafičkih procesora (GPU) nVidia Tesla M2075. Na čvorovima je instalirana programska podrška za korištenje GPU-ova nVidia CUDA i OpenCL. Na čvorovima s GPU-ovima je dopušteno pokretati isključivo programe prevedene s knjižnicama nVidia CUDA i OpenCL.

Dostupne su sljedeće verzije knjižnica CUDA:

  • 5.5
  • 7.0
  • 8.0

Postavljanje varijabli okoline ostvaruje se pomoću alata module:

module load <ime_okoline>

Vrijednost parametra <ime_okoline> za pojedine verzije knjižnice CUDA je sljedeća:

  • 5.5 : cuda-5-0
  • 7.0 : cuda-7-0
  • 8.0 : cuda-8-0

BITNO: Varijable okoline se moraju eksplicitno postaviti u skripti za pokretanje aplikacije (vidi primjer dolje).

Za korištenje GPU-ova potrebno je u opisu posla navesti:

grid_resource = gt2 ce.srce.cro-ngi.hr/jobmanager-sge
environment = SGE_PE=gpu

U skripti za pokretanje posla potrebno je dodati sljedeće linije prije izvršnog programa:

FREEGPU="`cat $TMPDIR/gpumachine`"
export CUDA_VISIBLE_DEVICES=$FREEGPU

Primjer skripte za pokretanje aplikacije Amber 12:

#!/bin/sh
module load cuda-5-5
FREEGPU="`cat $TMPDIR/gpumachine`"
export CUDA_VISIBLE_DEVICES=$FREEGPU
export AMBERHOME=/usr/local/amber12
$AMBERHOME/exe/pmemd.cuda -O -i nvt.in -o e2_langthrm.out -p AcDIM.parm7 -c md5cw.rst7 -r e2_langthrm.rst7 -x e2_langthrm.crd -inf e2_langthrm.inf

Dodatni zahtjevi na sjedištu Srce

S obzirom da se sjedište Srce sastoji od više različitih arhitektura omogućeno je dodatno opisivanje poslova. Dodatni zahtjevi navode se u opisu posla pomoću atributa *globusrsl*, npr:

globusrsl = (jobType=single)(count=3)(memory=8)(vendor=Sun)(scratch=100)

Opis dodatnih zahtjeva naveden je u tablici dolje.


AtributOpisPodrazumjevana vrijednost
vendorNaziv proizvođača računalnog čvora. Moguće vrijednosti su:
  • Sun - Sun Fire x4600
  • HP - HP ProLiant SL250s
  • IBM - IBM NeXtScale nx360 M5 (napomena: na ovim čvorovima je moguće izvoditi isključivo paralelne poslove)
Sustav će pokrenuti posao na bilo kojem dostupnom čvoru.
memoryKoličina memorije u izražena u GB koju posao treba za izvođenje jednog procesa. Primjerice, ukoliko cijeli posao zahtjeva 20 jezgri i 40 GB RAM-a potrebno je navesti memory=2.1
scratchKoličina diska na lokalnom scratchu izražena u GB koju posao treba za izvođenje jednog procesa. Primjerice, ukoliko cijeli posao zahtjeva 20 jezgri i 200 GB diska potrebno je navesti scratch=10.1


Primjer:

  • Pokretanje Gaussiana na jednom IBM čvoru, pri čemu je za izvođenje potrebno 16 jezgri, 64 GB radne memorije i 256 GB diska :
Executable=/usr/local/bin/dog03-64
Arguments=test230.com
TransferExecutable=False
should_transfer_files=yes
WhenToTransferOutput=ON_EXIT
transfer_input_files=test230.com
transfer_output_files=test230.log
Log=condorG.log
Output=output/stage.gt2.out
Error=output/stage.gt2.err
universe=grid
globusrsl = (jobType=single)(count=16)(memory=4)(vendor=IBM)(scratch=16)
grid_resource = gt2 ce.irb.cro-ngi.hr/jobmanager-sge
queue

Napredna polja poslova

Prilikom uporabe parametra queue moguće je koristiti 3 operatora za odabir indeksa.


IndeksPrimjerOpis
in

queue MyTask in 1 2 3 4

Pokreće 4 posla, a varijabla $(MyTask) u poslu ima vrijednosti od 1 do 4.
from

queue MyTask1 MyTask2 MyTask3 from 1 2 3

Pokreće 1 posao, a varijable $(MyTask1), $(MyTask2) i $(MyTask3) u poslovima imaju vrijednosti 1, 2 i 3. Indeks from vrijednosti varijable može čitati i iz datoteke u kojoj su vrijednosti varijable odbojene razmakom ili zarezom. Ukoliko ulazna datoteka ima više redova, svaki red će pokrenuti po jedan posao.
matching

queue MyTask matching test.*

Pokreće onoliko poslova koliko ima datoteka test.* u direktoriju iz kojeg se posao pokreće, a varijabla $(MyTask) u poslu ima vrijednost imena pronađene datoteke.


Uporabu indeksa from prikazat ćemo i na primjeru posla gaus.jdl. Optimizaciju posla gaus.jdl moguće je izvršiti pomoću korisničkih varijabli iz datoteke gaus-custom.jdl ili pomoću naprednog polja poslova gaus-job-array.jdl. Ukoliko optimizaciju posla izvršavamo pomoću naprednog polja poslova, željene parametre navodimo u tekstualnoj datoteci gaus_run, a navođenjem više linija pokreće se više poslova jednom naredbom.

Osvježavanje zastupničkih certifikata


Prilikom izvođenja dugotrajnih poslova ili podnošenja velike količine poslova potrebno je osigurati osvježavanje zastupničkog certifikata. Condor-G obavlja osvježavanje zastupničkih certifikata delegiranih servisu GRAM na CE čvoru. Međutim korisnik je dužan Condor-Gu osigurati valjani certifikat. Korisnicima se stoga preporuča korištenje komponente za automatsko osvježavanje zastupničkih certifikata.

Upravljanje poslovima


Tri su osnovne naredbe za upravljanje poslovima:

condor_submit <JobFile>
condor_q [JobID]
   -globus:
   -long: detaljan opis svih poslova u redu (preporuča se dohvaćati za samo jedan posao)
condor_rm JobId

Condor-G prilikom rada stvara iscrpne dnevnike. Osnovni dnevnik je onaj koji korisnik definira u opisu posla (parametar log). Za same grid poslove Condor stvara dnevnik u datoteci /opt/condor/local.<hostname>/log/GridmanagerLog.<username>. U ovom dnevniku je moguće pratiti detaljno izvođenje grid posla. Posljednja skupina dnevnika su dnevnici samih Condorovih servisa u direktoriju /opt/condor/local.<hostname>/log.

Dohvat datoteka u radnom direktoriju posla


Za korisnike CRO NGI-ja su pripremljene dvije skripte za rad s podacima u radnom direktoriju aktivnog Condor-G posla na udaljenom sjedištu (gram_scratch_*). Pomoću njih je moguće dohvatiti međurezultate poslova (npr. Gaussian log) dok su još aktivni. Obje skripte su dostupne na UI čvoru.

Skripta remote-scratch-ls omogućava prikaz dostupnih datoteka u radnom direktoriju posla:

remote-scratch-ls ID_POSLA

Ako posao koristi poddirektorije moguće je izlistati sadržaj pojedinih poddirektorija s naredbom:

remote-scratch-ls ID_POSLA IME_PODDIREKTORIJA

Skripta remote-scratch-get dohvaća sve datoteke iz radnog direktorija posla na pristupno računalo:

remote-scratch-get ID_POSLA

Pri tome će sve datoteke biti spremljene u poddirektorij ./ID_POSLA. Ako posao koristi poddirektorije, skripta će dohvatiti sve datoteke rekurzivno. Moguće je i dohvatiti pojedinačne datoteke ili direktorije naredbom:

remote-scratch-get ID_POSLA PUTANJA

Skripta također omogućava dohvat standardnog izlaza od posla:

remote-scratch-get ID_POSLA stdout

i standardne greške:

remote-scratch-get ID_POSLA stderr

Dodatne informacije o skriptama možete dobiti navođenjem parametra -h ili --help.

Ukoliko se posao izvodi na sjedištu UNIZG-Srce moguće je pristupiti radnom direktoriju pojedinog posla izravno s pristupnog čvora. Putanja do radnog direktorija dobija se naredbom:

remote-scratch-pwd ID_POSLA

Primjeri izvođenja


1. Primjer skripte za izvođenje serijskog posla pomoću GRAM (sve datoteke su na lokalnom računalu)

executable=mojProgram
universe=grid
log=condorG.log
output=mojProgram.out
error=mojProgram.err
grid_resource=gt2 ce.irb.cro-ngi.hr/jobmanager-sge
queue

2. Primjer skripte za izvođenje serijskog posla pomoću GRAM (izvršna datoteka je na udaljenom računalu)

executable=mojProgram
transfer_executable=false
universe=grid
log=condorG.log
output=mojProgram.out
error=mojProgram.err
grid_resource=gt2 ce.irb.cro-ngi.hr/jobmanager-sge
queue

3. Primjer skripte za izvođenje 20 serijskih poslova pomoću GRAM (izvršna datoteka je na udaljenom računalu, izlaz i greška će imati nastavke _i)

executable=mojProgram
transfer_executable=false
universe=grid
log=condorG.log
output=mojProgram.out_$(Process)
error=mojProgram.err_$(Process)
grid_resource=gt2 ce.irb.cro-ngi.hr/jobmanager-sge
queue 20

4. Primjer skripte za izvođenje MPI posla pomoću GRAM

executable=mojMPIProgram
universe=grid
log=condorG.log
output=mojMPIProgram.out
error=mojMPIProgram.err
grid_resource=gt2 ce.irb.cro-ngi.hr/jobmanager-sge
globusrsl=(jobType=mpi)(count=4)
queue

5. Primjer izvođenja programa Gaussian:

Executable=/usr/local/bin/dog03-64
Arguments=test230.com
TransferExecutable=False
should_transfer_files=yes
WhenToTransferOutput=ON_EXIT
transfer_input_files=test230.com
transfer_output_files=test230.log
Log=condorG.log
Output=output/stage.gt2.out
Error=output/stage.gt2.err
universe=grid
globusrsl = (jobType=single)(count=4)
grid_resource = gt2 ce.irb.cro-ngi.hr/jobmanager-sge
queue
  • No labels