Difference between revisions of "Creating local module directory"

From ScientificComputing
Jump to: navigation, search
(Using the custom module directory)
Line 13: Line 13:
 
== Using the custom module directory ==
 
== Using the custom module directory ==
  
Now you need to let the <tt>module</tt> command know about your custom directory. Add the following line to your <tt>$HOME/.bash_profile</tt> file:
+
Now you need to let the <tt>module</tt> command know about your custom directory. Add the following line to your <tt>$HOME/.bash_profile</tt> file.
 +
 
 +
For the Euler cluster:
 +
 
 
  module use /cluster/project/leonhard/modules
 
  module use /cluster/project/leonhard/modules
 +
 +
For the Leonhard cluster:
 +
 +
export MODULEPATH=$HOME/modules:$MODULEPATH
 +
 
The <tt>module</tt> command will now see your custom modules the next time you log in. You can also type this command into your current shell to have immediate access.
 
The <tt>module</tt> command will now see your custom modules the next time you log in. You can also type this command into your current shell to have immediate access.
  

Revision as of 11:41, 28 June 2019

Introduction

You can use your own custom modules to setup your environment to run programs that you have installed yourself.

This tutorial will guide you through creating a custom module directory, adding versioned modules for programs, and automatically having these modules available to you upon login. The tutorial will assume you will be managing a set of modules for a whole group, though it is equally applicable to managing a personal set of modules.

Creating a custom module directory

You need to decide on the top-level directory in which to store the module files. Let us assume it is /cluster/project/leonhard/modules, where leonhard should be replaced with your group's storage location. This can also be an arbitrary directory to which you have access, e.g., $HOME/modules. First create the directory and set proper permissions:

[leonhard@euler00 ~]$ mkdir /cluster/project/leonhard/modules
[leonhard@euler00 ~]$ chown leonhard:leonhard-group /cluster/project/leonhard/modules

Using the custom module directory

Now you need to let the module command know about your custom directory. Add the following line to your $HOME/.bash_profile file.

For the Euler cluster:

module use /cluster/project/leonhard/modules

For the Leonhard cluster:

export MODULEPATH=$HOME/modules:$MODULEPATH

The module command will now see your custom modules the next time you log in. You can also type this command into your current shell to have immediate access.

Every group members will need to do this setup step to see the modules.

Creating a versioned module file

Next, you need to create a module file for a program. Assume you have version 1.0 of the basel program located in /cluster/project/leonhard/apps/basel_problem/1.0/bin and it depends on the gmp module. Create the program's module directory:

[leonhard@euler00 ~]$ mkdir /cluster/project/leonhard/modules/basel
[leonhard@euler00 ~]$ chown leonhard:leonhard-group /cluster/project/leonhard/modules/basel

In your favorite editor, edit the /cluster/project/leonhard/modules/basel/1.0 file to contain the following contents:

#%Module1.0
module-whatis "Solve Basel problem"
set helpmsg "Solves the Basel problem."
module load gmp
set topdir "/cluster/project/leonhard/apps/basel_problem/1.0"
prepend-path PATH $topdir/bin

Test that it works:

[leonhard@euler00 ~]$ module avail basel/1.0
[leonhard@euler00 ~]$ module load basel/1.0
[leonhard@euler00 ~]$ module list
Currently Loaded Modulefiles:
 1) modules                  2) gcc/4.8.2(default:4.8)   3) gmp/5.1.3(default:5)     4) basel/1.0