Skip to content

Loading software packages into your Cannon login environment

Bob Yantosca edited this page Jun 14, 2023 · 29 revisions

On this page we provide information about software packages that you can use with Cannon, and how to load these packages into your login environment.

Environment files for RockyLinux

The GEOS-Chem Support Team has created several environment files for GEOS-Chem Classic and GCHP. Environment files are scripts containing commands to load both FASRC-built software packages and locally-built software packages for RockyLinux. Additional settings, such as environment variables specifying library paths, are also defined in these environment files.

If you have not yet downloaded the cannon-env repository, use this command to create a fresh clone:

$ git clone https://github.com/Harvard-ACMG/cannon-env

Or if you already have a clone of the cannon-env repository, then navigate to it

$ cd /path/to/cannon-env        # /path/to/cannon-env is the absolute path of your clone of cannon-env
$ git fetch -p https://github.com/Harvard-ACMG/cannon-env
$ git checkout main
$ git pull

Then navigate to the envs subdirectory:

$ cd envs

and you will the following environment files:

In the envs/gnu10 folder

Environment file Loads packages for With these compilers Software packages
gcclassic.rocky+gnu10.env GEOS-Chem Classic gcc, g++, gfortran 10.2.0 FASRC + Spack
gcclassic.rocky+gnu10.minimal.env GEOS-Chem Classic gcc, g++. gfortran 10.2.0 FASRC only
gchp.rocky+gnu10.env GCHP gcc, g++, gfortran 10.2.0 FASRC + Spack
gchp.rocky+gnu10.minimal.env GCHP gcc, g++, gfortran 10.2.0 FASRC only

In the envs/gnu12 folder

Environment file Loads packages for With these compilers Software packages
gcclassic.rocky+gnu12.env GEOS-Chem Classic gcc, g++, gfortran 12.2.0 FASRC + Spack
gcclassic.rocky+gnu12.minimal.env GEOS-Chem Classic gcc, g++, gfortran 12.2.0 FASRC only
gchp.rocky+gnu12.env GCHP gcc, g++, gfortran 12.2.0 FASRC + Spack
gchp.rocky+gnu12.minimal.env GCHP gcc, g++, gfortran 12.2.0 FASRC only

In the envs/intel23 folder

Environment file Loads packages for With these compilers Software packages
gcclassic.rocky+intel23.minimal.env GEOS-Chem Classic gcc, g++, gfortran 12.2.0 FASRC only
gchp.rocky+intel23.minimal.env GCHP gcc, g++, gfortran 12.2.0 FASRC + Spack

NOTES:

  1. Use the *rocky+gnu10.env or *rocky+gnu12.env environment files in interactive login sessions. These environment files will load the complete set of software packages into your Linux environment.

  2. Use the *rocky+gnu10.minimal.env or *rocky+gnu12.minimal.env environment files in run scripts that will be submitted to Cannon queues. These environment files will only load the essential software packages needed to run GEOS-Chem Classic or GCHP, without any of the interactive utilities that have been built with Spack.

  3. We recommend that you copy or link these files to a convenient location (such as your home directory).

To apply the settings contained in an environment file, type

$ source <env-file-name>

where <env-file-name> refers to one of the files listed above.

FASRC core software packages for RockyLinux

FASRC have built several core packages (aka modules) for RockyLinux. These include compilers, netCDF libraries, MPI libraries, and programming languages (and their dependencies). FASRC-built packages use this naming scheme:

<package-name>/<package-version>-fasrc<build-id>

where

  • <package-name> is the package name
  • <package-version> is the package version number (usually integers X.Y.Z)
  • <build-id> is a 2-digit number (e.g. 01, 02, 03). Most packages will only use 01. But if there is a package that has been built with more than one compiler or MPI version, then numbers higher than 01 will be used to differentiate the builds.

Core packages for GNU 10.2.0 compilers

These commands (which are present in all RockyLinux environment files) load packages built with the GNU Compiler Collection 10.2.0:

module purge                                  # Unload all prior loaded modules
module load gcc/10.2.0-fasrc01                # GNU compilers v. 10.2.0
module load openmpi/4.1.0-fasrc01             # OpenMPI (needed for netCDF and GCHP)
module load netcdf-c/4.8.0-fasrc01            # netcdf-c library
module load netcdf-fortran/4.5.3-fasrc01      # netcdf-fortran library
module load flex/2.6.4-fasrc01                # Fast lexical analyzer (needed for KPP)
module load cmake/3.25.2-fasrc01              # CMake (needed to compile GEOS-Chem and HEMCO)

