Skoči na vsebino

ARC uporaba

ARC - Advanced Resource Connector

Vmesno programsko opremo Nordugrid ARC razvija kolaboracija Nordugrid. Več informacij na http://www.nordugrid.org/

Za pošiljanje nalog prek vmesne programske opreme ARC potrebujete: - digitalno potrdilo SiGNET - odjemalec ARC - članstvo v nacionalni virtualni organizaciji gen.vo.sling.si (včlanite se lahko z veljavnim digitalnim potrdilom na https://voms.sling.si:8443/voms/gen.vo.sling.si

Uporabniški vmesnik: Odjemalec ARC (ARC client)

Na prijavnih vozliščih gruč SLING je tipično uporabniški vmesnik ARC nameščen in konfiguriran.

Za uporabo na lastnih računalnikih priporočamo navodila za vaš operacijski sistem. Navodila vsebujejo tudi napotka za konfiguracijo za uporabo slovenskega nacionalnega strežnika VOMS (ki je na prijavnih vozliščih gruč urejena že sistemsko).

Pred uporabo morate pridobiti in pripraviti osebno digitalno potrdilo po navodilih za overjanje in avtorizacijo.

Preverite, ali je uporabniški vmesnik nameščen:

arcinfo --version

Preverite, ali vaše osebno potrdilo deluje:

arcproxy
arcproxy -I

Preverite, ali je članstvo v nacionalni splošni virtualni organizaciji aktivno:

arcproxy -S gen.vo.sling.si
arcproxy -I

Preverite, ali lahko komunicirate s strežnikom ARC CE na hpc.arnes.si:

arcinfo hpc.arnes.si

Preverite, ali lahko pošljete trivialen posel:

arcsub -c nsc.ijs.si -e '&(executable = /usr/bin/env)(jobname = "justenv")(stdout=test.log)(join=yes)(gridtime=1000)(gmlog=gmlog)(memory=1000)' 

Posiljanje nalog

Primer posla za ARC: text.xrsl

Navodila za opisne datoteke za posle XRSL: http://www.nordugrid.org/documents/xrsl.pdf

  & 
  (executable = /usr/bin/env)
  (jobname = "test")
  (stdout=test.log)
  (join=yes)
  (gmlog=log)
  (memory=1000)
Koraki za testiranje - prvi posel z opisno datoteko: * Prijava s posrednim potrdilom: arcproxy -S gen.vo.sling.si * Oddajte posel z odjemalcem ARC: arcsub -c maister.hpc-rivr.um.si test.xrsl * Kaj se zgodi? * prenos podatkov + gradnja skripte (za SLURM v SBATCH) * zagon posla v SBATCH z lokalnega uporabnika na gruči * periodično spremljanje statusa (klient status v ARC CE preverja z arcstat <jobid>) * shranjevanje podatkov (po izteku naloge se podatki shranijo in čakajo na prevezem z arcget <jobid>

Ne spreglejte: Format datotek ldif omogoča več opisov poslov v isti datoteki, vsak se začne z &, in tako je vse mogoče oddati hkrati.

ARC: upravljanje in spremljanje nalog

  • arcsub za oddajo poslov: arcsub -c maister.hpc-rivr.um.si test.xrsl
  • arcget za prevzem rezultatov: arcget -a ali arcget <jobid>
  • arcinfo za podatke o gruči: arcinfo maister.hpc-rivr.um.si
  • arcstat za podatke o poslih: arcstat -a ali arcstat <jobid>
  • arccat za ogled izpisa poslov: arccat <jobid>
  • arckill za ukinitev posla: arckill <jobid>

ARC: življenjski krog posla

ARC: življenjski krog posla: stanja

Vir: www.nordugrid.org

ARC: informacijski sistem

  • standardizirani podatki o gruči v LDAP
    • posli
    • uporabniki
    • lastnosti gruče
    • nameščena programska oprema
  • Sistemski viri (infoproviders): moduli za različne sisteme vrst, ki zajemajo podatke
  • Podatki so zajeti v začasni bazi podatkov
  • Format podatkov NorduGRID ter standardizirana shema GLUE2
  • Na voljo kot LDIF/LDAP in XML/http

Podpora za programsko opremo: ARC Runtime Environment (RTE)

Izbira okolja za izvajanje: ARC Runtime Environments - RTE

ARC ponuja RTE ko od implementacije neodvisen mehanizem za nastavitev okolja za izvajanje.

  • Podpira skripte, environment module (lmod) in vsebnike.
  • Ponuja standardna, lokalna in uporabniška okolja.

ldapsearch -x -h maister.hpc-rivr.um.si -p 2135 -b ' Mds-Vo-name=local,o=grid' | grep nordugrid-cluster-runtimeenvironment
  • Nastavite (lahko več) v opisni datoteki xrsl: (runtimeenvironment="APPS/BASE/GPU")

ARC in naloge MPI

Priprava opisne datoteke xrsl z opisom zahtev:

&
(count = 4)
(jobname = "test-mpi")
(inputfiles =
 ("hellompi.sh" "")
 ("hellompi.c" "")
)
(outputfiles = ("result-mpi.txt" "") )
(executable = "hellompi.sh")
(stdout = "hellompi.log")
(join = yes)
(walltime = "10 minutes")
(gmlog = log)
(memory = 100)
(runtimeenvironment = "APPS/BASE/OPENMPI-DEFAULT")

Definicija posla vsebuje navedbe vhodnih in izhodnih datotek, dnevniške datoteke ter skripte, s katero naj se posel zažene (hellompi.sh). Tako lokalna implementacija LRMS, v SLING tipično s SLURM SBASH skript, skopira vse datoteke v delovni imenik posla ter zažene skripto.

Nastavitev (runtimeenvironment = "APPS/BASE/OPENMPI-DEFAULT") (pravilno vrednost preverite za vsako gručo) sproži nastavitve za izbiro strojne opreme, primerne za MPI (nizkolatenčne povezave InfiniBand) ter nastavitve za privzeto knjižnico MPI. Okolje mora biti pripravljeno tako, da lahko posel zaženemo na standardni način (ker ne vemo, ali je na voljo srun ali kaj drugega).

Skripta prevede program v C in ga zažene z mpirun:

#!/bin/bash
echo "Compiling example"
mpicc -o hello hellompi.c
echo "Done."
echo "Running example:"
mpirun --mca btl openib,self -np 4 \${PWD}/hello > result-mpi.txt
echo "Done."

Manjkajoče gradivo

  • Odpravljanje napak
  • multicore/multithread
  • best practice
  • xrsl example

Arcrunner

Arcrunner je orodje za lažje upravljanje in pošiljanje arc poslov.

Orodje dobimo iz git repozitorija: Gitlab repo http://source.ijs.si/mpetkovic/arcrunnerhacks/

  • arcrunner -R seznam gruč, ločenih z vejicami
  • arcrunner -X povemo ime *.xrsl datoteke
  • arcrunner -P datoteka z geslom za certifikat (arcproxy -S gen.vo.sling.si)
  • arcrunner -h dodatna pomoč

V repozitoriju imamo tudi dodatne python programe:

  • clusterJobTest.py
  • runLocally.py
  • arc_manipulator.py

clusterJobTest.py: Uporaben za testiranje, če skripte in xrsl datoteke pravilno delujejo, predenj se jih pošlje na gručo.

runLocally.py: Posle zažene na lokalnem računalniku, namesto na gruči.

arc_manipulator.py:

Arcrunner dobre prakse

  • Arcrunner dodamo v PATH z ukazom: export PATH="$PATH:/home/$USER/arcrunnerhacks"
  • Naredimo alias alias ar="arcrunner -R ~/.arcrunner/clusters -P ~/.arcrunner/pass -X" in nato kličemo kot: ar imeDat.xrsl.
  • Zgornji skripti shranimo v ~/.bashrc, da se zaženeta vsakič, ko zaženemo bash lupino.

ARC: viri, povezave in gradiva