Preskočiť na obsah

Lmod moduly

Lmod je modulový systém prostredia založený na jazyku Lua, ktorý sa používa na dynamickú úpravu shell prostredia. Moduly umožňujú používateľom jednoducho konfigurovať svoje softvérové prostredie úpravou premenných, ako sú PATH, LD_LIBRARY_PATH a ďalšie aplikačne špecifické nastavenia.

Používanie modulov zjednodušuje prepínanie medzi rôznymi verziami softvéru a toolchainmi bez potreby meniť systémovú konfiguráciu.

Podrobnú dokumentáciu o Lmod nájdete v dokumentácii Lmod.


Užitočné príkazy

Svoje prostredie môžete rýchlo nastaviť pomocou modulov. Medzi najčastejšie používané príkazy patria:

module avail                  # list all available modules
module load <module_name>     # load desired module
module list                   # list all currently loaded modules
module unload <module_name>   # unload desired module
module purge                  # unload all modules
module use <path_to_modules>  # use the modules stored in the <path_to_modules> folder
module help                   # display general help
module help <module_name>     # display information about module
module keyword <key>          # list modules matching the <key> keyword
module spider <key>           # similar to keyword command, more effective and precise

Príkaz ml je kratší alias pre module a dá sa použiť rovnakým spôsobom.


Zoznam načítaných modulov

Pre prehľad aktuálne načítaných modulov použite module list alebo ml:

ml
  Currently Loaded Modules:
  1) EasyBuild/4.7.2

Hľadanie dostupných modulov

Pre prehľad všetkých dostupných modulov môžete použiť module avail alebo skrátený príkaz ml av:

Dostupné moduly na Devane

login01:~ $ module avail

R/4.2.3     (D)    libvirt/8.10.0    notebook/6.4.10            nvhpc-nompi/23.1          qemu/6.2.0
cuda/12.0.1        maqao/2.17.4      nvhpc-byo-compiler/23.1    nvhpc/23.1                singularity/ce-3.11.0
gcc/12.2           nmap/7.93         nvhpc-hpcx/23.1            openmpi/4.1.4/gcc-12.2    websockify/0.10.0
            ...                                     ...                             ...
---------------------------------------- /storage-apps/intel-v.2023/oneapi/modulefiles ----------------------------------------
advisor/latest                debugger/2023.0.0      (D)    icc32/latest                        mkl/2023.0.0     (D)
advisor/2023.0.0       (D)    dev-utilities/latest          icc32/2023.0.0               (D)    mkl32/latest
ccl/latest                    dev-utilities/2021.8.0 (D)    init_opencl/latest                  mkl/2023.0.0     (D)
ccl/2021.8.0           (D)    dnnl-cpu-gomp/latest          init_opencl/2023.0.0         (D)    mpi/2021.8.0     (D)
clck/latest                   dnnl-cpu-gomp/2023.0.0 (D)    inspector/latest                    oclfpga/latest
clck/2021.7.2          (D)    dnnl-cpu-iomp/latest           inspector/2023.0.0          (D)    oclfpga/2023.0.0 (D)
compiler-rt/latest            dnnl-cpu-tbb/latest            intel_ipp_ia32/latest        tbb/latest
compiler-rt/2023.0.0   (D)    dnnl-cpu-tbb/2023.0.0 (D)    intel_ipp_ia32/2021.7.0     tbb/2021.8.0     (D)
compiler-rt32/latest          dnnl/latest                    intel_ipp_intel64/latest     tbb32/latest
compiler-rt32/2023.0.0 (D)    dnnl/2023.0.0                  intel_ipp_intel64/2021.7.0  tbb32/2023.0.0   (D)
compiler/latest               dpct/latest                    intel_ippcp_ia32/latest     vpl/latest
compiler/2023.0.0      (D)    dpct/2023.0.0          (D)    intel_ippcp_ia32/2021.6.3   vpl/2023.0.0     (D)
compiler32/latest             dpl/latest                    intel_ippcp_intel64/latest   vtune/latest
compiler32/2023.0.0    (D)    dpl/2022.0.0           (D)    intel_ippcp_intel64/2021.6.3 vtune/2023.0.0   (D)
dal/latest                    icc/latest                     itac/latest                 mkl/latest
dal/2023.0.0           (D)    icc/2023.0.0           (D)    itac/2021.8.0              mkl/2023.0.0     (D)
            ...                                     ...                             ...

