Ime strani: nsc / Uporaba gruče IJS

Uporaba gruče IJS

Gruča IJS je dostopna za uporabnike virtualne organizacije nsc.ijs.si preko strežnika nsc.ijs.si z vmesnikom ARC. Trenutno za dostop ni omejitev, v primeru prevelike zasedenosti pa upabljamo prioritete in sistem "fair share" (uporabniki skupin, ki močno uporabljajo gručo, dobijo nižjo prioritet). Za dostop morate pridobiti pridobiti osebno elektronsko potrdilo in se prijaviti v virtualno organizacijo. Uporabniki gen.vo.sling.si imajo prav tako dostop (odprti nacionalni dostop), a z nižjo prioriteto.

Za interaktivni dostop morate pridobiti še uporabniško ime SLING (zaprosite na support@sling.si) in se registrirati na http://fido.sling.si/. Interaktivni dostop poleg vmesne programske opreme ARC omogoča tudi uporabo sistema SLURM. Navodila za uporabo so na voljo tudi na spletnih straneh za dokumentacijo SLING.

Primer testne naloge

Najprej zagotovite, da imate posredno potrdilo (proxy certificate):

   1 arcproxy -S nsc.ijs.si \
   2   || echo "arcproxy failed; register and try again." && exit
   3 echo ''

Vsaka naloga mora imeti opisno datoteko:

   1 echo 'Preparing for a test job'
   2 cat > test1.xrsl << FNORD
   3 &
   4 (executable = /usr/bin/env)
   5 (jobname = "test1")
   6 (stdout=test.log)
   7 (join=yes)
   8 (gridtime=1000)
   9 (gmlog=gmlog)
  10 (memory=2000)
  11 FNORD

V tem primeru namesto zagonske skriptne datoteke uporabljamo sistemski ukaz /usr/bin/env, ki izpiše okoljske spremenljivke v sistemu.

  • Znak & označuje, da mora arcsub pri izvršitvi naloge uporabiti vse elemente datoteke xrsl.

  • executable je ukaz, ki ga bomo izvršili na gruči,
  • jobname označuje ime naloge,
  • join=yes bo združil izpis STDERR in STDOUT v STDOUT,
  • stdout označuje, kakšno bo ime izhodnega dokumenta,
  • gmlog označuje, kam bodo shranjene dnevniške datoteke upravljavca gruče (če kaj ne deluje, je datoteka koristna za odkrivanje napak)
  • memory=2000 označuje, da za nalogo potrebujemo 2GB pomnilnika. Vrednost vedno označujemo v MB in na 1 jedro

Oddajanje nalog

Nalogo lahko pošljete s preprostim ukazom:

# Submitting your test job:
arcsub -c nsc.ijs.si  test1.xrsl

Če naletite na težave, lahko vklopite veliko dodatne diagnostike:

   1 # this is for looking at problems:
   2 arcsub -c nsc.ijs.si test1.xrsl -d DEBUG

Potem lahko preverite status svojih nalog:

   1 echo 'This is how we test for job status - bit it takes 5 minutes for the infosystem to catch up: arcstat -a'
   2 arcstat -a

Status nalog bo viden tudi tu: Spletni monitor nalog v slovenskem omrežju SLING

Z ukazom arcls lahko vidite seznam datotek v direktorijih, kjer dela naloga.

Z ukazom arcget lahko vidite izpis standarniz izhodnih kanalov (STDERR, STDOUT) naloge.

Prevzemanje nalog

Ko je naloga končana, jo lahko prevzamte z ukazom arcget - argument je lahko ID naloge ali ime naloge; s paremetrom -a lahko prevzamete vse končane naloge :

  • arcget gsiftp://nsc.ijs.si/jobs/<long-hash>

  • arcget test1

  • arcget -a

Prevzamete lahko končane naloge, ne glede na to, ali so končale uspešno ali ne. Po koncu naloge se bodo ohranile samo datoteke, ki so bile navedene kot izodne datoteke.

Naloga z zagonsko skripto

Najprej pripravimo opis naloge hellogrid.xrsl

&
(jobName="HelloGrid")
(executable="run.sh")
(inputfiles=
  ("run.sh" "") 
)
(stdout="out.txt")
(stderr="err.txt")
(gmlog="gmlog")

Zagonska skripta za nalogo run.sh mora biti v direktoriju, iz katerega boste nalogo poslali. Ce bi želeli uporabiti datoteko, dostopno kje drugje, je za to namenjen drugi argument v strukturi:

(inputfiles=
  ("run.sh" "http://pot.do.datoteke/run.sh")
)

Če tega ne potrebujete, lahko vhodno datoteko, ki je navedena tudi kot executable, pri inputfiles izpustite.

Uredimo še run.sh:

   1 #!/bin/sh
   2 echo "Hello, grid"

Nalogo pošljemo v izvajanje:

arcsub -c nsc.ijs.si  hellogrid.xrsl

Naloga v skriptnem jeziku

Primer naloge v Pythonu - opis naloge bo v datoteki vsota.xrsl:

&
(jobName="vsota")
(executable="vsota.sh")
(inputfiles=
  ("vsota.py" "vsota.py")
)
(outputfiles=("/"  " ")
)
(stdout="out.txt")
(stderr="err.txt")
(gmlog="gmlog")

Skripte vsota.sh nismo navedli med vhodnimi datotekami. Kot izodno datoteko smo navedli kar "/" - vse datoteke bodo ohranjene.

Program vsota.py:

   1 sum = 0
   2 print "Izpisi stevilke: "
   3 for x in ["1", "1050","164999"]: print x
   4 print "Sestej stevilke "
   5 for y in [1,1050,164999]: sum=sum+y
   6 print sum

Zagonska skripta vsota.sh:

   1 #!/bin/sh
   2 python vsota.py

Primer naloge v C:

primer.c in primer.sh se morata nahajati v direktoriju, iz katerega boste nalogo poslali.

Najprej pripravimo opis naloge prime-number.xrsl:

& 
(jobname="NalogaC")
(executable="prime-number.sh")
(inputfiles=
  ("prime-number.c" "")
)
(stdout="prime-number.txt")
(stderr="prime-number.err")
(gmlog="gmlog")

Nato še program prime-number.c

   1 #include<stdio.h>
   2  
   3 int main()
   4 {
   5    int n = 1000, i = 3, count, c;
   6  
   7    if ( n >= 1 )
   8    {
   9       printf("First %d prime numbers are :\n",n);
  10       printf("2\n");
  11    }
  12  
  13    for ( count = 2 ; count <= n ;  )
  14    {
  15       for ( c = 2 ; c <= i - 1 ; c++ )
  16       {
  17          if ( i%c == 0 )
  18             break;
  19       }
  20       if ( c == i )
  21       {
  22          printf("%d\n",i);
  23          count++;
  24       }
  25       i++;
  26    }
  27  
  28    return 0;
  29 }

In zagonska skripto prime-number.sh:

   1 #!/bin/sh
   2 date 
   3 gcc prime-number.c -o primenumber
   4 ./primenumber
   5 date

Priporočljivi viri:


{i} Navodila so pripravljena na osnovi dela Barbare Krašovec v okviru delavnic SLING.

Za obveščanje o delu gruče se prijavite na nsc-users@ijs.si

Za pomoč, podporo, navodila in napake v dokumentaciji se obrnite na nsc-info@ijs.si