Moduulijärjestelmä
Moduulijärjestelmä mahdollistaa useiden keskenään yhteensopimattomien ohjelmistoympäristöjen hallinnan samalla tietokoneella. Käytä module-komentoa saatavilla olevien sovellusten, kirjastojen tai kääntäjäkokonaisuuksien tarkasteluun ja niiden dynaamiseen käyttöönottoon.
Moduulijärjestelmää tulee käyttää sekä interaktiivisissa että eräajoissa.
Ympäristömoduulit tarjoavat kätevän tavan ottaa käyttöön kaikki tietyn sovelluksen tarvitsemat asetukset. Moduulijärjestelmä muokkaa käyttäjän komentotulkin ympäristömuuttujia niin, että suoritettavien tiedostojen oikeat versiot ovat hakupolussa ja linkkeri löytää tarvittavien kirjastojen oikeat versiot. Esimerkiksi komento mpicc viittaa eri kääntäjiin sen mukaan, mikä moduuli on ladattu.
CSC käyttää Lmod-ympäristömoduuleja. Ne on kehitetty Texas Advanced Computing Centerissä (TACC), ja ne on toteutettu Lua-ohjelmointikielellä. Lisää teknisiä yksityiskohtia löytyy [Lmodin kotisivulta].
Peruskäyttö
module-komennon syntaksi:
Ladattujen moduulien listaaminen (mukaan lukien nykyinen ympäristösi):
Komento module help antaa yleisiä tietoja moduulista. Jos haluat esimerkiksi lisätietoja moduulista intel-oneapi-compilers, käytä:
Lataa uusia moduuleja ympäristöösi komennolla load. Jos haluat esimerkiksi ladata moduulin intel-oneapi-mpi, käytä:
Huomaa, että voit ladata vain moduuleja, jotka ovat yhteensopivia muiden ladattujen moduulien kanssa. Et siis voi ladata moduuleja, jotka ovat ristiriidassa aiemmin ladattujen moduulien kanssa, tai moduuleja, jotka riippuvat moduuleista, joita ei ole vielä ladattu.
Moduulit, joita ei tarvita tai jotka ovat ristiriidassa muiden moduulien kanssa, voidaan poistaa käytöstä komennolla unload:
Yleisimmät moduulikomennot
| Module command | Description |
|---|---|
| module help modulename | Tietoa moduulista. |
| module load modulename | Lataa ympäristömoduulin oletusversion. |
| module load modulename/version | Lataa moduulin tietyn version. |
| module unload modulename | Poistaa annetun ympäristömoduulin käytöstä. |
| module list | Listaa ladatut moduulit. |
| module avail | Listaa kaikki ladattavissa olevat moduulit (eli nykyisen ympäristösi kanssa yhteensopivat). |
| module spider | Listaa kaikki olemassa olevat moduulit. |
| module spider modulename | Hakee koko olemassa olevien moduulien listasta. |
| module spider modulename/version | Antaa tietoa moduulin lataamisesta (esim. esitietovaatimukset). |
| module swap modulename1 modulename2 | Korvaa moduulin toisella (ja yrittää ladata uudelleen muiden ladattujen moduulien yhteensopivat versiot). |
| module show modulename | Näyttää moduulitiedoston komennot. |
| module purge | Poistaa kaikki moduulit käytöstä. |
Moduulien etsiminen
Voit listata moduulit, jotka ovat yhteensopivia nykyisen moduulijoukkosi kanssa, komennolla:
Lmod-järjestelmän hierarkkisen rakenteen vuoksi kaikkia asennettuja moduuleja ei voi ladata yksinkertaisesti yhdellä module load -komennolla. Komento avail ei näytä moduuleja, joita ei voi ladata ristiriitojen tai täyttymättömien riippuvuuksien vuoksi. Nämä suojaavat rajoitukset estävät yhteensopimattomien moduuliyhdistelmien lataamisen.
Listaa kaikki asennetut ohjelmistopaketit:
Listaa moduulit nimen perusteella:
Yllä oleva komento listaa kaikki moduulit, joiden nimessä esiintyy merkkijono int. Moduulin tarkempi kuvaus voidaan tulostaa käyttämällä moduulin koko nimeä versionumeron kanssa:
Moduuliriippuvuuksien ratkaiseminen
Jotkin moduulit riippuvat toisista moduuleista. Jos vaadittu moduuli puuttuu, moduulijärjestelmä tulostaa virheilmoituksen:
$ module load parallel-netcdf
Lmod has detected the following error: These module(s) exist but
cannot be loaded as requested: "parallel-netcdf"
Try: "module spider parallel-netcdf" to see how to load the module(s).
$ module spider parallel-netcdf
----------------------------------------------------------------------------
parallel-netcdf:
----------------------------------------------------------------------------
Versions:
parallel-netcdf/1.12.2
----------------------------------------------------------------------------
For detailed information about a specific "parallel-netcdf" module
(including how to load the modules) use the module's full name.
For example:
$ module spider parallel-netcdf/1.12.2
----------------------------------------------------------------------------
Tällaisissa tapauksissa komento module avail jättää moduulin pois listasta, eikä komento module load löydä sitä. Helpoin tapa selvittää vaadittu ympäristö on käyttää module spider -komentoa versionumeron kanssa. Esimerkiksi:
$ module spider parallel-netcdf/1.12.2
------------------------------------------------------------------
parallel-netcdf: parallel-netcdf/1.12.2
------------------------------------------------------------------
You will need to load all module(s) on any one of the lines below before
the "parallel-netcdf/1.12.2" module is available to load.
gcc/11.3.0 openmpi/4.1.4
gcc/9.4.0 openmpi/4.1.4
intel-oneapi-compilers-classic/2021.6.0 intel-oneapi-mpi/2021.6.0
...
Tässä tapauksessa sinun on ladattava yksi luetelluista ympäristöistä ennen kuin jatkat module load -komennolla.
Edistyneet aiheet
Yleensä sovellukset ja niiden riippuvuudet tulisi kääntää ja linkittää samalla kääntäjällä. Joissakin tapauksissa tämä on ehdoton vaatimus. Et esimerkiksi voi käyttää Intel-kääntäjillä käännettyä MPI Fortran90 -moduulia yhdessä gfortranin kanssa. Ympäristömoduuleissa on useita mekanismeja, jotka estävät käyttäjää muodostamasta yhteensopimatonta ympäristöä.
Moduulihierarkia auttaa pitämään kääntäjän ja MPI-kirjaston asetukset keskenään yhteensopivina. Käytännössä jokaiselle tuetulle kääntäjälle on moduuli tuettua MPI-kirjastoa varten. Kun käyttäjä vaihtaa kääntäjämoduulia, moduulijärjestelmä yrittää löytää ladattujen moduulien oikeat versiot:
$ module list
Currently Loaded Modules:
1) gcc/11.3.0 2) openmpi/4.1.4 3) parallel-netcdf/1.12.2
$ module swap gcc intel-oneapi-compilers-classic
Inactive Modules:
1) parallel-netcdf/1.12.2
Due to MODULEPATH changes the following modules have been reloaded:
1) openmpi/4.1.4
$ module list
Currently Loaded Modules:
1) intel-oneapi-compilers-classic/2021.6.0 2) openmpi/4.1.4
Inactive Modules:
1) parallel-netcdf/1.12.2
Jos oikeaa versiota ei löydy, moduulijärjestelmä poistaa nämä moduulit käytöstä (katso yllä). Käytännössä moduuli puretaan, mutta se merkitään niin, että kun kääntäjä-/MPI-kokoonpanoa muutetaan, järjestelmä yrittää löytää oikean version automaattisesti.
Tämä hierarkia toteutetaan muuttamalla $MODULEPATH-muuttujaa. Jokainen kääntäjämoduuli lisää oman polkunsa moduulipolkuun, jotta kyseisen kääntäjän kanssa yhteensopivat ohjelmistomoduulit voidaan listata. Kun kääntäjämoduuli poistetaan käytöstä, tämä polku poistetaan moduulipolusta. Sama koskee myös MPI-moduuleja.
Omien moduulitiedostojen käyttäminen
Jos haluat hallita itse asentamiasi ohjelmistopaketteja moduulien avulla, voit sijoittaa omat moduulitiedostosi kotihakemistoosi. Jos esimerkiksi lisäät moduulitiedostoja hakemistoon $HOME/modulefiles, voit käyttää niitä lisättyäsi polun moduulien hakupolkuun komennolla:
Jos haluat tutkia olemassa olevia moduulitiedostoja, module show <modulename> näyttää myös moduulitiedoston tiedostonimen.