On JUGENE, compilers, tools, some general and scientific applications as well as libraries are provided to users through the module tool. For each application a specific module script is provided that defines all what is needed to let the corresponding application run. In other words, the user's environment is updated dynamically in a suitable manner. Among other configurations, module scripts include definitions of environment variables to make known the paths to executables, libraries, header files etc.
The module concept eases the use of software on JUGENE. There is no need for the user to figure out what is needed and where needed components are stored in the file system in order to use a certain piece of software. Furthermore, it allows providing different versions of a software package to the user; conflicts between different versions are avoided due to the possibility to load a certain configuration set while unloading another one.
On JUGENE there is a distinction between invoked applications on the front-end (login) nodes and back-end (compute) nodes. Applications, that are planned to be made available by modules on the compute nodes are stored under the directory /bgsys/local/ whereas applications planned to be used on the front end are given in /usr/local/ . Therefore, it is important to load the needed modules within the job script if the corresponding application (or library etc.) is needed for the runs on the compute nodes.
The module tool is used on the command line in the following way:
In the following table, the most important options of the module command are shown together with short explanations.
|<no option>||List of available options|
|avail||Lists all available modules|
|list||Lists all currently loaded modules|
|all|load||Loads a module. It is allowed to load more than one module per command invocation.|
|rm|unload||Removes loaded modules. It is allowed to remove more than one module per command invocation.|
|switch|swap <module1> <module2>||Unloads module1 and loads module2|
|show <module>||Shows the actual changes that will take place in the environment when module is loaded|
|help <module>||Provides the user with some information about the module and the corresponding software package.|
The command module avail shows that the modules are organized in categories in order to facilitate the identification of available software package. The following categories - again distinguishing between front-end and back-end - are defined on JUGENE.
Besides those modules that point directly to the corresponding applications, there is a further module named UNITE, which itself contains a whole bunch of modules that focus on analysing and debugging issues. The command module load UNITE makes them available to the user.