Info |
---|
This document provides a short description of proposed solution. For a more detailed analysis look >>HERE<< |
Table of Contents |
---|
Quickstart
To fully configure your working IMAS environment you have to load two modules:
Code Block |
---|
Table of Contents |
---|
Info | ||||
---|---|---|---|---|
| ||||
module load imasenvwpcdenv[/<compiler_vendor> e.g: module load imasenv/intel |
Libraries / modules to be set:
Code Block |
---|
**********************************************
GROUP A
General purpose tools/libraries, compilers
Dependency: NONE
**********************************************
* intel
* gcc
* intelmpi
* g95
* java
* python
* matlab
* netbeans
* maven
* scripts
* itmtools
* totalview
* cmake
* mdsplus
* blitz
* jaxfront
**********************************************
GROUP B
General purpose tools/libraries
(plus EUROfusion/IMAS libs and tools that NOT DEPEND on Data Dictionary)
Dependency: compilers (group A)
**********************************************
* hdf5
* blas
* lapack
* fftw
* pspline
* slatec
* mkl
* matheval
* netcdf
**********************************************
GROUP C
IMAS (UAL) library
Dependency: compilers (group A), third parties libraries (group B)
Data Dictionary
**********************************************
* imas
**********************************************
GROUP D
EUROfusion/IMAS libs and tools that DEPEND on Data Dictionary/UAL
Dependency: compilers (group A), third parties libraries (group B)
Data Dictionary, imas (group C)
**********************************************
* interpos
* fc2k
* kepler
* idstools
* pyual
* libbds (imas dependency should be removed)
* xmllib (imas dependency should be removed) |
Please notice, that beside dependencies mentioned above, some other factors should be considered, (e.g.
versions (compilers), engine (imas) etc) to define the users environment.
Analyzed solutions
Warning |
---|
Please keep in mind a "module" mechanism limitations: among the other, "module" doesn't allow to skip the begin or the middle of module name. Only the "tail" of module name can be skipped (defaulted) So, e.g.module load exampleModule/1.0/requiredLib/2.0 cannot be called like module load exampleModule/requiredLib/2.0, but module load This feature influenced solutions described below. |
A) "Rolling module"
Code Block | ||
---|---|---|
| ||
module load imasenv/intel/3.19.1/ |
...
/<compiler_version>/<version of this module>]
module load imasenv[/<imas_ver>/ual/<engine_ver>/<version of this module>]
part in brackets [] can be skipped to use defaults |
...
Module wpcdenv
Loading libraries/tools not depending on IMAS/DD
Code Block | ||
---|---|---|
| ||
wpcdenv |
...
B) Descriptive but enormously long/strange module name
Code Block | ||
---|---|---|
| ||
module load imasenv/ń/libs/3.0/imas/3.19.1/ual/3.8.2/imaslibs/4.0 |
- Module
libs
will set up modules fromgroup A
andgroup B
- Module
imaslibs
will set up modules fromgroup D
Main disadvantage is rather obvious
It would be really annoying to use such long name... Potential simplifications (like parsing module name) are possible rather theoretically
Full flexibility of setting versions
Setting up IMAS environment
To overcome disadvantages of solutions presented above, and keep a desired level of flexibility, user working environment can be set by two (meta)modules
Module imaslibs
Code Block | ||
---|---|---|
| ||
imaslibs/<compiler_vendor>/<compiler_version>/<version of this module> e.g. imaslibswpcdenv[/intel/17.0/1.0] <= part in brackets can be skipped to use defaults |
...
- Compiler
(e.g. intel/17.0
) - All components independent from IMAS/Data Dictionary (group B) , gathered together as a set of modules. Such set of modules will have its own version (e.g.
1.0
)
Module imasenv
Loading libraries/tools depending on IMAS/DD
Code Block | ||
---|---|---|
| ||
imasenv/<imas_ver>/ual/<engine_ver>/<version of this module> e.g. imasenv[/3.19.1/ual/3.8.2/1.0] <= part in brackets can be skipped to use defaults |
...
- imas module
(e.g.
imasenv[/3.19.1/ual/3.8.2 ) - All components dependent on IMAS/Data Dictionary (group D), gathered together as a set of modules. Such set of modules will have its own version (e.g.
1.0
)
...
Easy to use by users (to use default versions is enough to write
module load imaslibs
;
...
...
Info | title | Using default versions
---|
module load imasenv/3.19.1/ual/3.8.2/1.0 is equal to imasenv/3.19.1/ual/3.8.2 (assuming 1.0 as default version of set of IMAS libs)imasenv/3.19.1 (assuming 3.8.2 as default version of UAL)imasenv (assuming 3.19.1 as default version of Data Dictionary)
|