|
[[_TOC_]]
|
|
[[_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 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.
|
|
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 |
... | @@ -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.
|
|
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 purge
|
|
$ module avail
|
|
$ module avail
|
|
--------------------------------------------------- /opt/ohpc/pub/oca/modulefiles ---------------------------------------------------
|
|
--------------------------------------------------- /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
|
|
$ module load intel-gnu8-runtime
|
... | @@ -28,10 +40,30 @@ $ module avail |
... | @@ -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. |