HPC/Module naming scheme 2016: Difference between revisions

From CNM Wiki
< HPC
Jump to navigation Jump to search
mNo edit summary
Line 19: Line 19:


== Migration to new-style module names ==
== Migration to new-style module names ==
=== Rules ===
=== Name changes needed ===
Adapt <code>module</code> commands present in your shell "dot"-files and job scripts to new-style names as follows:
In your shell "dot"-files and job scripts, adapt the names of modules that you use for <code>module load ''name''</code> commands to new-style names as follows:
* Remove version numbers from module names of the old-style <code>''packagename/version''</code>, leaving only <code>''packagename''</code>. This is the recommended approach, as you will automatically benefit from future updates.
* To use the latest or automatically selected version of a package, remove version numbers from old-style module names of the form<code>''packagename/version''</code>, leaving only <code>''packagename''</code>. 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 the new style, use the form  <code>''packagename/compilername/version''</code> or <code>''packagename/mpiname/compilername/version''</code> as appropriate. To see available flavors and versions, separately run the command <code>module avail ''packagename''</code>.
* 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):
**: <code>module avail ''packagename''</code>.
** Choose the new-style name up to the desired specificity. You may leave out trailing name or directory parts.
**: For instance, instead of <code>vasp5/openmpi-1.4/intel/5.3.3p3-mkl-3</code> write <code>vasp5/openmpi-1.4</code>


=== Configure in .bashrc ===
=== Configure in .bashrc ===

Revision as of 21:47, December 2, 2015

Configuration files used

You have files:
.bashrc and …
Remark CentOS-5 uses: CentOS-6 uses:
module names files module names files
Starting situation. old .bashrc only new .bashrc only
.modules-el6 Switch over, recommended. new .modules-el6 and .bashrc .modules-el6 and .bashrc
.modules-el5 Avoid! – file ignored on EL6. old .modules-el5 and .bashrc .bashrc only
.modules-el5 .modules-el6 For advanced users. old .modules-el5 and .bashrc .modules-el6 and .bashrc

Migration to new-style module names

Name changes needed

In your shell "dot"-files and job scripts, adapt the names of modules that you use for module load name commands to new-style names as follows:

  • To use the latest or automatically selected version of a package, remove version numbers from old-style module names of the formpackagename/version, leaving only packagename. 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/openmpi-1.4/intel/5.3.3p3-mkl-3 write vasp5/openmpi-1.4

Configure in .bashrc

To switch over to new-style module names on both CentOS releases you could continue making all your module choices in ~/.bashrc.

vi .bashrc
# or:
nano .bashrc
Apply the changes shown in the #Rules section.
  • Tell CentOS-5 nodes to offer the new-style module catalog instead of the old one. To do so, simply create an empty customization file:
touch ~/.modules-el6

Configure in dedicated files

It is perhaps cleaner to perform the module selection in files dedicated for each CentOS release, so that you can better address possible incompatibilities. To migrate your existing configuration:

  • Move your previous module selections into a conspicuously named but otherwise unused file, e.g., .modules-el5.inactive.
cd      # Go to home directory
grep -A 1  module .bashrc > .modules-el5.inactive
  • Duplicate the file.
cp .modules-el5.inactive .modules-el6
  • Adapt contents to new module names, just as shown for .bashrc in the previous section. Clean up errant lines that the grep above might have included.
vi .modules-el6
# or:
nano .modules-el6
Apply the changes shown in the #Rules section.
  • Edit ~/.bashrc and remove all lines with module commands.
vi .bashrc
  • Test.
bash -l     # open a sub-shell (option is lowercase L)
module list
exit        # leave the sub-shell

CentOS-dependent module selection

If you encounter difficulties with making your module selection work simultaneously for CentOS-5 and CentOS-6, use separate configurations instead.

  • Re-activate the older module selection.
cd      # Go to home directory
mv .modules-el5.inactive .modules-el5
vi .modules-el5    # clean up errant lines