Skip to content

Requirements

Alexander Michalek edited this page Aug 18, 2025 · 4 revisions

Mandatory requirements:

This codebase is written in C++ and requires a C++17-compliant compiler to build, such as g++, clang++, or icpx. Compilation and build management are handled using the make utility. This is a Git repository, and Git is required to clone it locally. Alternatively, a ZIP archive can be downloaded directly from the repository's GitHub page.

The build environment also depends on external scientific libraries for data I/O and system utilities. Specifically, the following must be available and correctly configured:

  • C++ Compiler: Must support the C++17 standard and OpenMP (e.g., g++ 9+, clang++ 10+, or icpx)
  • GNU Make: Used to manage the build process
  • OpenMP: Required for shared-memory parallelism; enabled using the -fopenmp flag in the build
  • Boost.System: Required for linking; the Boost libraries must be installed and accessible to the linker
  • HDF5 (version 1.14.4): Used for high-performance data I/O
  • NetCDF (version 4.9.2): Must be built with HDF5 support

The NETCDF_PATH environment variable must be set to the NetCDF installation directory. This directory must contain:

  • include/ — for header files
  • lib64/ — for compiled libraries

Note: The latest version of the Intel compiler (icpx) is recommend as the code as been heavily tested on this set up (see the Makefile). Ensure your compiler supports the OpenMP standard used in your environment.


Optional requirements (for enhanced features or development):

  • Debugging support: The Makefile includes an alternate set of compiler flags for debug builds:

Build System Details

The provided build system includes a Bash script and a Makefile designed to automate the compilation process. The script is intended for use in module-managed environments such as HPC systems and begins by loading required software modules, including specific versions of HDF5 and NetCDF.

The Makefile uses icpxas the default compiler and is configured with optimization flags for high-performance execution on the Tiger3 machine architecture. It enables OpenMP for shared-memory parallelism and uses the C++17 standard. Linking is set up to include Boost.System and NetCDF libraries, with paths dynamically resolved based on theNETCDF_PATH` environment variable.

A clean build process is enforced by removing previous compilation artifacts before rebuilding. The Makefile also includes an alternative configuration for debug builds, which can be activated by modifying the compiler flags.

The setup assumes that required libraries are already installed and available either through system modules or accessible paths. It is optimized for production use but includes commented options to support development and debugging when needed.

Clone this wiki locally