HPC/Module naming scheme, 2008 edition: Difference between revisions
mNo edit summary |
|||
(8 intermediate revisions by the same user not shown) | |||
Line 3: | Line 3: | ||
* 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>. | ||
* Module names are organized by a mostly version-less name, with the version following after a slash: <code>''' ''name/version-build'' '''</code>. Using the <code>''name''</code> component alone is possible and will select a default version for <code>module ''subcommand''</code> to act upon. Some packages do carry a major version number in their name, notably fftw3 and vasp5. | * Module names are organized by a mostly version-less name, with the version following after a slash: <code>''' ''name/version-build'' '''</code>. Using the <code>''name''</code> component alone is possible and will select a default version for <code>module ''subcommand''</code> 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 <code>.bashrc</code>. | |||
== Module conventions on Carbon == | |||
=== Package description === | |||
The command <code>module help</code> 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 help jmol''' | ||
Line 15: | Line 27: | ||
http://jmol.sourceforge.net/ | http://jmol.sourceforge.net/ | ||
http://wiki.jmol.org/ | http://wiki.jmol.org/ | ||
=== Environment variable for package home directory === | === Environment variable for package home directory === | ||
Most modules will set a convenience variable <code>''' $''NAME''_HOME'''</code> which points to the package's toplevel directory. | Most modules will set a convenience variable <code>''' $''NAME''_HOME'''</code> which points to the package's toplevel directory. | ||
Dashes in the package name are converted to underscores in the environment variable. | Dashes in the package name are converted to underscores in the environment variable. | ||
Line 55: | Line 45: | ||
Doc/ atomic_doc/ examples/ | Doc/ atomic_doc/ examples/ | ||
; | ; Specify paths in makefiles: | ||
$ '''module load fftw3''' | $ '''module load fftw3''' | ||
$ cat Makefile | $ cat Makefile | ||
… | … | ||
CPPFLAGS += -I'''$(FFTW3_HOME)'''/include | |||
FPPFLAGS += -I'''$(FFTW3_HOME)'''/include | |||
… | … | ||
LDFLAGS += -L'''$(FFTW3_HOME)'''/lib | |||
… | |||
=== 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. | |||
; <code>bin/</code>: the main package executable and associated tools and utility scripts; added to <code>'''$PATH'''</code>. | |||
; <code>lib/</code>: static and shared libraries; added to <code>'''$LD_LIBRARY_PATH'''</code> if it contains shared libs. | |||
; <code>man/, share/man/, doc/, share/doc/</code>: man pages (added to <code>'''$MANPATH'''</code>) and human-readable documentation. | |||
; <code>include/</code>: C header files and other script integration files for using library packages; added to <code>'''$INCLUDE'''</code>. | |||
; …: and others. | |||
=== Package-specific sample job === | === Package-specific sample job === |
Latest revision as of 15:43, June 21, 2017
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/
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/
- Specify paths in makefiles
$ module load fftw3 $ cat Makefile … CPPFLAGS += -I$(FFTW3_HOME)/include FPPFLAGS += -I$(FFTW3_HOME)/include … LDFLAGS += -L$(FFTW3_HOME)/lib …
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.
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