HPC/Module naming scheme, 2008 edition: Difference between revisions

From CNM Wiki
< HPC
Jump to navigation Jump to search
mNo edit summary
mNo edit summary
Line 1: Line 1:
== Module naming ==
== Module naming scheme ==
* Most application software is installed under <code>'''/opt/soft'''</code>
* Most application software is installed under <code>'''/opt/soft'''</code>
* Package directories are named <code>''' ''name-version-build'' '''</code>, e.g. <code>/opt/soft/jmol-12.1.37-1</code>.
* Package directories are named <code>''' ''name-version-build'' '''</code>, e.g. <code>/opt/soft/jmol-12.1.37-1</code>.

Revision as of 22:44, November 17, 2016

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.
  • 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

Conventions on Carbon

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