Modules/Lmod
Spis treści
Opis pakietu
Pakiet Lmod umożliwia łatwą i dynamiczną modyfikację zmiennych powłoki dostosowując ją do specyficznych wymagań danego pakietu oprogramowania. Dla każdego z pakietów oprogramowania dostępnego na klastrze zdefiniowano odpowiadający mu moduł (lub moduły, jeśli istnieje więcej niż jedna wersja danego pakietu). Nazwy modułów budowane są wg schematu plgrid/nazwa-programu/wersja. W przypadku bibliotek schemat ma postać plgrid/libs/nazwa-biblioteki/wersja, a dla programów narzędziowych (np. języki oprogramowania R lub Python) plgrid/tools/nazwa-biblioteki/wersja. Zarówno dla pakietów oprogramowania jak i bibliotek najnowsza wersja jest domyślną, zatem ostatni człon wersja można pominąć. Zmian dokonuje się za pomocą komendy module i parametru określającego akcję.
Najczęściej wykorzystywane opcje:
- module add <moduł> lub module load <moduł> - załadowanie modułu danego programu
- module rm <moduł> lub module unload <moduł> - usunięcie modułu danego programu
- module swap <moduł-1> <moduł-2> - wymiana modułów w powłoce
- module avail - wyświetla listę wszystkich dostępnych modułów
- module avail <nazwa> - wyświetla listę wszystkich dostępnych wersji oprogramowania o nazwie nazwa
- module spider <tekst> - wyszukuje wszystkie moduły posiadające w nazwie określony tekst
- module keyword <tekst> - wyszukuje wszystkie moduły posiadające w nazwie i opisie określony tekst
- module list - wyświetlenie listy aktualnie załadowanych modułów
- module purge - usunięcie wszystkich załadowanych modułów
- module show <moduł> - wyświetla komendy wykonywane przez dany moduł
- module whatis <moduł> - wyświetl informacje nt. danego modułu
- module save [kolekcja] - zapisuje załadowane moduły do kolecji domyślnej lub kolekcji o nazwie kolekcja
- module restore [kolekcja] - ładuje moduły z kolecji domyślnej lub kolekcji o nazwie kolekcja
- module savelist - wyświetla liste zapisanych kolekcji modułów
- module describe [kolekcja] - wyświetla zawartość danej kolecji modułów
- module use /path/to/personal/modulefiles - dołącza moduły z katalogu /path/to/personal/modulefiles do ścieżki wyszukiwania modułów
- module unuse /path/to/personal/modulefiles - przestaje listować moduły z katalogu /path/to/personal/modulefiles
- module help - zwraca obszerną pomoc komendy module i jej podkomend
Przykładowe użycie
- Załadowanie najnowszej wersji kompilatora Intel
module add plgrid/tools/intel
- Załadowanie kompilatora Intel w wersji 17.0.1
module add plgrid/tools/intel/17.0.1
- Wylistowanie wszystkich dostępnych wersji kompilatorów Intel
module avail plgrid/tools/intel
- Wylistowanie wszystkich modułów dla blibliotek MPI na klastrze
module avail mpi
lub
module spider mpi
- Zamiana wersji 5.1.3 IntelMPI na wersję 2017.1
module swap plgrid/tools/impi/5.1.3 plgrid/tools/impi/2017.1
- Usunięcie ścieżek do kompilatora Intel w wersji 17.0.1 z środowiska
module rm plgrid/tools/intel/17.0.1
- Przygotowanie kolekcji modułów zawierających kompilator Intel, biblioteki Intel MPI oraz Intel MKL w wersjach 2017.3 oraz nazwanie jej intel.2017.3-toolchain
module add plgrid/tools/impi/2017.3 plgrid/libs/mkl/2017.0.3 plgrid/tools/intel/17.0.4 module save intel.2017.3-toolchain
- Sprawdzenie zapisanych kolekcji modułów dostępnych dla użytkownika
module savelist
- Sprawdzenie zawartości kolekcji intel.2017.3-toolchain
module describe intel.2017.3-toolchain
- Załadowanie wszystkich modułów z kolekcji intel.2017.3-toolchain
module restore intel.2017.3-toolchain
Uwagi
- Zaleca się ładować moduły jedynie w skryptach obliczeniowych, a nie w skryptach uruchamianych przy logowaniu na maszynę dostępową lub węzeł obliczeniowy. Dzięki temu łatwiej kontrolować środowisko uruchomieniowe oprogramowania, które ma zostać użyte oraz uniknąć konfliktów pomiędzy załadowanymi modułami.
- Gdy istnieje potrzeba załadowania wiele razy (np. w wielu zadaniach obliczeniowych) takich samych list modułów mozna stworzyc kolekcje poleceniem module save [kolekcja] i następnie ich ładowanie poleceniem module restore [kolekcja].
- Moduł może ładować moduły zależne, zatem jedno polecenie module add <nazwa> może załadować wiele modułów.
- Komenda module ma skróconą wersję ml. Również niektóre podkomendy mają skrócone wersje
- ml jest równoważna module list
- ml <nazwa> jest równoważna module add <nazwa>
- ml -<nazwa> jest równoważna module rm <nazwa>
- ml av jest równoważna module avail
- ml s jest równoważna module save
- ml r jest równoważna module restore
Wykorzystanie własnych modułów (Zaawansowane)
Pakiet Lmod umożliwia również tworzenie własnych modułów (TCL lub Lua). W tym celu należy wykonać polecenie:
module use /path/to/personal/modulefiles
Podana ścieżka określa katalog w którym użytkownik przetrzymuje własne moduły. Program lmod automatycznie sprawdzi nowe zainstalowane moduły i doda je do listy dostępnych. W modułach można wykorzystywać funkcje języków TCL lub Lua.
Przykładowy moduł w Lua
-- -*- lua -*-
local pkgName = myModuleName()
local fullVersion = myModuleVersion()
whatis("Name: "..pkgName)
whatis("Version "..fullVersion)
whatis("Category: apps/chemistry")
whatis("Description: Molcas@UU 8.0 (v.15-06-18) quantum chemistry chemistry package")
whatis("URL: http://www.kvant.kemi.uu.se/molcas/index.html")
whatis("Keyword: QC, chemistry")
-- add path to Molcas to PATH environmental variable and set MOLCAS environmental variable
prepend_path('PATH','/net/archive/groups/plg******/software/molcas.uu.8/molcas-8.0-15.06.18_CentOS_7.0_x86_64/bin')
setenv('MOLCAS', '/net/archive/groups/plg******/software/molcas.uu.8/molcas-8.0-15.06.18_CentOS_7.0_x86_64')
add_property("state","testing")
require "math"
-- set Molcas scratch dir accordingly to SLURM environment
if (os.getenv('SLURM_JOB_ID') ~= nil) then
setenv('MOLCAS_WORKDIR', os.getenv('SCRATCHDIR'))
else
setenv('MOLCAS_WORKDIR', os.getenv('SCRATCH'))
end
Informacje jak tworzyć własne moduły znajdują się w dokumentacji Lmod: moduły użytkownika oraz tworzenie nowych modułów.
Odnosniki
Strona projektu: https://www.tacc.utexas.edu/research-development/tacc-projects/lmod
Dokumentacja projektu: https://www.tacc.utexas.edu/research-development/tacc-projects/lmod/user-guide oraz http://lmod.readthedocs.io/