HPC/Module naming scheme, 2008 edition

From CNM Wiki
Jump to navigation Jump to search

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 the name component alone is possible and will select a default version for module 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: This is done before .bashrc processing.

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