HPC/Module naming scheme 2016: Difference between revisions

From CNM Wiki
< HPC
Jump to navigation Jump to search
Line 20: Line 20:
== Configuration steps ==
== Configuration steps ==
=== New-style modules only (recommended) ===
=== New-style modules only (recommended) ===
To switch over to new hierarchical module names on both CentOS releases it's perhaps easiest to continue making all your module choices in <code>~/.bashrc</code>, but you have to signal on the older platform to use the new module style:
To switch over to new hierarchical module names on both CentOS releases you could continue making all your module choices in <code>~/.bashrc</code> and simply signal on the older platform to use the new module style by creating an empty new-style customization file: <code>touch ~/.modules-el6</code> .
 
<!--
# Create a customization file for new names, but leave it empty (you'll configure your choices in the next step). Use the command: <source lang="bash">touch ~/.modules-el6</source>
# Create a customization file for new names, but leave it empty (you'll configure your choices in the next step). Use the command: <source lang="bash">touch ~/.modules-el6</source>
# Edit your <code>.bashrc</code> file and update your module selections as follows:
# Edit your <code>.bashrc</code> file and update your module selections 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 versions.
-->
 
However, it's perhaps cleaner to move the module selection into their dedicated files:
# Move your previous module selections inro a conspicuously named but otherwise unused file, e.g., <code>.modules-el5.inactive</code>.
# Duplicate the file and adapt its contents to new module 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 insist on a specific version for a package affected by the new-style names, 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 affected by the new-style names, 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>.
Alternatively:
# Keep a copy of your previous module selections in a conspicuously named but unused file, e.g., <code>.modules-el5.inactive</code>.
# Adapt the file to new module names.
# Remove all previous module customizations from <code>~/.bashrc</code>.
# Remove all previous module customizations from <code>~/.bashrc</code>.
# Test.
<source lang="bash">
<source lang="bash">
cd ~
cd ~
Line 38: Line 40:
vi .modules-el6    # adapt module names
vi .modules-el6    # adapt module names
vi .bashrc        # remove all lines with "module" commands
vi .bashrc        # remove all lines with "module" commands
exec bash -l
module list
</source>
</source>


=== CentOS-dependent module selection ===
=== CentOS-dependent module selection ===
If you encounter difficulties with making your module selection work in both CentOS-5 and CentOS-6, use separate configurations:
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 <code>.bashrc</code> to <code>~/.modules-el5</code>, where they will apply only on CentOS-5.
# Move all your previous module commands from <code>.bashrc</code> to <code>~/.modules-el5</code>, where they will apply only on CentOS-5.
# Place all your module selections for CentOS-6 in <code>~/.modules-el6</code>. Get started using the contents of the .*-el5 version.
# Place all your module selections for CentOS-6 in <code>~/.modules-el6</code>. Get started using the contents of the .*-el5 version.
-->
# Follow the steps as above.
# Re-activate the older module selection.
# Test.
<source lang="bash">
cd ~
mv .modules-el5.inactive .modules-el5
exec bash -l
module list
</source>

Revision as of 18:01, August 29, 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

Configuration steps

New-style modules only (recommended)

To switch over to new hierarchical module names on both CentOS releases you could continue making all your module choices in ~/.bashrc and simply signal on the older platform to use the new module style by creating an empty new-style customization file: touch ~/.modules-el6 .

However, it's perhaps cleaner to move the module selection into their dedicated files:

  1. Move your previous module selections inro a conspicuously named but otherwise unused file, e.g., .modules-el5.inactive.
  2. Duplicate the file and adapt its contents to new module names, as follows:
    • Remove version numbers from module names of the old-style packagename/version, leaving only packagename. This is the recommended approach, as you will automatically benefit from future updates.
    • To insist on a specific version for a package affected by the new-style names, use the form packagename/compilername/version or packagename/mpiname/compilername/version as appropriate. To see available flavors and versions, separately run the command module avail packagename.
  3. Remove all previous module customizations from ~/.bashrc.
  4. Test.
cd ~
grep module .bashrc > .modules-el5.inactive
cp .modules-el5.inactive .modules-el6

vi .modules-el6    # adapt module names
vi .bashrc         # remove all lines with "module" commands

exec bash -l
module list

CentOS-dependent module selection

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

  1. Follow the steps as above.
  2. Re-activate the older module selection.
  3. Test.
cd ~
mv .modules-el5.inactive .modules-el5

exec bash -l
module list