CVMFS Modules

Intro to CVMFS

Full documentation for the CernVM-File System (CVMFS) is available here which provides an introduction:

"The CernVM-File System (CernVM-FS) provides a scalable, reliable and low-maintenance software distribution service. It was developed to assist High Energy Physics (HEP) collaborations to deploy software on the worldwide- distributed computing infrastructure used to run data processing applications. CernVM-FS is implemented as a POSIX read-only file system in user space (a FUSE module). Files and directories are hosted on standard web servers and mounted in the universal namespace /cvmfs. Internally, CernVM-FS uses content-addressable storage and Merkle trees in order to maintain file data and meta-data. CernVM-FS uses outgoing HTTP connections only, thereby it avoids most of the firewall issues of other network file systems. It transfers data and meta-data on demand and verifies data integrity by cryptographic hashes."

CVMFS might be thought of as a content distribution network for software which makes centrally managed and updated software repositories available across resources. This allows using the same software packages, toolchains, libraries and tools, across HPC institutes, private or public cloud environments and even desktop systems.

CVMFS integrates very will with container management systems, allowing the same software tree to be presented within containers or VMs without having to install (and maintain) the same packages into each, which may vary in versions or compilation options as well as creating container size bloat.

Software accessed via CVMFS is cached locally, thus providing runtime performance comparable to locally installed versions.

CVMFS within the HPC Environment

The HPC Support Team is providing initial access to cvmfs software repositories for evaluation in our HPC environments.

Repositories for the Open Science Grid, and an internal repo are available on HPC nodes.

CVMFS software repos may also be accessed by VMs running in OpenStack and desktop Linux systems. Instructions will be provided for these use cases, though support efforts will be focused on CVMFS within the HPC environment.

CVMS on HPC

Other software repos (CERN, SLAC, FNAL, etc.) may be officially added in the future.

CVMFS Repos Available

The OSG repo contains software distributed and maintained by the Open Science Grid.

Directories under /cvmfs are auto-mounted upon access. The cvmfs_config probe command will also cause them to be presented as well as verify availability:

On login01-node:

$ cvmfs_config probe
Probing /cvmfs/oasis.opensciencegrid.org... OK
$ ls /cvmfs/oasis.opensciencegrid.org/osg/
bin modules modules2 palms projects README.txt sw test_spack update.details
$ ls /cvmfs/hostname/
hpc-ops pgi

OSG CVMFS Provided Modules and Tutorials

The Open Science Grid repo provides a nice software catalog and module wrapper to allow easily switching to their software tree.

This software repository is built and maintained by the OSG. It is made available to users, though the software itself is not supported by the HPC Support Team.

Additional info: https://support.opensciencegrid.org/support/solutions/articles/12000006683-switching-between-oasis-and-local-modules

On login01-node