Reťazec pred symbolom / zodpovedá názvu softvéru, zatiaľ čo reťazec za symbolom / zodpovedá verzii softvéru a/alebo kompilačnému toolchainu, ktorý sa použil na inštaláciu softvéru.

Predvolené hodnoty

D označuje predvolenú verziu softvéru, ktorá sa načíta, ak sa v príkaze module load nešpecifikuje žiadna verzia alebo toolchain.

Odporúča sa vždy používať úplný názov modulu, pretože predvolené hodnoty sa môžu meniť pri inštalácii novších verzií softvéru.


Hľadanie modulov

Príkaz module spider poskytuje podrobnejšie výsledky vyhľadávania a pomáha nájsť moduly v hierarchickom strome modulov.

Skúmanie modulov

login01:~ $ module spider Python
  Description:
    Python is a programming language that lets you work more quickly and integrate your systems more effectively.

  Versions:
    Python/2.7.18-GCCcore-10.3.0-bare
    Python/2.7.18-GCCcore-11.3.0-bare
    Python/3.7.4-GCCcore-8.3.0
    Python/3.8.6-GCCcore-10.2.0
    Python/3.9.5-GCCcore-10.3.0-bare
    Python/3.9.5-GCCcore-10.3.0
    Python/3.9.6-GCCcore-11.2.0-bare
    Python/3.9.6-GCCcore-11.2.0
    Python/3.10.4-GCCcore-11.3.0-bare
    Python/3.10.4-GCCcore-11.3.0
  Other possible modules matches:
    python

Teraz si môžeme vybrať požadovanú verziu Pythonu, napr. Python/3.10.4-GCCcore-11.3.0:

module load Python/3.10.4-GCCcore-11.3.0

Príkazy na správu modulov môžete použiť aj vo svojich Slurm batch skriptoch.

Preskúmanie modulu

Ak chcete zistiť, ako modul zmení prostredie, použite príkaz ml show:

Preskúmanie modulu

ml show Python/3.10.4-GCCcore-11.3.0

