Skip to content

Commit

Permalink
Add cmake build to release branch (#30)
Browse files Browse the repository at this point in the history
## DESCRIPTION OF CHANGES: 
This is a subset of the changes that were added to develop with PR #27. This commit adds cmake capabilities, but does not maintain back-compatibility with the older build system.

To build, have the necessary modules loaded and run:

```
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=<prefix>
make
```

The docs/ directory contains README files with instructions for specific platforms/compilers

## TESTS CONDUCTED: 
 - **Cheyenne**: Build and end-to-end test ("DOT_OR_USCORE" test case) was successful on Cheyenne with intel
 - **Hera**: Build and end-to-end test ("DOT_OR_USCORE" test case) was successful

Co-authored-by: kgerheiser <[email protected]>; Michael Kavulich, Jr <[email protected]>
  • Loading branch information
mkavulich authored Oct 9, 2020
1 parent d8e9e31 commit 66fca2e
Show file tree
Hide file tree
Showing 6 changed files with 191 additions and 7 deletions.
5 changes: 4 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,9 @@ if (${CMAKE_VERSION} VERSION_LESS 3.12)
endif()

# Set the project name and version.
project(ufs-srweather-app VERSION 1.0)
project(ufs-srweather-app VERSION 1.0 LANGUAGES C CXX Fortran)

find_package(MPI REQUIRED COMPONENTS C CXX Fortran)

# Set extended version info.
SET(SRWA_VERSION_MAJOR 1)
Expand Down Expand Up @@ -139,3 +141,4 @@ configure_file(

FILE(COPY "${CMAKE_CURRENT_BINARY_DIR}/ufs_srweather_app_meta.h" DESTINATION include)

add_subdirectory(src)
8 changes: 2 additions & 6 deletions Externals.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,8 @@ required = True

[ufs_utils]
protocol = git
#repo_url = https://github.com/JeffBeck-NOAA/UFS_UTILS
repo_url = https://github.com/NCAR/UFS_UTILS
# Specify either a branch name or a hash but not both.
#branch = feature/regional_release
branch = feature/regional_release_STRING
#hash = e5419633
repo_url = https://github.com/JeffBeck-NOAA/UFS_UTILS
tag = v2.0alpha01
local_path = src/UFS_UTILS
required = True

Expand Down
50 changes: 50 additions & 0 deletions docs/README_cheyenne_intel.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
#Setup instructions for CISL Cheyenne using Intel-19.1.1 (bash shell)

module purge
module load ncarenv/1.3
module load intel/19.1.1
module load mpt/2.19
module load ncarcompilers/0.5.0
module load cmake/3.16.4

export CC=mpicc
export FC=mpif90
export CXX=mpicxx

NCEPLIBS_INSTALL=/glade/p/ral/jntp/GMTB/tools/NCEPLIBS-ufs-v2.0.0/intel-19.1.1/mpt-2.19

module use -a ${NCEPLIBS_INSTALL}/modules

module load bacio/2.4.1
module load g2/3.4.1
module load ip/3.3.3
module load nemsio/2.5.2
module load sp/2.3.3
module load w3emc/2.7.3
module load w3nco/2.4.1
module load sigio/2.3.2
module load g2tmpl/1.9.1
module load sfcio/1.4.1
module load gfsio/1.4.1
module load nemsiogfs/2.5.3
module load landsfcutil/2.4.1
module load wgrib2/2.0.8
module load netcdf/4.7.4
module load crtm/2.3.0

export ESMFMKFILE=/glade/p/ral/jntp/GMTB/tools/NCEPLIBS-ufs-v2.0.0/intel-19.1.1/mpt-2.19/lib64/esmf.mk

export CMAKE_C_COMPILER=mpicc
export CMAKE_CXX_COMPILER=mpicxx
export CMAKE_Fortran_COMPILER=mpif90
export CMAKE_Platform=cheyenne.intel

git clone -b release/public-v1 [email protected]:ufs-community/ufs-srweather-app

cd ufs-srweather-app/
./manage_externals/checkout_externals

mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=..
make
50 changes: 50 additions & 0 deletions docs/README_hera_intel.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
#Setup instructions for NOAA RDHPC Hera using Intel-18.0.5.274 (bash shell)

module purge
module load intel/18.0.5.274
module load impi/2018.0.4
module load cmake/3.16.1

export CC=icc
export CXX=icpc
export FC=ifort

NCEPLIBS_INSTALL=/scratch1/BMC/gmtb/software/NCEPLIBS-ufs-v2.0.0/intel-18.0.5.274/impi-2018.0.4

module use ${NCEPLIBS_INSTALL}/modules

module load libpng/1.6.35

module load bacio/2.4.1
module load g2/3.4.1
module load g2tmpl/1.9.1
module load ip/3.3.3
module load nemsio/2.5.2
module load sp/2.3.3
module load w3emc/2.7.3
module load w3nco/2.4.1
module load sigio/2.3.2

module load sfcio/1.4.1
module load gfsio/1.4.1
module load nemsiogfs/2.5.3
module load landsfcutil/2.4.1
module load wgrib2/2.0.8
module load netcdf/4.7.4
module load esmf/8.0.0
module load crtm/2.3.0

export CMAKE_C_COMPILER=mpiicc
export CMAKE_CXX_COMPILER=mpiicpc
export CMAKE_Fortran_COMPILER=mpiifort
export CMAKE_Platform=hera.intel

git clone -b release/public-v1 [email protected]:ufs-community/ufs-srweather-app

cd ufs-srweather-app/
./manage_externals/checkout_externals

mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=..
make
54 changes: 54 additions & 0 deletions docs/README_jet_intel.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
#Setup instructions for NOAA RDHPC Jet using Intel-18.0.5.274 (bash shell)

module purge

module use -a /contrib/sutils/modulefiles
module load sutils

module load intel/18.0.5.274
module load impi/2018.4.274
module load hdf5/1.10.4
module load netcdf/4.6.1
module load cmake/3.16.1

export CC=icc
export CXX=icpc
export FC=ifort

NCEPLIBS_INSTALL=/lfs4/HFIP/hfv3gfs/software/NCEPLIBS-ufs-v2.0.0/intel-18.0.5.274/impi-2018.4.274

module use -a ${NCEPLIBS_INSTALL}/modules

module load bacio/2.4.1
module load crtm/2.3.0
module load g2/3.4.1
module load g2tmpl/1.9.1
module load ip/3.3.3
module load landsfcutil/2.4.1
module load nceppost/dceca26
module load nemsio/2.5.2
module load nemsiogfs/2.5.3
module load sp/2.3.3
module load w3emc/2.7.3
module load w3nco/2.4.1

module load gfsio/1.4.1
module load sfcio/1.4.1
module load sigio/2.3.2
module load esmf/8.0.0
module load wgrib2/2.0.8

export CMAKE_C_COMPILER=mpiicc
export CMAKE_CXX_COMPILER=mpiicpc
export CMAKE_Fortran_COMPILER=mpiifort
export CMAKE_Platform=jet.intel

git clone -b release/public-v1 [email protected]:ufs-community/ufs-srweather-app

cd ufs-srweather-app/
./manage_externals/checkout_externals

mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=..
make
31 changes: 31 additions & 0 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
include(ExternalProject)

ExternalProject_Add(UFS_UTILS
PREFIX ${CMAKE_CURRENT_BINARY_DIR}/UFS_UTILS
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/UFS_UTILS
INSTALL_DIR ${CMAKE_INSTALL_PREFIX}
CMAKE_ARGS "-DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}"
)


set(CCPP_SUITES "FV3_CPT_v0,FV3_GFS_2017_gfdlmp,FV3_GFS_2017_gfdlmp_regional,FV3_GSD_SAR,FV3_GSD_v0,FV3_GFS_v15p2,FV3_GFS_v16beta,FV3_RRFS_v1beta")

ExternalProject_Add(ufs_weather_model
PREFIX ${CMAKE_CURRENT_BINARY_DIR}/ufs_weather_model
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/ufs_weather_model
INSTALL_DIR ${CMAKE_INSTALL_PREFIX}
CMAKE_ARGS "-DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}"
"-DCCPP_SUITES=${CCPP_SUITES}"
"-DCMAKE_C_COMPILER=${MPI_C_COMPILER}"
"-DCMAKE_CXX_COMPILER=${MPI_CXX_COMPILER}"
"-DCMAKE_Fortran_COMPILER=${MPI_Fortran_COMPILER}"
"-DNETCDF_DIR=$ENV{NETCDF}"
INSTALL_COMMAND mkdir -p ${CMAKE_INSTALL_PREFIX}/bin && cp ${CMAKE_CURRENT_BINARY_DIR}/ufs_weather_model/src/ufs_weather_model-build/NEMS.exe ${CMAKE_INSTALL_PREFIX}/bin/
)

ExternalProject_Add(EMC_post
PREFIX ${CMAKE_CURRENT_BINARY_DIR}/EMC_post
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/EMC_post
INSTALL_DIR ${CMAKE_INSTALL_PREFIX}
CMAKE_ARGS "-DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}"
)

0 comments on commit 66fca2e

Please sign in to comment.