HPC/Module naming scheme 2016
You have files | Remark | CentOS-5 uses | CentOS-6 uses | |||
---|---|---|---|---|---|---|
names | files | names | files | |||
– | – | current situation | old | .bashrc only | new | .bashrc only |
.modules-carbon-1 | – | avoid | old | .modules-carbon-1 and .bashrc | .bashrc only (.*-1 file is ignored) | |
– | .modules-carbon-2 | switch over, recommended | new | .modules-carbon-2 and .bashrc | .modules-carbon-2 and .bashrc | |
.modules-carbon-1 | .modules-carbon-2 | for advanced cases | old | .modules-carbon-1 and .bashrc | .modules-carbon-2 and .bashrc |
Switching procedure
To switch over to hierarchical names on both CentOS releases:
- Create a customization file for new names, but leave it empty (you'll configure your choices in the next step). Use the command:
touch ~/.modules-carbon-2
- Edit your
.bashrc
file and update your module selections as follows:- Remove version numbers from module names of the old-style name/version, leaving only name. This is the preferred approach, as you will automatically benefit from future upgrades.
- To insist on a specific version using new-style names, append
…/mpiname/compilername/version
as needed. To see available flavors and versions, separately run the commandmodule avail
name
.
Module Dependencies
New-style modules are less implicit (less automatic) in loading modules that they depend on. This means prior to loading a more advanced module you must load all its prerequisites, chosen from the same MPI and (usually) compiler flavor as the advanced module. A missing prerequisite will give errors of the form
… ERROR:151: Module 'troubled_name' depends on one of the module(s) 'other_name1 other_name2' …
To resolve this error, edit your ~/.bashrc
or .modules-carbon-2
file and add module load …
commands for the needed module(s) other_names before loading "troubled_name".
Name completion
When working interactively in a terminal, you can use a "completion" feature of the Bash shell to complete a partially typed module name and show all names available for the name typed so far. For example:
At a shell prompt (shown as "$"), type:
$ module load fft
Press the <TAB>
key and the name will be expanded to fftw3/
and you'll see two possible completing names, with the cursor wating at the end of the longest common substring:
$ module load fftw3/_ fftw3/INTEL/3.3.2-1 fftw3/OPENMPI-1.4/INTEL/3.3.2-4
Type the letter O
, hit the <TAB>
key again, and the now single complete name will be completed, with the cursor waiting after an additional space character:
$ module load fftw3/O<TAB> $ module module load fftw3/OPENMPI-1.4/INTEL/3.3.2-4 _