Podręcznik użytkownika modułów środowiskowych¶
Moduły środowiskowe to narzędzie do dynamicznej modyfikacji środowiska użytkownika
za pomocą plików modułów. Dla każdego z dostępnych pakietów oprogramowania zainstalowanych
w systemie istnieje odpowiedni plik modułu. Zatem, użytkownicy mogą użyć polecenia
module, aby sprawdzić dostępne oprogramowanie w systemie. Polecenie to można też użyć,
aby dynamicznie ustawić lub usunąć zmienne środowiskowe powłoki takie jak PATH, INCLUDE,
LD_LIBRARY_PATH, MANPATH itp. dla odpowiedniego pakietu/wersji oprogramowania. Użytkownicy
mogą umieścić polecenie module w swoim skrypcie uruchamiającym obliczenia, aby załadować odpowiednie
moduły w razie potrzeby. Alternatywnie, można dodać polecenie modułu do swojego ~/.bashrc
~/.bashrc.
Sprawdzenie dostępnych modułów/pakietów¶
Aby sprawdzić jakie są dostępne moduły, należy wydać polecenie:
$ module avail
Przykład:
$ moduł avail
--------------------------------------------------- /opt/modulefiles/Core ---------------------------------------------------------------------------
crystal/09.1.0.1 intel/2019.1.144 mkl/2019.1.144 mpich plask/openblas qchem/mpich
crystal/09.2.0.1 intel/2021.1.1 (L,D) mkl/2020.0.166 openmpi/2.1.0 python/default qchem/openmp
crystal/17.1.0.2 (D) meep (L) mkl/2021.1.1 (L,D) openmpi/4.0.3rc4 (D) python/2.7 qchem/serial (D)
intel/2013.2.146 mkl/default mpb (L) plask/mkl (L,D) python/3.8 (D) turbomole
------------------------------------------- /usr/share/lmod/lmod/modulefiles/Core -------------------------------------------------------------------
lmod/6.6 settarg/6.6
Where:
L: Module is loaded
D: Default Module
Wyświetlenie listy załadowanych modułów/pakietów¶
Polecenie do wyświetlenia listy załadowanych modułów/pakietów to module list
$ module list
Currently Loaded Modules:
1) intel/2021.1.1 2) meep 3) mpb 4) mkl/2021.1.1 5) plask/mkl
Załadowanie modułu w celu ustawienia zmiennych środowiskowych¶
Polecenie akywujące moduł i ustawiające zmienne środowiskowe dla odpowiedniego pakietu
oprogramowania to module load [plik_modułu]. Po jego użyciu, można sprawdzić
załadowane moduły używając polecenia module list.
$ module load crystal
$ module list
Currently Loaded Modules:
1) intel/2021.1.1 2) meep 3) mpb 4) mkl/2021.1.1 5) plask/mkl 6) crystal/17.1.0.2
Aby wyświetlić, jakie zmienne środowiskowe zostały ustawione w module, należy użyć polecenia
module display [modulename]:
$ module display crystal
-----------------------------------------------------------------------------------------------------------------------------------------------
/opt/modulefiles/Core/crystal/17.1.0.2.lua:
-----------------------------------------------------------------------------------------------------------------------------------------------
help([[
This module loads CRYSTAL.
]])
whatis("Name: crystal ")
whatis("Description: This module loads CRYSTAL. ")
whatis("Version: 17.1.0.2 ")
setenv("CRY_EXEDIR","/opt/crystal/Linux-ifort17_XE_emt64/v1.0.2")
setenv("CRY_SCRDIR","/tmp")
setenv("CRY_MPIBIN","/opt/openmpi-2.1.0/bin/mpirun")
prepend_path("PATH","/opt/crystal/bin")
family("crystal")
Aby wyświetlić podstawowe informacje pomocy dla modułu należy użyć polecenia module help:
$ module help [plik_modułu]
Usuwanie/dezaktywacja modułów¶
Polecenie do usunięcia zmiennych środowiskowych ustawionych przez dany moduł to
module unload [plik_modułu]. Po jego użyciu, można sprawdzić pozostałe załadowane
moduły używając polecenia module list.
$ module unload crystal
$ module list
Currently Loaded Modules:
1) intel/2021.1.1 2) meep 3) mpb 4) mkl/2021.1.1 5) plask/mkl
Usunięcie wszystkich załadowanych modułów¶
Polecenie pozwalające na usunięcie wszystkich załadowanych modułów to module purge.
$ module purge
Zapisywanie i przywracanie załadowanych modułów¶
Polecenie do zapisywania załadowanych modułów to module save [nazwa_pliku].
To polecenie zapisze aktywne moduły/pakiety w pliku filename w katalogu
~/.lmod.d. Można załadować zapisane moduły używając module restore
[nazwa_pliku]. Jeśli nazwa pliku zostanie w tym przypadku pominięta, to
zostanie użyty domyślny plik ~/.lmod.d/default.
$ module save
$ module list
Currently Loaded Modules:
1) intel/2021.1.1 2) meep 3) mpb 4) mkl/2021.1.1 5) plask/mkl
$ module purge
$ module list
Currently Loaded Modules:
$ module restore
$ module list
Currently Loaded Modules:
1) intel/2021.1.1 2) meep 3) mpb 4) mkl/2021.1.1 5) plask/mkl
Wyszukiwanie modułu¶
Polecenie module spider wyszukuje moduły pasujące do wyrażenia regularnego.
Jeśli wyrażenie regularne zostanie pominięte, wówczas wylistowane zostaną wszystkie
moduły. Wynikiem działania tego polecenia jest tabela z następującymi kolumnami:
Module: Nazwa modułu.
Version: Wersja modułu.
Description: Krótki opis modułu.
Keywords: Lista słów kluczowych używanych do wyszukiwania modułu.
URL: Adres URL, za pomocą którego można uzyskać więcej informacji o module.
Komenda module spider jest potężnym narzędziem, które może być użyte do
wyszukiwania modułów. Należy zauważyć, że komenda nie jest ona tym samym co
polecenie module avail, które po prostu wyświetla listę modułów dostępnych dla użytkownika.
Z kolei, polecenie module spider wyszukuje moduły pasujące do wyrażenie regularnego, lub
— jeśli wyrażenie regularne zostanie pominięte — wszystkie moduły.
Komenda module spider jest przydatna, do znalezienia modułu dla określonego pakietu
oprogramowania. Na przykład, aby znaleźć moduł dla pakietu FFTW, można użyć następującego polecenia
polecenia:
$ module spider FFTW
Spowoduje to wyświetlenie listy wszystkich modułów dostępnych dla FFTW. Polecenie
module spider nie rozróżnia wielkości liter, więc można również użyć następującego polecenia:
$ module spider fftw
W przypadku, gdy znana jest nazwa modułu, ale nie wiadomo, jaka wersja jest dostępna, można użyć następującego polecenia
$ module spider fftw/3.3
Spowoduje to wyświetlenie listy wszystkich modułów dostępnych dla FFTW 3.3.
Wygodne narzędzie ml¶
Dla wszystkich osób, które nie potrafią poprawnie wpisać komendy mdoule, moduel, lub module
lmod ma rozwiązanie! Zamiast niej można użyć prostszego polecenia ml. Jako, że diw najczęściej
używane komendy to module list i module load <coś>, ml pozwala na łatwe użycie każdej z nich:
$ ml
oznacza module list. Zaś
$ ml foo
oznacza module load foo. Z kolei
$ ml -bar
oznacza module unload bar. Nie powinien być zaskoczeniem fakt, że dwie powyżse formy
można łączyć:
$ ml foo -bar
oznacza module unload bar; module load foo. Ponadto, dostępne są wszystkie standardowe
polecenia komendy module:
$ ml save
$ ml avail
$ ml spider
$ ml show foo
Jeśli ktokolwiek kiedykolwiek będzie musiał załadować moduł o nazwie spider, to może napisać:
$ ml load spider