Moduli in vsebniki
Navadni uporabniki (torej ne-skrbniki) ne morejo nameščati programov na sistem. Za namestitev se morajo dogovoriti s skrbnikom gruče. Vso potrebno programsko opremo lahko sicer zmeraj prevedemo sami1 in namestimo v svoj domači imenik, a je to precej zamudno in nadležno opravilo. V tem razdelku si ogledamo dva pristopa za lažje nalaganje raznovrstnih programskih paketov, ki ju pogosto uporabljamo v superračunalništvu.
Okoljski moduli
Prvi pristop so okoljski moduli (angl. environment modules), ki vključujejo izbrano uporabniško programsko opremo. Module običajno pripravi in namesti skrbnik, ki jih tudi vključi v katalog modulov. Uporabnik lahko nato z ukazoma module load
oziroma module unload
vklopi oziroma izklopi module. Različni moduli lahko vsebujejo tudi različice istega programa, denimo z in brez podpore za grafične pospeševalnike. Seznam vseh modulov dobimo z ukazoma module avail
in module spider
.
$ module spider
--------------------------------------------------------------------------
The following is a list of the modules and extensions currently available:
--------------------------------------------------------------------------
Anaconda3: Anaconda3/5.3.0
Built to complement the rich, open source Python community, the Anaconda platform provides an
enterprise-ready data analytics platform that empowers companies to adopt a modern open data
science analytics architecture.
Autoconf: Autoconf/2.69-GCCcore-7.3.0, ...
Autoconf is an extensible package of M4 macros that produce shell scripts to automatically
configure software source code packages. These scripts can adapt the packages to many kinds of
UNIX-like systems without manual user intervention. Autoconf creates a configuration script for
a package from a template file that lists the operating system features that the package can
use, in the form of M4 macro calls.
...
module spider
Na delavnici bomo potrebovali modul FFmpeg. Ta je na gruči NSC že nameščen, moramo ga le naložiti:
$ module load FFmpeg
module load FFmpeg
Z ukazom module list
pogledamo, katere module smo naložili.
$ module list
Currently Loaded Modules:
1) GCCcore/11.2.0 8) x265/3.5-GCCcore-11.2.0 15) xorg-macros/1.19.3-GCCcore-11.2.0
2) NASM/2.15.05-GCCcore-11.2.0 9) expat/2.4.1-GCCcore-11.2.0 16) libpciaccess/0.16-GCCcore-11.2.0
3) zlib/1.2.11-GCCcore-11.2.0 10) libpng/1.6.37-GCCcore-11.2.0 17) X11/20210802-GCCcore-11.2.0
4) bzip2/1.0.8-GCCcore-11.2.0 11) Brotli/1.0.9-GCCcore-11.2.0 18) FriBidi/1.0.10-GCCcore-11.2.0
5) x264/20210613-GCCcore-11.2.0 12) freetype/2.11.0-GCCcore-11.2.0 19) FFmpeg/4.3.2-GCCcore-11.2.0
6) ncurses/6.2-GCCcore-11.2.0 13) util-linux/2.37-GCCcore-11.2.0
7) LAME/3.100-GCCcore-11.2.0 14) fontconfig/2.13.94-GCCcore-11.2.0
module list
Nato lahko poženemo program ffmpeg
. Za ogrevanje pogledamo verzijo programa.
$ ffmpeg -version
ffmpeg version 4.3.2 Copyright (c) 2000-2021 the FFmpeg developers
built with gcc 11.2.0 (GCC)
configuration: --prefix=/ceph/grid/software/modules/software/FFmpeg/4.3.2-GCCcore-11.2.0 --enable-pic --enable-shared --enable-gpl --enable-version3 --enable-nonfree --cc=gcc --cxx=g++ --enable-libx264 --enable-libx265 --enable-libmp3lame --enable-libfreetype --enable-fontconfig --enable-libfribidi
libavutil 56. 51.100 / 56. 51.100
libavcodec 58. 91.100 / 58. 91.100
libavformat 58. 45.100 / 58. 45.100
...
ffmpeg -version
Vse naložene okoljske module lahko odstranimo z ukazom module purge
.
Vsebniki
Slabost modulov je, da jih mora pripraviti in namestiti skrbnik. Če to ni možno, lahko izberemo drugi pristop in program, ki ga potrebujemo, zapakiramo v vsebnik (angl. container) Apptainer. Tak vsebnik vsebuje naš program in vse druge programe ter programske knjižnice, ki jih potrebuje za delovanje. Ustvarimo ga lahko na poljubnem računalniku, nato pa ga skopiramo na gručo.
Ko imamo ustrezen vsebnik pripravljen, ga uporabimo tako, da pred želeni ukaz zmeraj napišemo apptainer exec <vsebnik>
. Vsebnik za FFmpeg (datoteka ffmpeg_alpine.sif
) je na voljo na
povezavi. Prenesemo ga na gručo in zaženemo:
$ apptainer exec ffmpeg_alpine.sif ffmpeg -version
apptainer exec ffmpeg_alpine.sif ffmpeg -version
Prikaže se nam izpis s podatki o verziji programske opreme ffmpeg. S programom apptainer
zaženemo vsebnik ffmpeg_alpine.sif
. V vsebniku pa nato zaženemo program ffmpeg
.
Vsebnik ffmpeg_alpine.sif
si lahko zgradimo tudi sami. Iskanje po spletu s ključnimi besedami ffmpeg
, container
in docker
, nas verjetno pripelje na spletno stran https://hub.docker.com/r/jrottenberg/ffmpeg/ z množico najrazličnejših vsebnikov za ffmpeg. Izberemo zadnjo verzijo najmanjšega, pripravljenega za Alpine Linux, ki ga zgradimo kar na vstopnem vozlišču.
$ apptainer pull docker://jrottenberg/ffmpeg:alpine
INFO: Converting OCI blobs to SIF format
INFO: Starting build...
Getting image source signatures
Copying blob 801bfaa63ef2 skipped: already exists
Copying blob 9b7e8ca952e4 done
Copying blob 98b23fe84856 done
Copying config 51503c1049 done
Writing manifest to image destination
Storing signatures
2021/01/30 17:52:54 info unpack layer: sha256:801bfaa63ef2094d770c809815b9e2b9c1194728e5e754ef7bc764030e140cea
2021/01/30 17:52:54 info unpack layer: sha256:9b7e8ca952e42ed8bf6aebd56e420e40d2637d16b4b79404089adfdca1eb841a
2021/01/30 17:52:55 info unpack layer: sha256:98b23fe84856b3e03df3d02226e002119143da9e2e081408499955ccb8d213df
INFO: Creating SIF file...
apptainer pull docker://jrottenberg/ffmpeg:alpine
Obširnejša navodila za pripravljanje vsebnikov najdemo na https://apptainer.org/docs/user/latest/.
Kar nekaj pogosto uporabljanih vsebnikov je na gručah na voljo vsem uporabnikom:
- na gruči ARNES jih najdemo v mapi
/d/hpc/singularity/
, - na gručah Maister in Trdina pa v mapi
/ceph/sys/singularity
.
-
(Delna) navodila za prevajanje FFmpeg najdemo v uradni dokumentaciji. ↩