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:
Requested feature
Easy configuration of IMAS working environment through setting up a predefined set of IMAS libraries
using simple call of the module imasenv
:
Code Block |
---|
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
Dependency: compilers (group A)
**********************************************
* hdf5
* blas
* lapack
* fftw
* pspline
* slatec
* mkl
* matheval
* netcdf
**********************************************
GROUP C
General purpose tools/libraries
Dependency: compilers (group A), third parties libraries (group B)
Data Dictionary
**********************************************
* imas
**********************************************
GROUP D
General purpose tools/libraries
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
)
Presented solution:
Easy to use by users (to use default versions is enough to write
module load imaslibs
;module load imasenv)
Flexible: Full names can be specified to use non-default versions of library sets
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)
|