---------------------------------------------------------------------------------------------------------------------------
/storage-apps/easybuild/modules/lang/Python/3.10.4-GCCcore-11.3.0.lua:
---------------------------------------------------------------------------------------------------------------------------
help([[
Description
===========
Python is a programming language that lets you work more quickly and integrate your systems
more effectively.


More information
================
 - Homepage: https://python.org/


Included extensions
===================
alabaster-0.7.12, appdirs-1.4.4, asn1crypto-1.5.1, atomicwrites-1.4.0,
attrs-21.4.0, Babel-2.10.1, backports.entry_points_selectable-1.1.1,
backports.functools_lru_cache-1.6.4, bcrypt-3.2.2, bitstring-3.1.9,
...
webencodings-0.5.1, wheel-0.37.1, xlrd-2.0.1, zipfile36-0.1.3, zipp-3.8.0
]])
whatis("Description: Python is a programming language that lets you work more quickly and integrate your systems more effectively.")
whatis("Homepage: https://python.org/")
whatis("URL: https://python.org/")
whatis("Extensions: alabaster-0.7.12, appdirs-1.4.4, asn1crypto-1.5.1, atomicwrites-1.4.0, attrs-21.4.0, Babel-2.10.1, backports.entry_points_selectable-1.1.1, backports.functools_lru_cache-1.6.4, bcrypt-3.2.2, bitstring-3.1.9, blist-1.3.6, CacheControl-0.12.11, cachy-0.3.0, certifi-2021.10.8, cffi-1.15.0, chardet-4.0.0, charset-normalizer-2.0.12, cleo-0.8.1, click-8.1.3, clikit-0.6.2, colorama-0.4.4, crashtest-0.3.1, cryptography-37.0.1, Cython-0.29.28, decorator-5.1.1, distlib-0.3.4, docopt-0.6.2, docutils-0.17.1, ecdsa-0.17.0, editables-0.3, filelock-3.6.0, flit-3.7.1, flit-core-3.7.1, fsspec-2022.3.0, future-0.18.2, glob2-0.7, html5lib-1.1, idna-3.3, imagesize-1.3.0, importlib_metadata-4.11.3, importlib_resources-5.7.0, iniconfig-1.1.1, intervaltree-3.1.0, intreehooks-1.0, ipaddress-1.0.23, jeepney-0.8.0, Jinja2-3.1.2, joblib-1.1.0, jsonschema-4.4.0, keyring-23.5.0, keyrings.alt-4.1.0, liac-arff-2.5.0, lockfile-0.12.2, MarkupSafe-2.1.1, mock-4.0.3, more-itertools-8.12.0, msgpack-1.0.3, netaddr-0.8.0, netifaces-0.11.0, packaging-20.9, paramiko-2.10.4, pastel-0.2.1, pathlib2-2.3.7.post1, pbr-5.8.0, pexpect-4.8.0, pip-22.0.4, pkginfo-1.8.2, platformdirs-2.4.0, pluggy-1.0.0, poetry-1.1.13, poetry-core-1.0.8, psutil-5.9.0, ptyprocess-0.7.0, py-1.11.0, py_expression_eval-0.3.14, pyasn1-0.4.8, pycparser-2.21, pycrypto-2.6.1, Pygments-2.12.0, pylev-1.4.0, pyrsistent-0.18.1, pytoml-0.1.21, pytz-2022.1, regex-2022.4.24, requests-2.27.1, requests-toolbelt-0.9.1, scandir-1.10.0, SecretStorage-3.3.1, semantic_version-2.9.0, setuptools-62.1.0, setuptools-rust-1.3.0, setuptools_scm-6.4.2, shellingham-1.4.0, simplegeneric-0.8.1, simplejson-3.17.6, six-1.16.0, snowballstemmer-2.2.0, sortedcontainers-2.4.0, Sphinx-4.5.0, sphinx-bootstrap-theme-0.8.1, sphinxcontrib-applehelp-1.0.2, sphinxcontrib-devhelp-1.0.2, sphinxcontrib-htmlhelp-2.0.0, sphinxcontrib-jsmath-1.0.1, sphinxcontrib-qthelp-1.0.3, sphinxcontrib-serializinghtml-1.1.0, sphinxcontrib-websupport-1.2.4, tabulate-0.8.9, toml-0.10.2, tomli-2.0.1, tomli_w-1.0.0, tomlkit-0.10.2, typing_extensions-4.2.0, ujson-5.2.0, urllib3-1.26.9, virtualenv-20.14.1, wcwidth-0.2.5, webencodings-0.5.1, wheel-0.37.1, xlrd-2.0.1, zipfile36-0.1.3, zipp-3.8.0")
conflict("Python")
load("GCCcore/11.3.0")
...

Teraz si môžeme vybrať požadovanú verziu Pythonu, napr. Python/3.10.4-GCCcore-11.3.0:

module load Python/3.10.4-GCCcore-11.3.0

Príkazy na správu modulov môžete použiť aj vo svojich Slurm batch skriptoch.


Načítavanie modulov

Na načítanie požadovaného modulu použite module load alebo ml nasledované názvom modulu:

Načítavanie modulov

module load Python/3.10.8-GCCcore-12.2.0
module list

  Currently Loaded Modules:
  1) GCCcore/12.2.0                 6) libreadline/8.2-GCCcore-12.2.0  11) libffi/3.4.4-GCCcore-12.2.0
  2) zlib/1.2.12-GCCcore-12.2.0     7) Tcl/8.6.12-GCCcore-12.2.0       12) OpenSSL/1.1
  3) binutils/2.39-GCCcore-12.2.0   8) SQLite/3.39.4-GCCcore-12.2.0    13) Python/3.10.8-GCCcore-12.2.0
  4) bzip2/1.0.8-GCCcore-12.2.0     9) XZ/5.2.7-GCCcore-12.2.0
  5) ncurses/6.3-GCCcore-12.2.0    10) GMP/6.2.1-GCCcore-12.2.0

