HPC/Module naming scheme, 2008 edition
< HPC
Jump to navigation
Jump to search
Module Conventions on Carbon, 2008 edition
- 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. module help
briefly describes a package, gives its version number (in the module path) and will usually contain a link to its home page.
$ 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/
- Default modules are loaded by
/etc/profile.d/zz-moduleuse.sh
. (The strange name form ensures this profile segment is loaded last.) They currently are:
$ module list Currently Loaded Modulefiles: 1) moab/6.0.3-1 4) icc/11/11.1.073 2) gold/2.1.11.0-4 5) ifort/11/11.1.073 3) openmpi/1.4.3-intel11-1 6) mkl/10.2.6.038
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