HPC/Module naming scheme 2016: Difference between revisions
mNo edit summary |
|||
Line 1: | Line 1: | ||
== Configuration files used == | |||
{| class="wikitable" style="text-align:center; margin: 1em auto 1em auto;" | {| class="wikitable" style="text-align:center; margin: 1em auto 1em auto;" | ||
|- style="background:#eee;" | |- style="background:#eee;" | ||
Line 31: | Line 33: | ||
# Place all your module selections for CentOS-6 in <code>~/.modules-carbon-2</code>. Copy and edit from the .*-1 file. | # Place all your module selections for CentOS-6 in <code>~/.modules-carbon-2</code>. Copy and edit from the .*-1 file. | ||
== | == New and changed features == | ||
=== Module | === 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 | 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' … | … ERROR:151: '''Module''' 'troubled_name' '''depends on one of the module(s)''' 'other_name1 other_name2' … | ||
To resolve this error, edit your <code>~/.bashrc</code> or <code>.modules-carbon-2</code> file and add <code>module load …</code> commands for the needed module(s) ''other_names'' before loading "troubled_name". | To resolve this error, edit your <code>~/.bashrc</code> or <code>.modules-carbon-2</code> file and add <code>module load …</code> 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 <code><TAB></code> key and the name will be expanded to <code>fftw3/</code> and you'll see two possible completing names, with the cursor waiting 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 <code>O</code>, hit the <code><TAB></code> 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''' _ | |||
=== Ignoring system defaults === | |||
By default, on Carbon the Intel compilers and the OpenMPI flavor of MPI continue to be pre-loaded for you. In other words, without any module customization, you'd see from the <code>module list</code> command: | By default, on Carbon the Intel compilers and the OpenMPI flavor of MPI continue to be pre-loaded for you. In other words, without any module customization, you'd see from the <code>module list</code> command: | ||
<source lang="bash"> | <source lang="bash"> | ||
Line 49: | Line 63: | ||
</source> | </source> | ||
and afterwards use <code>module load …</code> to only load your preferred compiler and MPI flavors, and applications depending on them. | and afterwards use <code>module load …</code> to only load your preferred compiler and MPI flavors, and applications depending on them. | ||
Revision as of 20:12, August 10, 2015
Configuration files used
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 |
Configuration steps
CentOS-independent module selection (recommended)
To switch over to new hierarchical module names on both CentOS releases it's easiest to continue making all your module choices in ~/.bashrc
, but you have to signal on the older platform to use the new module style:
- 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 onlyname
. This is the recommended 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
.
- Remove version numbers from module names of the old-style
CentOS-dependent module selection
If you encounter difficulties with making your module selection work in both CentOS-5 and CentOS-6, use separate configurations:
- Move all your previous module commands from
.bashrc
to~/.modules-carbon-1
, where they will apply only on CentOS-5. - Place all your module selections for CentOS-6 in
~/.modules-carbon-2
. Copy and edit from the .*-1 file.
New and changed features
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 waiting 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 _
Ignoring system defaults
By default, on Carbon the Intel compilers and the OpenMPI flavor of MPI continue to be pre-loaded for you. In other words, without any module customization, you'd see from the module list
command:
module list
Currently Loaded Modulefiles: 1) intel/15/15.0.2 2) openmpi/1.4/INTEL/1.4.5-intel12-2
You can now safely use the command
module purge
and afterwards use module load …
to only load your preferred compiler and MPI flavors, and applications depending on them.