Type module list to get a listing of modules that have been loaded:

Currently Loaded Modules:
  1) gmp/6.2.1-fasrc01    4) gcc/10.2.0-fasrc01      7) szip/2.1.1-fasrc01      10) netcdf-fortran/4.5.3-fasrc01
  2) mpfr/4.1.0-fasrc01   5) openmpi/4.1.0-fasrc01   8) hdf5/1.10.7-fasrc01     11) flex/2.6.4-fasrc01
  3) mpc/1.2.1-fasrc01    6) zlib/1.2.11-fasrc01     9) netcdf-c/4.8.0-fasrc01  12) cmake/3.25.2-fasrc01

Core packages for GNU 12.2.0 compilers

These commands (which are present in the RockyLinux environment files) load modules built with the GNU Compiler Collection 12.2.0:

module purge                                  # Unloads all prior loaded modules
module load gcc/12.2.0-fasrc01                # GNU compilers, v. 12.2.0
module load openmpi/4.1.4-fasrc01             # OpenMPI (needed for netCDF and GCHP)
module load netcdf-fortran/4.6.0-fasrc02      # netCDF-Fortran (loads netCDF-C and HDF5 modules)
module load flex/2.6.4-fasrc01                # Fast lexical analyzer (needed for KPP)
module load cmake/3.25.2-fasrc01              # CMake (needed to compile GEOS-Chem and HEMCO)

Type module list to get a listing of all loaded modules:

Currently Loaded Modules:
  1) gmp/6.2.1-fasrc01    4) gcc/12.2.0-fasrc01      7) szip/2.1.1-fasrc01      10) netcdf-fortran/4.6.0-fasrc02
  2) mpfr/4.2.0-fasrc01   5) openmpi/4.1.4-fasrc01   8) hdf5/1.14.0-fasrc01     11) flex/2.6.4-fasrc01
  3) mpc/1.3.1-fasrc01    6) zlib/1.2.13-fasrc01     9) netcdf-c/4.9.2-fasrc01  12) cmake/3.25.2-fasrc01

Core packages for Intel 23.0.0 compilers

These commands (which are present in the RockyLinux environment files) load modules built with the GNU Compiler Collection 12.2.0:

module purge                                  # Unloads all prior loaded modules
module load gcc/12.2.0-fasrc01                # GNU compilers, v. 12.2.0
module load openmpi/4.1.4-fasrc01             # OpenMPI (needed for netCDF and GCHP)
module load netcdf-fortran/4.6.0-fasrc02      # nhttps://github.com/Harvard-ACMG/knowledge-base/wiki/Loading-software-packages-into-your-Cannon-login-environmentetCDF-Fortran (loads netCDF-C and HDF5 modules)
module load flex/2.6.4-fasrc01                # Fast lexical analyzer (needed for KPP)
module load cmake/3.25.2-fasrc01              # CMake (needed to compile GEOS-Chem and HEMCO)

Type module list to get a listing of all loaded modules:

### Core packages for GNU 12.2.0 compilers

