-
Notifications
You must be signed in to change notification settings - Fork 144
Ubuntu compiler environment
These instructions closely follow the instructions outlined for GFDL's HPC platforms using FMS's mkmf
tool for creating a Makefile.
Each release of Ubuntu has different version of the compilers and libraries. There is an mkmf template for each version of Ubuntu.
- Ubuntu 22.04.1 "Jammy Jellyfish", use
mkmf/templates/linux-ubuntu-jammy-gnu.mk
- Ubuntu 20.04.5 "Focal Fossa", use
mkmf/templates/linux-ubuntu-focal-gnu.mk
- Ubuntu 18.04.6 "Bionic Beaver", use
mkmf/templates/linux-ubuntu-bionic-gnu.mk
- Ubuntu 16.04.07 "Xenial Xerus", use
mkmf/templates/linux-ubuntu-xenial-gnu.mk
- Ubuntu 14.04.06 "Trusty Tahr", use
mkmf/templates/linux-ubuntu-trusty-gnu.mk
The instructions below use "jammy" which have been tested on Ubuntu 22.04.01 LTS. Which distribution of Linux do you have? Try cat /etc/*-release
.
Execute the following commands to install the compilation prerequisites on an Ubuntu machine:
sudo apt install make gfortran netcdf-bin libnetcdf-dev libnetcdff-dev openmpi-bin libopenmpi-dev
If the above fails you might have to do sudo apt update
first.
The following commands make use of a file build/env
that can contain any local environment changes need for compilation:
mkdir -p build
echo > build/env
To build the Makefile use:
mkdir -p build/fms/
(cd build/fms/; rm -f path_names; \
../../src/mkmf/bin/list_paths -l ../../src/FMS; \
../../src/mkmf/bin/mkmf -t ../../src/mkmf/templates/linux-ubuntu-jammy-gnu.mk -p libfms.a -c "-Duse_libMPI -Duse_netCDF -DSPMD" path_names)
To build the FMS library (libfms.a):
(cd build/fms/; source ../env; make NETCDF=3 REPRO=1 libfms.a -j)
To create the Makefile for compiling MOM6:
mkdir -p build/ocean_only/
(cd build/ocean_only/; rm -f path_names; \
../../src/mkmf/bin/list_paths -l ./ ../../src/MOM6/{config_src/infra/FMS1,config_src/memory/dynamic_symmetric,config_src/drivers/solo_driver,config_src/external,src/{*,*/*}}/ ; \
../../src/mkmf/bin/mkmf -t ../../src/mkmf/templates/linux-ubuntu-jammy-gnu.mk -o '-I../fms' -p 'MOM6 -L../fms -lfms' -c "-Duse_libMPI -Duse_netCDF -DSPMD" path_names)
To build the MOM6 executable:
(cd build/ocean_only/; source ../env; make NETCDF=3 REPRO=1 MOM6 -j)
For any example in ocean_only/
that does NOT have an INPUT/
directory, e.g. double_gyre:
cd ocean_only/double_gyre/
mkdir RESTART
mpirun -np 4 ../../build/ocean_only/MOM6
14.10: nc-config within the template will work fine.
15.10: We noticed that you also need to install the package libnetcdff-dev and change nc-config to nf-config within the template file.
Windows now has well supported access to Linux distributions via the Windows Subsystem for Linux (WSL). To install an Ubuntu distribution the simplest approach is via the "Microsoft Store":
- Open the Microsoft Store from the Start Menu and search for "Ubuntu LTS" (LTS stands for long term support)
- Select a version (e.g. Ubuntu 22.04.01 LTS) and then click Install
- In your Start Menu, there will now be a new "app" “Ubuntu 22.04.01 LTS” (or equivalent). YOu might find it under “Recently added” if you have that enabled. Click to start the app. This triggers the configuration of the linux instance.
- You’ll be prompted to create a username and password (this is local to the linux installation and independent of the host and all other accounts). It should then provide a linux prompt.
- First thing to do is issue
sudo apt update
and enter your password if prompted (this updates the database of packages so we can install the required software).
Hereafter, you can follow the environment setup steps above for Ubuntu linux.