$ source /cvmfs/oasis.opensciencegrid.org/osg/modules/lmod/current/init/bash
$ module avail
----------------------- /cvmfs/oasis.opensciencegrid.org/osg/modules/modulefiles/Core -----------------------
ANTS/1.9.4 freetype/2.5.5 opencv/2.4.10
ANTS/2.1.0 (D) fsl/5.0.8 opensees/6482
Julia/0.6.0 gamess/2013 opensim/3.3
MUMmer/3.23 gate/7.2 orca/3.0.3
OpenBUGS/3.2.3 gcc/4.6.2 orca/4.0.0 (D)
OpenBUGS-3.2.3/3.2.3 gcc/4.6.4 papi/5.3.2
R/3.1.1 (D) gcc/4.8.1 pari/2.7.5
R/3.2.0 gcc/4.9.2 (D) pax/evan-testing
R/3.2.1 gcc/4.9.3 pax/4.5.0
R/3.2.2 gcc/6.2.0 pax/4.6.1
R/3.3.1 gd/2.1.1 pax/4.9.1
R/3.3.2 gdal/2.0.0 pax/4.11.0 (D)
RAxML/8.2.9 geant4/9.4p02 pbsuite/14.9.9
RAxML-NG/0.5.0beta geant4/10.02 pcre/8.35
SeqGen/1.3.3 geant4/10.3p01 (D) pegasus/4.4.2-image_tools
Shelx/2015 geos/3.4.2 pegasus/4.5.3
SitePackage gfal/7.20 pegasus/4.6.0dev
SparseSuite/4.2.1 git/1.9.0 pegasus/4.6.0cvs
ViennaRNA/2.2 glpk/4.54 pegasus/4.6.0
abyss/2.0.2 gmp/6.0.0 pegasus/4.6.1dev
ant/1.9.4 gnome_libs/1.0 pegasus/4.6.1
apr/1.5.1 gnuplot/4.6.5 pegasus/4.7.0
aprutil/1.5.3 graphviz/2.38.0 pegasus/4.7.1
arc-lite/2015 grass/6.4.4 pegasus/4.7.3
atlas/3.10.1 gromacs/4.6.5 pegasus/4.7.4
atlas/3.10.2 (D) gromacs/5.0.0 (D) pegasus/4.8.0 (D)
autodock/4.2.6 gromacs/5.0.5.cuda phenix/1.10
bedtools/2.21 gromacs/5.0.5 poppler/0.24.1 (D)
binutils/2.26 gromacs/5.1.2-cuda poppler/0.32
blasr/1.3.1 gsl/1.16 povray/3.7
blast gsl/2.3 (D) proj/4.9.1
blender hdf5/1.8.9 proot/2014
boost/1.50.0 hdf5/1.8.12-cxx11 protobuf/2.5
boost/1.56 hdf5/1.8.12 psi4/0.3.74
boost/1.57.0 hdf5/1.8.13-cxx11 psi4/1.1 (D)
boost/1.62.0-cxx11 hdf5/1.8.13 (D) python/2.7 (D)
boost/1.62.0 (D) healpix/3.30 python/3.4
bowtie/2.2.3 hisat2/2.0.3-beta python/3.5.2
bowtie/2.2.9 (D) hmmer/3.1 qhull/2012.1
bwa/0.7.12 igraph/0.7.1 root/5.34-32-py34
bwa/2014 (D) imagemagick/7.0.2 root/5.34-32
bzip2/1.0.6 intelMKL/11.3.0.109 root/6.06-02-py34 (D)
canopy/1.4.1 ipopt/3.12.6 rosetta/2015
casino/2.13.211 jasper/1.900.1 rosetta/2016-02
cblosc/1.7.1 java/7u71 rosetta/2016-32 (D)
ccp4/2015 java/8u25 ruby/2.1
cctools/4.4.2 java/8u131 (D) rucio/1.6.6
cctools/5.2.3 jpeg/6b saga/2.2.0
cctools/5.4.7 jpeg/9a (D) samtools/0.1.17
cctools/6.0.7 (D) julia/0.6.0 samtools/1.3.1 (D)
cdo/1.6.4 lammps/2.0 sca/10.1.6a
cfitsio/3.37 lammps/15May15 (D) scons/2.3.4
circos/0.68 lapack/3.5.0 sdpa/7.3.8
clhep/2.1.0.1 lapack/3.6.1 (D) serf/1.37
clhep/2.2.0.8 libXpm/3.5.10 settarg/5.6.2
clhep/2.3.1.0 libgfortran/4.4.7 shelx/2015
clhep/2.3.1.1 libtiff/4.0.4 shrimp/2.2.3
clhep/2.3.4.4 (D) llvm/3.6 siesta/3.2
cmake/3.0.1 llvm/3.7 simbody/3.5.3
cmake/3.4.1 llvm/3.8.0 (D) snappy/1.1.3
cmake/3.8.0 (D) lmod/5.6.2 sqlite/3.8.11.1
connect-client/0.2.1 madgraph/2.1.2 sra/2.5.4
connect-client/0.3.0 madgraph/2.2.2 (D) sra/2.8.0 (D)
connect-client/0.4.0 matlab/2013b stashcp/2.6
connect-client/0.5.3 (D) matlab/2014a stashcp/4.3.0
cp2k/2.5.1 matlab/2014b stashcp/4.3.1 (D)
cpan/perl-5.10 matlab/2015a stringtie/1.1.2
cufflinks/2.2.1 matlab/2015b stringtie/1.2.2 (D)
curl/7.37.1 matlab/2016a subversion/1.8.10
dakota/6.4.0 matlab/2016b sundials/2.5
dmtcp/2.5.0 matlab/2017a swift/0.94.1
ectools matlab/2017b (D) swift/0.96.2 (D)
eemt/0.1 mercurial/1.9.1 tassel/5.0
eigen/3.2.10 mixmodlib/3.1 tcl/8.6.2
einstein/Payne-Gaposchkin mono/4.2.1 tcsh/6.20.00
elastix/2015 mothur/1.39.0 tophat/2.0.13
entropy/2017.03.16 mpc/1.0.3 tophat/2.1.1 (D)
espresso/5.1 mpfr/3.1.3 transabyss/1.5.5
espresso/5.2 (D) mplayer/1.1 tutorial/1.0
ete2/2.3.8 mrbayes/3.2.2 uclust/2.22
expat/2.1.0 muscle/3.8.31 udunits/2.2.17
ffmpeg/0.10.15 mysql/5.1.73 unixodbc/2.3.2
ffmpeg/2.5.2 (D) namd/2.9 valgrind/3.10
fftw/3.3.4-gromacs namd/2.10.cuda vmd/1.9.1
fftw/3.3.4 (D) namd/2.10 (D) wget/1.15
fiji/2.0 nco/4.3.0 wxgtk/3.0.2
fpc/2.6.4 netcdf/4.2.0 xrootd/4.1.1
freesurfer/5.1.0 ngsTools/2017.03.16 xrootd/4.2.1 (D)
freesurfer/5.3.0 octave/3.8.1 xz/5.2.2
freesurfer/6.0.0 (D) openbabel/2.3.2 zlib/1.2.8

OSG Software tutorials are available with

$ module load tutorial
$ tutorial
:)
$ tutorial tensorflow-matmul
$ less ./tutorial-tensorflow-matmul/README.md

Other OSG Module environment tools

$ less /cvmfs/oasis.opensciencegrid.org/osg/sw/module-init.sh
$ less /cvmfs/oasis.opensciencegrid.org/osg/sw/rhel/7/lmod/6.3/init/profile
View your current module environment modules:
$ env | grep MODULE