Specifying compilers for GEOS-Chem
Previous | Next | Getting Started with GEOS-Chem
- Minimum system requirements
- Installing required software
- Configuring your computational environment
- Specifying the compiler
- Specifying libraries
- Specifying parallelization settings
- A sample initialization script
- Downloading source code
- Downloading data directories
- Creating run directories
- Configuring runs
- Compiling
- Running
- Output files
- Visualizing and processing output
- Coding and debugging
- Further reading
On this page, we discuss how to specify the compilers that you will use with GEOS-Chem "Classic".
Please see Setting Up the GCHP Environment for detailed instructions about setting up your computational environment for a GCHP simulation.
Selecting the compiler
There are typically several ways in which you can select the compiler that you wish to use with GEOS-Chem. Not all of these may be present on your system, so it is always best to ask your IT staff about the method that your system uses.
Using a module manager
As discussed earlier, Many computational clusters use the Lmod module system or the environment-modules package to allow you to pick and choose different pre-compiled software programs and libraries. If your system uses one of these module managers, then you can specify the compiler you wish to use by means of a command such as:
module load intel/19.0
or
module load gcc/9.2.0
For more information, please see our chapter on Installing required software.
Using Spack
As discussed earlier, if you have a Spack-built software stack on your system, you can use commands such as
spack load gcc@9.2.0
to specify the compiler that you wish to use. In the above example, we are requesting the GNU Compiler Collection version 9.2.0.
Even if you don't have a module manager installed on your system, you can still use Spack-built libraries. In this case, you might need to manually set some environment variables using the paths to the Spack-built libraries. For more information, please see the Spack documentation.
Our Spack Tutorial #1 video provides a good overview of how to build a compiler using Spack and to make sure that your system can find it.
Direct specification
If your system uses neither the a module manager nor the Spack package manager, you can still manually specify the path to the compiler. Most Unix operating system builds (e.g. CentOS, Ubuntu, etc.) come with a prebuilt version of gcc/gfortran in /usr/bin/gfortran. So you can add this line to your ~/.bashrc file:
export PATH="/usr/bin/gfortran:$PATH"
and then type
source ~/.bashrc
to accept the changes.
Defining the proper environment variables
After you have specified a compiler to use with GEOS-Chem, you must set a few Unix environment variables. These definitions can be placed in the same startup script (usually .bashrc or .bash-aliases) as the commands that load the compiler.
Unix environment variables for compilers
It is a Unix convention to use the following environment variable names for compilers:
Variable | Description |
---|---|
FC | Name of the Fortran compiler |
CC | Name of the C compiler |
CXX | Name of the C++ compiler |
In most cases, the Fortran, C, and C++ compilers are installed together as a integrated package. Often, using the module load command will load all three compilers into your Unix environment together. If you are using GEOS-Chem "Classic" then you really only need the Fortran compiler. But other software packages on your system will use the C and/or C++ compilers.
--Bob Yantosca (talk) 21:41, 17 December 2019 (UTC)
Check if compiler environment variables have been automatically set
On many systems (espcially those using the Lmod module system), FC, CC, and CXX will be set automatically for you when you use the module load command. The easiest way to check if these variables have been automatically set for you is to print them to the screen. Type at the Unix prompt:
echo $FC echo $CC echo $CXX
If these variables are all blank, then you must define these manually (see next section). If they are NOT blank, then you are all set!
--Bob Yantosca (talk) 21:42, 17 December 2019 (UTC)
Manually defining compiler environment variables
If the FC, CC, and CXX environment variables are all undefined, then you will have to manually set them in your startup script as described below:
If your shell is |
and your compiler is |
use these definitions |
---|---|---|
/bin/bash | ifort | export FC=ifort export CC=icc export CXX=icpc |
/bin/bash | gfortran | export FC=gfortran export CC=gcc export CXX=g++ |
Then make sure to type:
source ~/.bashrc # if you are using bash
to apply the changes.
--Bob Yantosca (talk) 21:38, 17 December 2019 (UTC)
Further reading
- Guide to compilers for GEOS-Chem
- GEOS-Chem basics
- All you need to know about Unix environment variables (Network World)