-
Notifications
You must be signed in to change notification settings - Fork 55
Cray specific detection and enhanced netcdf pkg-config support #2704
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: development
Are you sure you want to change the base?
Cray specific detection and enhanced netcdf pkg-config support #2704
Conversation
Questions
source Build/machines/perlmutter_erf.profile
./cmake.sh
make distclean
./cmake_cuda.sh
make distclean
./cmake_with_kokkos_many_cuda.sh
rm -rf build_erfGoalThe goal of this PR is to allow something like the following to work across systems, where all you have to change is the physics and IO flags of interest, and the specific gpu backend you're requesting (like https://github.com/jmsexton03/ERF/blob/add_craype_defaults_cmake/Build/cmake.sh or https://github.com/jmsexton03/ERF/blob/add_craype_defaults_cmake/Build/cmake_with_kokkos_many.sh) #!/bin/bash
#Example cmake configuration script that assumes cray detection
cmake -DCMAKE_INSTALL_PREFIX:PATH=./install_erf \
-DMPIEXEC_PREFLAGS:STRING=--oversubscribe \
-DCMAKE_BUILD_TYPE:STRING=Release \
-DERF_DIM:STRING=3 \
-DERF_ENABLE_FFT:BOOL=ON \
-DERF_ENABLE_NETCDF:BOOL=ON \
-DERF_ENABLE_HDF5:BOOL=ON \
-DERF_ENABLE_RRTMGP:BOOL=ON \
-DERF_ENABLE_SHOC:BOOL=OFF \
-DERF_ENABLE_MPI:BOOL=ON \
-DERF_ENABLE_CUDA:BOOL=OFF \
-DERF_ENABLE_HIP:BOOL=OFF \
-DERF_ENABLE_SYCL:BOOL=OFF \
-DERF_ENABLE_TESTS:BOOL=ON \
-DERF_ENABLE_FCOMPARE:BOOL=ON \
-DERF_ENABLE_DOCUMENTATION:BOOL=OFF \
-DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=ON \
-B build_erf ..
cmake --build build_erf -j10 -v
cmake --install build_erf --prefix=install_erfSince SHOC or P3 require an additional setup step, I'm aiming to test those separately. Docs tableERF provides several build scripts optimized for different systems and architectures. This table shows which scripts have been tested and verified on each system. Verified builds are marked with the git commit hash where they were last tested.
Note: The |
Summary
Comprehensive build system improvements for Cray/HPC systems with automatic detection and configuration. Adds 7 auto-fixes for common Cray build issues (CUDA+EKAT, fcompare, GPU-aware MPI, NetCDF). Includes developer utilities for organized testing, enhanced diagnostics with CMake 3.25+ log levels, and machine-specific profiles for Perlmutter, Frontier, Polaris, and Aurora. Detailed documentation is being developed in #2708 , and will include a simple table of working builds.
Details
Cray/HPC System Support
Build System Enhancements
distcleantarget (removes CMake cache/artifacts) anduninstalltarget with manifest trackingNetCDF & Dependency Detection
Enhanced Diagnostics
cray_detected_config.cmakereference file showing auto-detected settings