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