Gradnja lastne programske opreme na sistemu Vega
Ta dokument opisuje priporočene načine za pripravo lastne programske opreme na sistemu Vega. Namenjen je uporabnikom, ki želijo uporabljati različice programov, ki niso na voljo med sistemskimi moduli ali predpripravljhenimi vsebniki, ali želijo pripraviti lastna programska okolja.
Pregled možnosti
Na HPC Vega lahko programsko opremo pripravite na naslednje načine:
- gradnja iz izvorne kode - priporočljivo za posamezne aplikacije ali knjižnice.
- lastni moduli (Lmod) - za enostavmno uporabo več različic programske opreme
- Apptainer vsebniki - za prenosljiva in reproducibilna programska okolja.
Izbira je odvisna od vašega primera upoabe. Spodnja tabela podaja napotek pri izbiri načina gradnje:
| scenarij | priporočena rešitev |
|---|---|
| ena aplikacija | gradnja iz izvorne kode |
| več različic iste programske opreme | lastni modul |
| kompleksno programsko okolje z veliko odvisnostmi | vsebnik Apptainer |
Vsi načini so univerzalni in lahko podprejo različna programska okolja.
Gradnja iz izvorne kode
Gradnja programske opreme iz izvovne kode je najhitrejši način zagotavljanja lastnega programskega okolja. Način gradnje je odvisen od posameznega programskega paketa in verzije. Opisan je v navodilih za gradnjo vsakega programskega paketa.
Orodja, ki se uporabijo pri gradnji programskega pakega vključite z uporabo modulov. Primer:
module purge
module load GCC
module load CMake
Priporočljivo je, da programsko opremo nameščate v svoj domači imenik, tako je dostopna na vseh računskih vozliščih.
| območje | pot | opis |
|---|---|---|
| home | /ceph/hpc/home/$USER | Domači direktorij za uporabnike na datotečnem sistemu v skupni rabi, vpetem na računskih in prijavnih vozliščih |
Na svojem domačem direktoriju si ustvarite imenik za izvorno kodo programa.
Primer:
mkdir -p $HOME/software/myprogram/src
cd $HOME/software/myprogram/src
Nato sledite postopku gradnje programa iz izvorne kote. Najprej prenesete izvorno kodo v imenik, ki ste ga ustvarili (pri tem uporabite git, wget,...). Primer:
git clone ...
Nato konfigurirate gradnjo. Pri tem je potrebno nastaviti direktorij, kamor se naj namesti zgrajen program (znotraj vašega home direktorija). Pri tem si pomagate z dokumentacijo za gradnjo posameznega programa. Dokumentacijo programa najdete na wiki straneh ali na github-u posameznega programa. Pred gradnjo programa je potrebno omogočiti module, ki so za gradnjo potrebni: več o prevajalnikih in razvojnih okoljih. Primer:
mkdir -p $HOME/software/myprogram/bin
cmake \ -DCMAKE_INSTALL_PREFIX=$HOME/software/myprogram/bin \ ..
ali
./configure --prefix=$HOME/software/myprogram/bin
Nato prevedite program in ga namestite na nastavljeno mesto. Primer:
make
make install
Po končani namestitvi lahko program uporabljate neposredno ali pripravite lasten modul. Neposredno lahko program zaženete z uporabo slurm.
Priprava lastnega modula
Lastni moduli omogočajo preprosto uporabo pripravljene programske opreme z ukazom module load. Rešitev je primerna predvsem za primere, ko potrebujemo več verzij iste programske opreme ali ko moramo preklapljati med različno programsko opremo.
Za module si na home direktoriju ustvarimo direktorij s spodaj opisano direktorijsko strukturo. Na prvem nivoju naj bodo direktoriji z nazivom programa, na drugem pa datoteke (modulefile) poimenovane z verzijo te programske opreme.
Priporočena direktorijska struktura:
$HOME
└── modules
└── package
└── 1.0
V datoteki modulefile definiramo poti in vzpostavimo okolje.
touch 1.0
Primer podaja okvirno strukturo, ki se mora prilagoditi glede na posamezni program po navodilih za namestitev in uporabo programa. V modulefile ukaz prepend-path doda pot na začetek obstoječe okoljske spremenljivke (environment variable). Vsebina datoteke:
#%Module1.0
proc ModulesHelp { } {
puts stderr "myprogram 1.0"
}
module-whatis "myprogram 1.0"
set root $::env(HOME)/software/myprogram
prepend-path PATH $root/bin
prepend-path LD_LIBRARY_PATH $root/lib
prepend-path MANPATH $root/share/man
prepend-path PKG_CONFIG_PATH $root/lib/pkgconfig
Ko ustvarimo modulefile, je potrebno včitati imenik z moduli: module use $HOME/modules in nato lahko naložimo modul: module load myprogram/1.0.
Po nalaganju modula bodo izvršljive datoteke iz imenika $HOME/software/myprogram/bin samodejno dostopne v ukazni vrstici. Tako lahko program zaženete z uporabo slurm.
Priprava lastnih Apptainer vsebnikov
Vsebnik lahko pripravite:
- na svojem računalniku,
- na drugi Linux napravi,
- z uporabo oddaljenega build servisa.
Apptainer vsebnik lahko pripravimo iz predpripravljenega vsebnika (npr. Docker) ali iz lokalne datoteke - definicije vsebnika. Več o gradnji in primer definicije lastnega vsebnika najdete na povezavi.
Prenesite .sif datoteko na Vego in jo uporabljajte neposredno. Shranimo jih v svoj home direktorij.