Difference between revisions of "Modules and applications"

From ScientificComputing
Jump to: navigation, search
Line 39: Line 39:
  
 
== Example ==  
 
== Example ==  
In this example we load GCC compiler version 4.8.2 and Python 3.7.1 in the old software stack, switch to the new software stack where we load GCC 6.3.0 and Python 3.8.5, then switch back to the old software stack to load Python 3.7.1 again
+
In this example we load GCC compiler version 4.8.2 and the most recent Python version in the old software stack, switch to the new software stack where we load GCC 6.3.0 and the most recent Python version, then switch back to the old software stack to load Python again
  
Loading Python in the old software stack:
+
Load GCC and new module in the old software stack:
  $ module load new gcc/4.8.2 python/3.7.1
+
  $ module load new gcc/4.8.2
 +
$ module avail python
 +
 +
------------------------------ /cluster/apps/modules/modulefiles ------------------------------
 +
python/2.7.12  python/2.7.13  python/2.7.6(2.7)  python/2.7.9  python/3.3.3(3:3.3)  python/3.4.3      python/3.6.0
 +
 +
------------------------------ /cluster/apps/modules/new --------------------------------------
 +
python/2.7.14    python/2.7.6_UCS4 python/3.6.1      python/3.7.1
 +
 
 +
Load the newest Python
 +
$ module load python/3.7.1
 
  Autoloading openblas/0.2.13_seq
 
  Autoloading openblas/0.2.13_seq
 +
 
  $ module list
 
  $ module list
 
  Currently Loaded Modulefiles:
 
  Currently Loaded Modulefiles:
Line 56: Line 67:
 
   1) StdEnv  2) gcc/4.8.5
 
   1) StdEnv  2) gcc/4.8.5
  
Load Python 3.8.5
+
Load GCC 6.3.0 and check Python version
  $ module load gcc/6.3.0 python/3.8.5
+
  $ module load gcc/6.3.0
 
   
 
   
 
  The following have been reloaded with a version change:
 
  The following have been reloaded with a version change:
 
   1) gcc/4.8.5 => gcc/6.3.0
 
   1) gcc/4.8.5 => gcc/6.3.0
  
 +
$ module avail python
 +
 +
--------------------------- /cluster/apps/lmodules/Compiler/gcc/6.3.0 -------------------------------------
 +
  python/2.7.14    python/3.6.4    python/3.7.4    python/3.8.5 (D)    python_gpu/3.8.5
 +
 +
  Where:
 +
  D:  Default Module
 +
 +
Use "module spider" to find all possible modules.
 +
Use "module keyword key1 key2 ..." to search for all possible modules matching any of the "keys".
 +
 +
Load new Python
 +
$ module load python/3.8.5
 +
$ module list
 +
 +
Currently Loaded Modules:
 +
  1) StdEnv  2) gcc/6.3.0  3) openblas/0.2.20  4) python/3.8.5
 +
 
Switching back to the old software stack:
 
Switching back to the old software stack:
 
 
  $ lmod2env
 
  $ lmod2env
 
  $ module list
 
  $ module list

Revision as of 14:24, 20 January 2021

What is a Modules package?

A Modules package is a tool to let users to easily configure their computing environment which includes

  • Development tools
  • Scientific libraries
  • Communication libraries (MPI)
  • Third-party applications

We employ two types of Modules packages:

  • LMOD Modules implemented on Euler and Leonhard Open
  • Environment Modules implemented on Euler


Two software stacks on Euler

While Leonhard Open contains only one software stack which uses LMOD Modules, Euler contains two software stacks:

  • The new software stack uses LMOD Modules
  • The old software stack uses Environment Modules

Upon your login on Euler, the old software stack is set by default. You can switch from the old software stack to the new software stack by typing the command:

$ env2lmod

and vice-versa

$ lmod2env

All new software is installed exclusively in the new software stack.

Example

In this example we load GCC compiler version 4.8.2 and the most recent Python version in the old software stack, switch to the new software stack where we load GCC 6.3.0 and the most recent Python version, then switch back to the old software stack to load Python again

Load GCC and new module in the old software stack:

$ module load new gcc/4.8.2
$ module avail python

------------------------------ /cluster/apps/modules/modulefiles ------------------------------
python/2.7.12  python/2.7.13  python/2.7.6(2.7)   python/2.7.9  python/3.3.3(3:3.3)   python/3.4.3      python/3.6.0

------------------------------ /cluster/apps/modules/new --------------------------------------
python/2.7.14     python/2.7.6_UCS4 python/3.6.1      python/3.7.1

Load the newest Python

$ module load python/3.7.1
Autoloading openblas/0.2.13_seq
$ module list
Currently Loaded Modulefiles:
  1) modules                            3) gcc/4.8.2(default:4.8)             5) python/3.7.1
  2) new                                4) openblas/0.2.13_seq(default:seq)

Switching to the new software stack:

$ env2lmod
$ module list  

Currently Loaded Modules:
  1) StdEnv   2) gcc/4.8.5

Load GCC 6.3.0 and check Python version

$ module load gcc/6.3.0

The following have been reloaded with a version change:
  1) gcc/4.8.5 => gcc/6.3.0
$ module avail python

--------------------------- /cluster/apps/lmodules/Compiler/gcc/6.3.0 -------------------------------------
  python/2.7.14    python/3.6.4    python/3.7.4    python/3.8.5 (D)    python_gpu/3.8.5

 Where:
  D:  Default Module

Use "module spider" to find all possible modules.
Use "module keyword key1 key2 ..." to search for all possible modules matching any of the "keys".

Load new Python

$ module load python/3.8.5
$ module list

Currently Loaded Modules:
 1) StdEnv   2) gcc/6.3.0   3) openblas/0.2.20   4) python/3.8.5

Switching back to the old software stack:

$ lmod2env
$ module list
Currently Loaded Modulefiles:
  1) modules

Load Python 3.7.1 again

$ module load new gcc/4.8.2 python/3.7.1
Autoloading openblas/0.2.13_seq
$ module list
Currently Loaded Modulefiles:
  1) modules                            3) gcc/4.8.2(default:4.8)             5) python/3.7.1
  2) new                                4) openblas/0.2.13_seq(default:seq)