Modules/Lmod: Różnice pomiędzy wersjami

Z Komputery Dużej Mocy w ACK CYFRONET AGH
Skocz do:nawigacja, szukaj
(Utworzył nową stronę „__TOC__ Pakiet Modules umożliwia łatwą i dynamiczną modyfikację zmiennych powłoki dostosowując ją do specyficznych wymagań danego pakietu oprogramowania. D...”)
 
(dodanie opisu module save, restore, describe)
 
(Nie pokazano 20 wersji utworzonych przez 4 użytkowników)
Linia 1: Linia 1:
__TOC__
+
==Opis pakietu==
  
Pakiet Modules 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 <tt>nazwa-programu/wersja</tt>. W przypadku bibliotek schemat ma postać <tt>libs/nazwa-biblioteki/wersja</tt>. Zarówno dla pakietów oprogramowania jak i bibliotek najnowsza wersja jest domyślną, zatem ostatni człon <tt>wersja</tt> można pominąć. Zmian dokonuje się za pomocą komendy module i parametru określającego akcję. Poniżej zebrano najczęściej wykorzystywane opcje:
+
Pakiet '''[https://www.tacc.utexas.edu/research-development/tacc-projects/lmod 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 <tt>plgrid/nazwa-programu/wersja</tt>. W przypadku bibliotek schemat ma postać <tt>plgrid/libs/nazwa-biblioteki/wersja</tt>, a dla programów narzędziowych (np. języki oprogramowania R lub Python) <tt>plgrid/tools/nazwa-biblioteki/wersja</tt>. Zarówno dla pakietów oprogramowania jak i bibliotek najnowsza wersja jest domyślną, zatem ostatni człon <tt>wersja</tt> można pominąć. Zmian dokonuje się za pomocą komendy <tt>module</tt> i parametru określającego akcję.
  
* <tt>module add</tt> lub <tt>load <moduł></tt> załadowanie modułu danego programu
+
===Najczęściej wykorzystywane opcje:===
* <tt>module rm</tt> lub <tt>unload <moduł></tt> usunięcie modułu danego programu
+
 
* <tt>module list</tt> – wyświetlenie listy aktualnie załadowanych modułów
+
* <tt>module add <moduł></tt> lub <tt>module load <moduł></tt> - załadowanie modułu danego programu
* <tt>module avail</tt> wyświetla listę wszystkich dostępnych modułów
+
* <tt>module rm <moduł></tt> lub <tt>module unload <moduł></tt> - usunięcie modułu danego programu
* <tt>module purge</tt> usunięcie wszystkich załadowanych modułów
+
* <tt>module swap <moduł-1> <moduł-2></tt> - wymiana modułów w powłoce
* <tt>module show</tt> lub display <moduł></tt> wyświetl informacje nt. danego modułu
+
 
* <tt>module switch <moduł-1> <moduł-2></tt> – wymiana modułów w powłoce
+
 
 +
* <tt>module avail</tt> - wyświetla listę wszystkich dostępnych modułów
 +
* <tt>module avail <nazwa></tt> - wyświetla listę wszystkich dostępnych wersji oprogramowania o nazwie <tt>nazwa</tt>
 +
* <tt>module spider <tekst> </tt> - wyszukuje wszystkie moduły posiadające w nazwie określony <tt>tekst</tt>
 +
* <tt>module keyword <tekst> </tt> - wyszukuje wszystkie moduły posiadające w nazwie i opisie określony <tt>tekst</tt>
 +
 
 +
 
 +
* <tt>module list</tt> - wyświetlenie listy aktualnie załadowanych modułów
 +
* <tt>module purge</tt> - usunięcie wszystkich załadowanych modułów
 +
 
 +
 
 +
* <tt>module show <moduł></tt> - wyświetla komendy wykonywane przez dany moduł
 +
* <tt>module whatis <moduł></tt> - wyświetl informacje nt. danego modułu
 +
 
 +
 
 +
*<tt>module save [kolekcja]</tt> - zapisuje załadowane moduły do kolecji domyślnej lub kolekcji o nazwie <tt>kolekcja</tt>
 +
*<tt>module restore [kolekcja]</tt> - ładuje moduły z kolecji domyślnej lub kolekcji o nazwie <tt>kolekcja</tt>
 +
*<tt>module savelist</tt> - wyświetla liste zapisanych kolekcji modułów
 +
*<tt>module describe [kolekcja]</tt> - wyświetla zawartość danej kolecji modułów
 +
 
 +
 
 +
*<tt>module use /path/to/personal/modulefiles</tt> - dołącza moduły z katalogu <tt>/path/to/personal/modulefiles</tt> do ścieżki wyszukiwania modułów
 +
*<tt>module unuse /path/to/personal/modulefiles</tt> - przestaje listować moduły z katalogu <tt>/path/to/personal/modulefiles</tt>
 +
 
 +
 
 +
*<tt>module help</tt> - zwraca obszerną pomoc komendy <tt>module</tt> i jej podkomend
 +
 
 +
===Przykładowe użycie===
 +
* Załadowanie najnowszej wersji kompilatora Intel
 +
<pre>
 +
module add plgrid/tools/intel
 +
</pre>
 +
* Załadowanie kompilatora Intel w wersji 17.0.1
 +
<pre>
 +
module add plgrid/tools/intel/17.0.1
 +
</pre>
 +
* Wylistowanie wszystkich dostępnych wersji kompilatorów Intel
 +
<pre>
 +
module avail plgrid/tools/intel
 +
</pre>
 +
* Wylistowanie wszystkich modułów dla blibliotek MPI na klastrze
 +
<pre>
 +
module avail mpi
 +
</pre>
 +
lub
 +
<pre>
 +
module spider mpi
 +
</pre>
 +
* Zamiana wersji 5.1.3 IntelMPI na wersję 2017.1
 +
<pre>
 +
module swap plgrid/tools/impi/5.1.3 plgrid/tools/impi/2017.1
 +
</pre>
 +
* Usunięcie ścieżek do kompilatora Intel w wersji 17.0.1 z środowiska
 +
<pre>
 +
module rm plgrid/tools/intel/17.0.1
 +
</pre>
 +
 
 +
* Przygotowanie kolekcji modułów zawierających kompilator Intel, biblioteki Intel MPI oraz Intel MKL w wersjach 2017.3 oraz nazwanie jej <tt>intel.2017.3-toolchain</tt>
 +
<pre>
 +
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
 +
</pre>
 +
 
 +
* Sprawdzenie zapisanych kolekcji modułów dostępnych dla użytkownika
 +
<pre>
 +
module savelist
 +
</pre>
 +
 
 +
* Sprawdzenie zawartości kolekcji <tt>intel.2017.3-toolchain</tt>
 +
<pre>
 +
module describe intel.2017.3-toolchain
 +
</pre>
 +
 
 +
* Załadowanie wszystkich modułów z kolekcji <tt>intel.2017.3-toolchain</tt>
 +
<pre>
 +
module restore intel.2017.3-toolchain
 +
</pre>
 +
 
 +
===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 <tt>module save [kolekcja]</tt> i następnie ich ładowanie poleceniem <tt>module restore [kolekcja]</tt>.
 +
* Moduł może ładować moduły zależne, zatem jedno polecenie <tt>module add <nazwa></tt> może załadować wiele modułów.
 +
* Komenda <tt>module</tt> ma skróconą wersję <tt>ml</tt>. Również niektóre podkomendy mają skrócone wersje
 +
** <tt>ml</tt> jest równoważna <tt>module list</tt>
 +
** <tt>ml <nazwa></tt> jest równoważna <tt>module add <nazwa></tt>
 +
** <tt>ml -<nazwa></tt> jest równoważna <tt>module rm <nazwa></tt>
 +
** <tt>ml av</tt> jest równoważna <tt>module avail</tt>
 +
** <tt>ml s</tt> jest równoważna <tt>module save</tt>
 +
** <tt>ml r</tt> jest równoważna <tt>module restore</tt>
 +
 
 +
===Wykorzystanie własnych modułów (Zaawansowane) ===
 +
Pakiet Lmod umożliwia również tworzenie własnych modułów ([https://pl.wikipedia.org/wiki/Tcl_(język_programowania) TCL] lub [https://pl.wikipedia.org/wiki/Lua Lua]). W tym celu należy wykonać polecenie:
 +
<pre>
 +
module use /path/to/personal/modulefiles
 +
</pre>
 +
Podana ścieżka określa katalog w którym użytkownik przetrzymuje własne moduły. Program <tt>lmod</tt> automatycznie sprawdzi nowe zainstalowane moduły i doda je do listy dostępnych. W modułach można wykorzystywać funkcje języków [https://pl.wikipedia.org/wiki/Tcl_(język_programowania) TCL]  lub [https://pl.wikipedia.org/wiki/Lua Lua].
 +
 
 +
====Przykładowy moduł w Lua====
 +
<syntaxhighlight lang="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
 +
</syntaxhighlight>
 +
 
 +
 
 +
Informacje jak tworzyć własne moduły znajdują się w dokumentacji Lmod: [http://lmod.readthedocs.io/en/latest/020_advanced.html#user-created-modules moduły użytkownika] oraz [http://lmod.readthedocs.io/en/latest/015_writing_modules.html 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/

Aktualna wersja na dzień 12:41, 4 sie 2017

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/