HPC/Module naming scheme, 2008 edition
Module naming scheme
- Most application software is installed under
/opt/soft
- Package directories are named
name-version-build
, e.g./opt/soft/jmol-12.1.37-1
. - Module names are organized by a mostly version-less name, with the version following after a slash:
name/version-build
. Using thename
component alone is possible and will select a default version formodule subcommand
to act upon. Some packages do carry a major version number in their name, notably fftw3 and vasp5.
Default modules being loaded
The following modules are loaded by default for all users:
$ module list Currently Loaded Modulefiles: 1) icc/11/11.1.073 4) openmpi/1.4.5-intel11-2 2) ifort/11/11.1.073 5) profile/user/1.0 3) mkl/10.3.10
- Note: These is done by the system before processing
.bashrc
.
Module conventions on Carbon
Package description
The command module help
brings up a brief description of a package, gives its version number (in the form of the full module name) and will usually contain a link to the package home page and/or documentation, e.g.:
$ module help jmol ----------- Module Specific Help for 'jmol/12.0.34-1' ------------- Jmol is a molecule viewer platform for researchers in chemistry and biochemistry, implemented in Java for multi-platform use. This is the standalone application. It offers high-performance 3D rendering with no hardware requirements and supports many popular file formats. http://jmol.sourceforge.net/ http://wiki.jmol.org/
Package home directory organization
A package directory usually contains Unix-style subdirectories for the various files, which the modulefile usually automatically integrates into your user environment by means of standard environment variables.
bin/
- the main package executable and associated tools and utility scripts; added to
$PATH
. lib/
- static and shared libraries; added to
$LD_LIBRARY_PATH
if it contains shared libs. man/, share/man/, doc/, share/doc/
- man pages (added to
$MANPATH
) and human-readable documentation. include/
- C header files and other script integration files for using library packages; added to
$INCLUDE
. - …
- and others.
Environment variable for package home directory
Most modules will set a convenience variable $NAME_HOME
which points to the package's toplevel directory.
Dashes in the package name are converted to underscores in the environment variable.
This is a convention on Carbon and is useful to inspect binaries or documentation and auxiliary files of a package:
$ module load quantum-espresso
- Inspect package binaries
$ ls $QUANTUM_ESPRESSO_HOME/bin average.x dos.x … band_plot.x dynmat.x … bands.x epsilon.x … bands_FS.x ev.x … …
- Inspect package documentation
$ ls -F $QUANTUM_ESPRESSO_HOME/doc Doc/ atomic_doc/ examples/
- Specifcy link paths in makefiles
$ module load fftw3 $ cat Makefile … LDFLAGS += -L$(FFTW3_HOME)/lib …
Package-specific sample job
Packages that require more than the standard Carbon job template contain a sample job in the toplevel directory:
module load quantum-espresso
cat $QUANTUM_ESPRESSO_HOME/*.job
which gives:
#!/bin/bash
# Job template for Quantum ESPRESSO 4.x on Carbon
#
#PBS -l nodes=1:ppn=8
#PBS -l walltime=1:00:00
#PBS -N qe_jobname
#PBS -A cnm12345
#
# Output and error log:
#PBS -o job.out
#PBS -e job.err
#
## send mail at begin, end, abort, or never (b, e, a, n):
#PBS -m ea
cd $PBS_O_WORKDIR
# job-specific tmp directories -- each is node-local, wiped on exit
export ESPRESSO_TMPDIR=$TMPDIR
mpirun -x ESPRESSO_TMPDIR \
-machinefile $PBS_NODEFILE \
-np $(wc -l < $PBS_NODEFILE) \
pw.x \
< input.txt > output.txt