Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
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 exampleModule/1.0 or just module load exampleModule is OK

This feature influenced solutions described below.

 

A)  "Rolling module"

Code Block
titleExemplary call
 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
titleModule wpcdenv
wpcdenv

...

B)  Descriptive but enormously long/strange module name

Code Block
titleExemplary call
module load imasenv/ń/libs/3.0/imas/3.19.1/ual/3.8.2/imaslibs/4.0
  • Module libs will  set up modules from group A and group B
  • Module imaslibs will set up modules from group D

(minus) (minus) Main disadvantage is rather obvious (smile) It would be really annoying  to use such long name... Potential simplifications (like parsing module name) are possible rather theoretically

(plus) 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 (warning)

Module imaslibs

Code Block
titleModule imaslibs
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
titleModule imasenv
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:

  • (plus) Easy to use by users (to use default versions is enough to write module load imaslibsmodule load imasenv)
  • (plus) Flexible: Full names can be specified to use non-default versions of library sets

 

Using default versions
Info
title
  • The end ("tail") of module name can be skipped to use default versions,
so:
  • module load imaslibs/intel/17.0/1.0  is equal to
    • module load imaslibs/intel/17.0  (assuming 1.0 as default version of set of libs)
    • module load imaslibs/intel        (assuming intel/17.0/ as default version of compiler)
    • module load imaslibs              (assuming intel as default compiler)

 

module load imasenv/3.19.1/ual/3.8.2/1.0 is equal to
  • module load imasenv/3.19.1/ual/3.8.2 (assuming 1.0 as default version of set of IMAS libs)
  • module load imasenv/3.19.1                      (assuming 3.8.2 as default version of UAL)
  • module load imasenv                            (assuming 3.19.1 as default version of Data Dictionary)
    • so to use default versions is enough to write
      • module load wpcdenv; module load imasenv
    • If user doesn't load wpcdenv prior to imasenv, the default version of wpcdenv is loaded automatically
    • Full module names can be specified to use non-default versions of library sets