Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

Podstawowe informacje

  • Mechanizm Modules umożliwia łatwą i dynamiczną modyfikację zmiennych powłoki (ścieżki wyszukiwania aplikacji itp.) dostosowując ją do specyficznych wymagań danego pakietu oprogramowania.
  • Dla każdego z pakietów oprogramowania dostępnego w Infrastrukturze PLGrid zdefiniowano odpowiadający mu moduł (lub moduły, jeśli istnieje więcej niż jedna wersja danego pakietu).

...

Info
Zalecamy wykorzystanie Katalogu Aplikacji i Usług do wyszukiwania dostępnego w PLGrid oprogramowania oraz modułów.

Komenda module

Dla komendy module należy podać parametr określający

Oprogramowanie oraz moduły dostępne w Infrastrukturze PLGrid najwygodniej można wyszukać korzystając z Katalogu Aplikacji.

Zmian dokonuje się za pomocą komendy module i parametru określającego akcję. Najczęściej wykorzystywane opcje to:

  • 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 list – wyświetlenie listy aktualnie załadowanych modułów
  • module avail – wyświetla listę wszystkich dostępnych modułów
  • module avail <nazwa> – wyświetla listę wszystkich dostępnych wersji oprogramowania o nazwie rozpoczynającej się od <nazwa>
  • module purge – usunięcie wszystkich załadowanych modułów
  • module show <moduł> lub module display <moduł> – wyświetl informacje nt. danego modułu
  • module switch <moduł-1> <moduł-2> – wymiana modułów w powłoce

Schemat nazw modułów

Nazwy modułów dla aplikacji naukowych budowane są według schematu plgrid/apps/nazwa-programu/wersja.

W przypadku bibliotek schemat ma postać plgrid/libs/nazwa-biblioteki/wersja, a dla programów narzędziowych (np. język oprogramowania Python) plgrid/tools/nazwa-narzedzia/wersja.

Zarówno dla pakietów oprogramowania jak i bibliotek  przygotowano przygotowano wersję też domyślną i przy jej ładowaniu ostatni człon modułu (tj. wersję) można pominąć.

Przykładowe użycie


  • Załadowanie najnowszej domyślnej wersji kompilatora Intel

    Code Block
    languagebash
    module add plgrid/tools/intel


  • Załadowanie kompilatora Intel w wersji 13.0

    Code Block
    languagebash
    module add plgrid/tools/intel/13.0


  • Spis wszystkich dostępnych wersji kompilatorów Intel

    Code Block
    languagebash
    module avail plgrid/tools/intel


  • Zamiana wersji Matlab z wersji R2012b na R2013b

    Code Block
    languagebash
    module switch plgrid/apps/matlab/R2012b plgrid/apps/matlab/R2013b 


  • Usunięcie ścieżek do kompilatora Intel w wersji 13.0 z środowiska

    Code Block
    languagebash
    module addrm plgrid/tools/intel/13.0


  • Przykładowy skrypt PBS skrypt SLURM wykorzystujący polecenie Module do załadowania programu Matlab w domyślnej wersji i wykonania obliczeń zawartych w pliku matlab.m (skrypt to matlab.pbs)

    Code Block
    languagebash
    #!/bin/shbash
    #przykladowe#SBATCH opcje dla polecenia qsub
    #PBS -l walltime=5:00
    #PBS -l mem=1gb
    #PBS -q-N 1
    #SBATCH --ntasks-per-node=2
    #SBATCH -t 10:00
    #SBATCH -p plgrid-testing
     
    #przejdz do katalogu na pliki tymczasowe zadania
    cd $TMPDIR
    
    #ustaw srodowisko uruchomieniowe dla Matlab w wersji domyslnej
    module add plgrid/apps/matlab
     
    #uruchom program
    matlab < $PBS$SLURM_OSUBMIT_WORKDIRDIR/matlab.m > $PBS$SLURM_OSUBMIT_WORKDIRDIR/matlab.out
    
    #skasuj katalog tymczasowy:
    rm -rf $TMPDIR

...


Info

Dokumentacja pakietu Lmod wykorzystywanego na klastrze Prometheus oraz Zeus: https

...

://

...

kdm.

...

cyfronet.

...

pl/portal/Prometheus:Lmod, http://

...

lmod.

...

readthedocs.io oraz https://www.tacc.utexas.edu/research-development/tacc-projects/lmod/user-guide

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.

  • Komenda modules module avail <nazwa> znajduje jedynie moduły zaczynające się od ciągu znaków <nazwa> dlatego, jeżeli poszukuje się modułów zawierających gdziekolwiek ciąg <nazwa> należy wykonać polecenie

    Code Block
    languagebash
    module avail 2>&1 | grep nazwa

...

  • module spider <nazwa>

Wykorzystanie własnych modułów (Zaawansowane) 

System Modules 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 załadować moduł use.own. Przy pierwszym załadowaniu modułu use.own zostanie założona w katalogu domowym użytkownika kartoteka privatemodules. W niej należy umieszczać własne moduły. Program modules automatycznie lmod automatycznie sprawdzi nowe zainstalowane moduły i doda je do listy dostępnych. W modułach można wykorzystywać funkcje języka Tcl. Informacje jak tworzyć własne moduły znajdują się na stronie pakietu Modules.języków TCL lub Lua.

Code Block
titlePrzykładowy moduł w LUA
linenumberstrue
-- -*- 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