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].
Roihun GPU- ja CPU-kohtaiset moduulit
Roihussa GPU- ja CPU-osiot ovat erillisissä ympäristöissä CPU- ja GPU-solmujen erilaisen perusarkkitehtuurin vuoksi. Lisätietoja on sivulla Roihun käytön aloittaminen.
Tämän vuoksi ohjelmistot on rakennettava erikseen GPU- ja CPU-solmuarkkitehtuureille, joten GPU- ja CPU-osioille on omat toisistaan riippumattomat ohjelmistomoduulinsa. Niitä käytetään vastaavilta kirjautumissolmuilta roihu-gpu.csc.fi ja roihu-cpu.csc.fi.
Sekä GPU- että CPU-ympäristöissä on oletuksena ladattuna joukko moduuleja, jotka eroavat hieman toisistaan.
GPU:n oletusmoduulit
GPU-ympäristön oletusmoduulit ovat seuraavat:
module list
Currently Loaded Modules:
1) csc-tools/default (S) 2) gcc/14.3.0 3) cuda/12.9.1 4) openmpi/5.0.10 5) openblas/0.3.30 6) StdEnv
Where:
S: Module is Sticky, requires --force to unload or purge
CPU:n oletusmoduulit
CPU-ympäristön oletusmoduulit ovat seuraavat:
module list
Currently Loaded Modules:
1) csc-tools/default (S) 2) gcc/15.2.0 3) ucx/1.20.0 4) openmpi/5.0.10 5) openblas/0.3.30 6) StdEnv
Where:
S: Module is Sticky, requires --force to unload or purge
Peruskäyttö
module-komennon syntaksi:
Ladattujen moduulien listaaminen (mukaan lukien nykyinen ympäristösi):
Komento module help antaa yleistä tietoa moduulista. Jos haluat esimerkiksi lisätietoja moduulista openblas, käytä:
Lataa uusia moduuleja ympäristöösi komennolla load. Jos haluat esimerkiksi ladata openblas-moduulin, 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 ladattu.
Moduulit, joita ei tarvita tai jotka ovat ristiriidassa muiden moduulien kanssa, voidaan poistaa käytöstä komennolla unload:
Yleisimmin käytetyt 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 moduulit, jotka ovat ladattavissa (eli yhteensopivia nykyisen ympäristösi kanssa). |
| module spider | Listaa kaikki olemassa olevat moduulit. |
| module spider modulename | Hakee koko olemassa olevien moduulien listasta. |
| module spider modulename/version | Antaa tietoa moduulin lataamisesta (esivaatimukset jne.). |
| module swap modulename1 modulename2 | Korvaa moduulin toisella (ja yrittää ladata uudelleen yhteensopivat versiot muista ladatuista moduuleista). |
| module show modulename | Näyttää moduulitiedoston komennot. |
| module purge | Poistaa kaikki moduulit käytöstä. |
Moduulien etsiminen
Voit listata moduulit, jotka ovat yhteensopivia nykyisen moduulikokonaisuutesi 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 mpi. Moduulin tarkempi kuvaus voidaan tulostaa käyttämällä koko moduulinimeä versionumeron kanssa:
Moduuliriippuvuuksien ratkaiseminen
Jotkin moduulit riippuvat toisista moduuleista. Jos vaadittu moduuli puuttuu, moduulijärjestelmä tulostaa virheilmoituksen:
$ module load boost/1.88.0
Lmod has detected the following error: These module(s) or extension(s) exist but cannot be loaded as requested:
"boost/1.88.0"
Try: "module spider boost/1.88.0" to see how to load the module(s).
Or load any one of these options:
module load aocc/5.0.0 boost/1.88.0
module load gcc/15.2.0 boost/1.88.0
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 boost/1.88.0
-----------------------------------------------------------------------------------------------------------------------------------
boost: boost/1.88.0
-----------------------------------------------------------------------------------------------------------------------------------
You will need to load all module(s) on any one of the lines below before the "boost/1.88.0" module is available to load.
aocc/5.0.0
gcc/15.2.0
Help:
Boost provides free peer-reviewed portable C++ source libraries,
emphasizing libraries that work well with the C++ Standard Library.
Boost libraries are intended to be widely useful, and usable across a
broad spectrum of applications. The Boost license encourages both
commercial and non-commercial use.
Tässä tapauksessa sinun on ladattava yksi listatuista ympäristöistä ennen kuin jatkat module load -komennolla.
Edistyneet aiheet
Yleisesti ottaen 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 tuetulle MPI-kirjastolle. 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/15.2.0 2) ucx/1.20.0 3) openmpi/5.0.10 4) parallel-netcdf/1.14.1
$ module swap gcc aocc
Inactive Modules:
1) openmpi 2) parallel-netcdf 3) ucx/1.20.0
$ module list
Currently Loaded Modules:
1) aocc/5.1.0
Inactive Modules:
1) ucx/1.20.0 2) openmpi 3) parallel-netcdf
Jos oikeaa versiota ei löydy, moduulijärjestelmä deaktivoi nämä moduulit (katso yllä). Käytännössä moduuli poistetaan käytöstä, 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 ohjelmistopaketteja itse asentamillasi moduuleilla, voit sijoittaa omat moduulitiedostosi kotihakemistoosi. Jos esimerkiksi sijoitat 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.