Závislosti

Hoci sme načítali iba jeden modul, výstup príkazu module list ukazuje, že sa načítala celá sada modulov. Ide o závislosti modulu Python/3.10.8-GCCcore-12.2.0.

Konflikt modulov

Je dôležité si uvedomiť, že spoločne je možné načítať iba moduly, ktoré sú navzájom kompatibilné. Okrem iného musia byť moduly inštalované buď rovnakým toolchainom ako už načítané moduly, alebo kompatibilným (sub)toolchainom.

Ak načítate jeden alebo viac modulov inštalovaných pomocou toolchainu intel/2022b, ostatné moduly, ktoré načítate, by mali byť inštalované pomocou rovnakého toolchainu.

Okrem toho je v danom čase možné načítať iba jednu verziu každého softvérového balíka. Napríklad ak máte načítaný modul Python/3.10.4-GCCcore-11.3.0, nemôžete v tej istej relácii alebo skripte úlohy načítať inú verziu Pythonu, a to ani priamo, ani nepriamo ako závislosť iného modulu, ktorý chcete načítať.


Vymazanie načítaných modulov

Akýkoľvek modul môžete odložiť pomocou ml unload alebo module unload nasledovaného názvom modulu:

Odkladanie modulov

login01:~ $ module load Python/3.10.8-GCCcore-12.2.0
login01:~ $ module list

  Currently Loaded Modules:
  1) GCCcore/12.2.0                 4) bzip2/1.0.8-GCCcore-12.2.0       7) Tcl/8.6.12-GCCcore-12.2.0     10) GMP/6.2.1-GCCcore-12.2.0     13) Python/3.10.8-GCCcore-12.2.0
  2) zlib/1.2.12-GCCcore-12.2.0     5) ncurses/6.3-GCCcore-12.2.0       8) SQLite/3.39.4-GCCcore-12.2.0  11) libffi/3.4.4-GCCcore-12.2.0
  3) binutils/2.39-GCCcore-12.2.0   6) libreadline/8.2-GCCcore-12.2.0   9) XZ/5.2.7-GCCcore-12.2.0       12) OpenSSL/1.1

login01:~ $ module unload GCCcore/12.2.0
login01:~ $ module list

  Currently Loaded Modules:
  1) zlib/1.2.12-GCCcore-12.2.0     3) bzip2/1.0.8-GCCcore-12.2.0   5) libreadline/8.2-GCCcore-12.2.0   7) SQLite/3.39.4-GCCcore-12.2.0   9) GMP/6.2.1-GCCcore-12.2.0     11) OpenSSL/1.1
  2) binutils/2.39-GCCcore-12.2.0   4) ncurses/6.3-GCCcore-12.2.0   6) Tcl/8.6.12-GCCcore-12.2.0        8) XZ/5.2.7-GCCcore-12.2.0       10) libffi/3.4.4-GCCcore-12.2.0  12) Python/3.10.8-GCCcore-12.2.0

Na odloženie všetkých načítaných modulov jednoducho zadajte ;module purge`.


Ukladanie výberu modulov

Ak máte sadu modulov, ktoré často načítavate, môžete ich uložiť do kolekcie. Na uloženie všetkých načítaných modulov do kolekcie ;; zadajte:

ml save <my_favourite_collection>

Ak si neskôr budete chcieť tieto moduly načítať, zadajte:

ml restore <my_favourite_collection>

Zoznam všetkých svojich kolekcií si môžete zobraziť pomocou:

ml savelist

Obsah konkrétnej kolekcie si môžete zobraziť pomocou:

ml describe <collection>

Na odstránenie kolekcie modulov odstráňte príslušný súbor v adresári HOME/.lmod.d/collections/.

Created by: Andrej Hurajt, Marek Štekláč, Marek Štekláč