HPC/Module naming scheme 2016: Difference between revisions
m (→Introduction) |
m (→Introduction) |
||
Line 8: | Line 8: | ||
** The MPI component is only present when an application uses MPI. | ** The MPI component is only present when an application uses MPI. | ||
** These name components make it more apparent which set of tools was used to compile the given application, and thus usually which modules are needed to run that application. | ** These name components make it more apparent which set of tools was used to compile the given application, and thus usually which modules are needed to run that application. | ||
* A default module set is ''no longer loaded''. | |||
: This is born of necessity to because still useful older applications were compiled with older MPI versions (typically OpenMPI-1.4) that cannot coexist with newer versions (OpenMPI-1.8, 1.10, or Intel-MPI-5.x). | |||
* Newer modules no longer automatically load their compiler and MPI depenencies. Again, this is because the system is much less homogeneous than was possible in the past. | |||
== Configuration files used == | == Configuration files used == |
Revision as of 23:24, February 19, 2016
Introduction
The way the environmen modules are named and loaded on Carbon has changed. This decision was necessary because the increasing complexity and inter-dependence of modules. The changes are:
- Module names now looks like relative directory paths.
- Names components may include: the main version number of an application, the type of compiler used, and the MPI flavor used.
- The compiler name components is typically present when an application was compiled on Carbon. Is is typically not used (and not needed) for applications installed as binary package.
- The MPI component is only present when an application uses MPI.
- These name components make it more apparent which set of tools was used to compile the given application, and thus usually which modules are needed to run that application.
- A default module set is no longer loaded.
- This is born of necessity to because still useful older applications were compiled with older MPI versions (typically OpenMPI-1.4) that cannot coexist with newer versions (OpenMPI-1.8, 1.10, or Intel-MPI-5.x).
- Newer modules no longer automatically load their compiler and MPI depenencies. Again, this is because the system is much less homogeneous than was possible in the past.
Configuration files used
You have files: .bashrc and … |
Remark | CentOS-5 uses: | CentOS-6 uses: | |||
---|---|---|---|---|---|---|
files | module names | files | module names | |||
– | – | Starting situation. | .bashrc only | version 1 | .bashrc only | version 2 |
– | .modules-2 | Switch over, recommended. | .modules-2 and .bashrc | version 2 | .modules-2 and .bashrc | |
.modules-1 | – | Only recommended during transition. | .modules-1 and .bashrc | version 1 | .bashrc only | |
.modules-1 | .modules-2 | For advanced users. | .modules-1 and .bashrc | version 1 | .modules-2 and .bashrc |
New-style module names
You may need to adapt the module names that you placed in your shell startup and job files to the new more hierarchical scheme. For most modules, with exceptions show below, the leading name component (the part before any "/") is the same in the old and new naming schemes. What always differs are the name parts after the first slash.
Name change rules
- To use the latest or automatically selected version of a package, remove version numbers from old-style module names of the form
packagename/version
, leaving onlypackagename
. This is the recommended approach, as you will automatically benefit from future updates and maintenance builds. - To insist on a specific version for a package in new style names:
- Inspect the available flavors and versions (some older modules were not migrated):
module avail packagename
.
- Choose the new-style name up to the desired specificity. You may leave out trailing name or directory parts.
- For instance, instead of
vasp5/5.3/openmpi-1.4/intel/5.3.3p3-mkl-3
you may writevasp5/5.3/openmpi-1.4
orvasp5/5.3
, letting the system choose the versions for MPI and compiler that are chosen as defaults at a given time.
- For instance, instead of
- Inspect the available flavors and versions (some older modules were not migrated):
Renamed modules
For the following modules the newer naming convention allowed for and thus uses more consistent names:
OLD NEW
-------------------------------------
asap3 asap/3
ase2 ase/2
ase3 ase/3
g09 gaussian/09
GaussView gaussview (lowercase)
- The modules
fftw3
andvasp5
did not change name due to more entrenched usage in the package itself, Unix group names, and compilation dependencies.
Determining default module versions
The module avail
command under CentOS-6 no longer includes the marker "(default)"
when one has been set in a .version
file.
I am not sure if this is a bug or by design, but the change certainly makes the output more consistent.
To determine which module will be loaded when an abbreviated name is used, I recommend to inspect the first relevant line in the output of one of these commands:
module show name module help name
Customizing module selection by OS release
Configure in .bashrc
To switch over to new-style module names entirely, on both CentOS releases, you could continue using only ~/.bashrc
.
To do this:
- Tell CentOS-5 nodes to offer you the new-style module catalog instead of the old one. To do so, simply create an empty customization file:
touch ~/.modules-2
- Then, apply the changes shown in the #Name change rules section above:
vi .bashrc
# or:
nano .bashrc
- Use a text editor of your choice, such as
nano
orvi
.
Configure in dedicated files
It is perhaps cleaner to perform the module selection in files dedicated for each CentOS release, so that you can make adjustments independently.
To migrate your existing configuration, manage the following files:
.bashrc .modules-1 .modules-2
Use a helper application to get you started:
modules-migrate
Here is an example of what you might see:
$ modules-migrate This application will help you adapt your environment-modules customizations to Carbon's naming scheme updated for 2016. Your module commands will be moved from .bashrc into files .modules-1 and .modules-2, so that a node's operating system sees only module names in the appropriate scheme. The file text manipulation done here is fairly basic. You will have opportunities to review and edit your changes. Continue? [Y/n] y ====================================================================== diff of changes from .bashrc: ====================================================================== 19,21c19,21 < module load vasp5 < module load g09/D.01.x86_64-2 < module load GaussView --- > # module load vasp5 > # module load g09/D.01.x86_64-2 > # module load GaussView Accept changes in .bashrc? [Y/n] y Putting in place ... `.bashrc.tentative' -> `.bashrc' Opening text editor for .modules-1.tentative .modules-2.tentative ... Continue? [Y/n] y
- (editor session omitted.)
~ ~ ~ ====================================================================== Review: "module" lines in new files: ====================================================================== ==> .modules-1.tentative <== # Carbon modules initialization for v1-style module names, used on CentOS-5. # To stop using v1-style modules, remove this file. # # Initially extracted from .bashrc by modules-migrate . # # This file is in TCL syntax. module load vasp5 module load g09/D.01.x86_64-2 module load GaussView # vim:syntax=tcl: ==> .modules-2.tentative <== # Carbon modules initialization for v2-style module names, used on CentOS-6. # Also used on CentOS-5 if .modules-1 does not exist. # # Initially extracted from .bashrc by modules-migrate . # # This file is in TCL syntax. module load vasp5 module load gaussian/09/D.01.x86_64-2 module load gaussview # vim:syntax=tcl: ====================================================================== Accept changes (a), Edit (e), or Quit (q)? a Renaming files ... `.modules-1.tentative' -> `.modules-1' `.modules-2.tentative' -> `.modules-2' Done.
- Test – same as in previous section.