These commands (which are present in the [RockyLinux environment files](https://github.com/Harvard-ACMG/knowledge-base/wiki/Loading-software-packages-into-your-Cannon-login-environment#environment-files-for-rockylinux)) load modules built with the GNU Compiler Collection 12.2.0:

```console
# Load FASRC-built modules
module load intel/23.0.0-fasrc01           # icc / i++ / gfortran
module load intelmpi/2021.8.0-fasrc01      # MPI
module load netcdf-fortran/4.6.0-fasrc03   # netCDF-Fortran
module load flex/2.6.4-fasrc01             # Flex lexer (needed for KPP)
module load cmake/3.25.2-fasrc01           # CMake (needed to compile)

Type module list to get a listing of all loaded modules:

Currently Loaded Modules:
  1) intel/23.0.0-fasrc01        4) szip/2.1.1-fasrc02       7) netcdf-fortran/4.6.0-fasrc03
  2) intelmpi/2021.8.0-fasrc01   5) hdf5/1.14.0-fasrc02      8) flex/2.6.4-fasrc01
  3) zlib/1.2.11-fasrc02         6) netcdf-c/4.9.2-fasrc02   9) cmake/3.25.2-fasrc01

Additional Core packages

The following modules are often needed for post-processing and analysis:

module load IDL/8.7.2-fasrc01              # IDL language (needed for GAMAP)
module load R/4.2.2-fasrc01                # R language
module load matlab/R2022b-fasrc01          # matlab language

To find other available FASRC-built packages, use this command:

$ module avail

To find more information about a specific FASRC-built package, type:

$ module spider <package-name>

where <package-name> is the name of the package you are interested in.

Locally-built software packages built for RockyLinux

In addition to the FASRC-built software packages that we previously discussed, the GEOS-Chem Support Team has built the following local software packages. These will be loaded when you source one of the environment files listed above.

ESMF

The Earth System Modeling Framework (ESMF) is a library required by GCHP. See the table below for the available ESMF versions for RockyLinux:

  • <ROOT> refers to the path /n/jacob_lab/Lab/seasfs01/Lab/RockyLinux.
Package Version Compiler Path Needed for
ESMF 8.1.1 GNU 10.2.0 <ROOT>/ESMF/ESMF_8_1_1/INSTALL_gfortran10_openmpi4 GCHP
ESMF 8.1.1 GNU 12.2.0 <ROOT>/ESMF/ESMF_8_1_1/INSTALL_gfortran12_openmpi4 GCHP
ESMF 8.4.2 GNU 10.2.0 <ROOT>/ESMF/ESMF_8_1_1/INSTALL_gnu10_openmpi4 GCHP
ESMF 8.4.2 GNU 12.2.0 <ROOT>/ESMF/ESMF_8_1_1/INSTALL_gnu12_openmpi4 GCHP

When you source one of the GCHP environment files for RockyLinux, several environment variables will be defined that will tell GCHP where to find ESMF.

Spack-built software packages

We have also built several software packages using the Spack package manager. In general, GEOS-Chem and GCHP will only need to use FASRC core packages such as compilers, netCDF, and MPI libraries. The Spack-built packages provide useful tools for post-processing and analysis.

Spack-built packages can be loaded with the same module load commands as the FASRC core packages. Several relevant Spack-built packages will be loaded into your environment when you source [one of the environment files described above] ](https://github.com/Harvard-ACMG/knowledge-base/wiki/Loading-software-packages-into-your-Cannon-login-environment#environment-files-for-rockylinux).

If you type module list, you may see many Spack-built packages in the printout. Several of these are dependencies for other packages, and these can be ignored. The Spack-built packages that you will probably use most frequently with GEOS-Chem are:

Package Description Load package for GNU 10.2.0 Load package for GNU 12.2.0
bison Parser, needed by KPP. module load bison/3.8.2-gcc-10.2.0 module load bison/3.8.2-gcc-12.2.0
cdo Climate Data Operators spack load cdo%gcc@10.2.0 spack load cdo%gcc@12.2.0
cgdb User-friendly front-end for gdb module load cgdb/0.7.1-gcc-10.2.0 module load cgdb/0.7.1-gcc-12.2.0
colordiff Colorizes output from diff module load colordiff/1.0.21-gcc-10.2.0 module load colordiff/1.0.21-gcc-12.2.0
gdb The GNU debugger module load gdb/8.2.19-gcc-10.2.0 module load gdb/8.2.19-gcc-10.2.0
nco The netCDF operators module load nco/5.1.4-gcc-10.2.0 module load cdo/5.1.4-gcc-12.2.0
ncview netCDF file viewer module load ncview/2.1.8-gcc-10.2.0 module load ncview/2.1.8-gcc-12.2.0
xterm X11 terminal window spack load xterm%gcc@10.2.0 spack load xterm%gcc@10.2.0

Note that the Spack-built packages use this naming scheme:

<package-name>/<version>-<compiler-name>-<compiler-version>

where:

  • <package-name> is the name of a Spack-built software package (e.g. cdo)
  • <package-version> is the version number of a Spack-built software package
  • <compiler-name> is the name of the compiler. This will always be gcc, which refers to the GNU Compiler Collection (and not GEOS-Chem Classic).
  • <compiler-version> is the version number of the compiler. This will be either 10.2.0 or 12.2.0.

Also note, the Spack configuration files (compilers.yaml, modules.yaml, and packages.yaml) in our spack-env repository have been set up in order to ensure that packages that require netCDF (e.g. cdo, nco, ncview`) will use the FASRC-built netCDF modules. Otherwise, Spack start installing a new version of netCDF (with dependencies) that will cause package conflicts.

Clone this wiki locally