Update Software Environment authored by Alain O' Miniussi's avatar Alain O' Miniussi
[[_TOC_]]
## Software development environment
The main software environment is based on the Intel solution for clusters (could be called "Cluster Edition"). It provides:
* The Intel compilers: icc (C), icpc (C++), ifort (Fortran) compilers.
* The Intel MPI environment.
* The Intel python environment.
* And other stuff.
That environment relies on a Gnu runtime distribution for most the its runtime. Since the default Gnu runtime on our CentOS distribution is quite antique, we decided to rely on gcc 8.3 instead.
This technicality is probably mostly relevant to C++ developers.
## The module system
The software environment is managed through [lmod](https://lmod.readthedocs.io/en/latest/). Please have a look at the [User Guide](https://lmod.readthedocs.io/en/latest/010_user.html) if you are not already familiar with it.
......@@ -7,16 +19,16 @@ The software environment is managed through [lmod](https://lmod.readthedocs.io/e
Note that `module avail` does not display all the potentially available modules, only those available with the currently loaded modules.
For example, let say the module `hdf5` depends on the module `intel-gnu8-runtime`, it will only appear once `intel-gnu8-runtime` is loaded:
For example, let say the module `hdf5` depends on the module `intel-gnu8-runtime`, it will only appear once `intel-gnu8-runtime` is loaded[^1]:
```
$ module purge
$ module avail
--------------------------------------------------- /opt/ohpc/pub/oca/modulefiles ---------------------------------------------------
intel-gnu8-runtime/19.0.5.281
cmake/3.18.0 intel-gnu8-runtime/19.0.5.281 ne/3.3.0
[...]
```
We only got the "root" module. We need to load it to get the dependent ones:
Here, We only see utility tool and the **intel-gnu8-runtime** module which provide the Intel based software environment. None the the libraries or tools based on that environment are shown until it's loaded:
```
$ module load intel-gnu8-runtime
......@@ -28,10 +40,30 @@ $ module avail
[...]
$
```
You can use `module spider` to get the list of available modules.
## The oca root module
You can use `module spider` to get the list of available modules regardless of what is already loaded and `module spider <modulename>` to get specific information on how to load a specific module.
## Using python
The supported python is the one provided with the Intel environment (**intel-gnu8-runtime**, which must be loaded first) and is provided through module **intelpython3**.
```
11:50:54 [alainm@castor ~]# module purge
11:51:01 [alainm@castor ~]# module load intel-gnu8-runtime
11:51:11 [alainm@castor ~]# module load intelpython3
11:51:14 [alainm@castor ~]# python
Python 3.6.9 |Intel Corporation| (default, Aug 18 2019, 19:47:51)
[GCC 4.8.2 20140120 (Red Hat 4.8.2-15)] on linux
Type "help", "copyright", "credits" or "license" for more information.
Intel(R) Distribution for Python is brought to you by Intel Corporation.
Please check out: https://software.intel.com/en-us/python-distribution
>>> import numpy as np
>>> np.zeros(10)
array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])
>>> ^D
11:51:42 [alainm@castor ~]#
```
The supported module are dependent on the **oca** module, which should always be loaded.
It is the root of a software environment built on Intel compilers using a fairly recent (8.x) Gnu runtime.
[^1]: most libraries depend on the **intel-gnu8-runtime**, since it;s one we use to build them.