Vsebniki za procesorska jedra
Pri uporabi vsebnikov, ki za računanje izkoriščajo samo procesorska jedra, ne bi smeli imeti nobenih težav. Pripravljeno sliko vsebnika prenesemo na superračunalnik in jo na ustrezen način zaženemo.
Pripravimo vsebnik mb-cpu.sif
Najprej bomo na osebnem računalniku naredili nov vsebnik, ki bo vključeval programa mandelbrot-seq.py
in mandelbrot-par.py
. Prvi izkorišča samo eno procesorsko jedro, drugi pa vsa razpoložljiva jedra. Izhajali bomo iz vsebnika python-scilib.sif
, ki smo ga pripravili v prejšnjem razdelku.
V mapo /exec
v vsebniku skopirajmo oba programa in osnovno konfiguracijsko datoteko default.conf
. Mapo /exec
vključimo v spremenljivko PATH
, v kateri so navedene mape, kjer operacijski sistem išče izvršljive datoteke. Vsem uporabnikom nastavimo še pravice za zaganjanje oziroma branje datotek. Vsebnik opremimo z navodili za uporabo.
mb-cpu.def
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
|
Vsebnik zaženimo na računskem vozlišču
Superračunalniki z odprtim dostopom pod okriljem SLING za lokalno upravljanje z viri uporabljajo vmesno programsko opremo Slurm.
Vsebnik zaženimo z ukazom srun
. Zagnali bomo en posel, ki se bo izvajal na enem procesorskem jedru.
$ srun --ntasks=1 apptainer exec mb-cpu.sif mandelbrot-seq.py
SEQ: size: (3840, 2160) iterations: 256 time: 5.257 s
srun --ntasks=1 apptainer exec mb-cpu.sif mandelbrot-seq.py
Uporabimo več jeder
Zdaj izkoristimo več jeder. Zaženimo program mandelbrot-par.py
, ki se od osnovnega razlikuje samo v vrstici 23, kjer prevajalniku z zahtevo parallel = True
dovolimo paralelizacijo funkcije mandelbrot_colors
.
Koda programa mandelbrot-par.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
|
Še enkrat zaženimo vsebnik, tokrat za posel zahtevamo 16 procesorsksih jedr.
$ srun --ntasks=1 --cpus-per-task=16 apptainer exec mb-cpu.sif mandelbrot-par.py
PAR: size: (3840, 2160) iterations: 256 time: 2.27 s
srun --ntasks=1 --cpus-per-task=16 apptainer exec mb-cpu.sif mandelbrot-par.py
Z majhno spremembo v programu smo izvajanje izdatno pohitrili.
Preveri svoje znanje
Vaja
Za pripravo recepta in gradnjo vsebnika sledimo navodilom: Vaja 05.