William.Hatheway
Well-known member
Add AOCC flang/clang build configuration for WPS on AMD Linux x86_64 by HathewayWill · Pull Request #286 · wrf-model/WPS
TYPE: enhancement KEYWORDS: WPS, AOCC, flang, clang, AMD, x86_64, configure, dmpar, serial SOURCE: Will H ([affiliation]) DESCRIPTION OF CHANGES: Problem: WPS does not currently provide a configure...
TYPE: enhancement
KEYWORDS: WPS, AOCC, flang, clang, AMD, x86_64, configure, dmpar, serial
SOURCE: Will H ([affiliation])
DESCRIPTION OF CHANGES:
Problem:
WPS does not currently provide a configure option for building on AMD Linux x86_64 systems with the AMD Optimizing C/C++ and Fortran Compiler suite. Users who want to build WPS with AOCC flang, AOCC clang, AMD LibM, OpenMP, and AOCC/LLVM optimization options must manually edit the generated configure.wps file or maintain a local configuration stanza.
This also makes WPS inconsistent with AOCC-based WRF builds, where AOCC-specific compiler and linker options can be selected through the configure system.
Solution:
Added a new WPS architecture stanza for:
AMD Linux x86_64, AOCC flang compiler with AOCC clang
The new stanza supports the following WPS build modes:
serial
serial_NO_GRIB2
dmpar
dmpar_NO_GRIB2
The stanza defines AOCC flang as the serial Fortran compiler, AOCC clang as the serial C compiler, and the MPI compiler wrappers for distributed-memory builds. It also adds AOCC-oriented Fortran, C, preprocessing, archive, and link flags, including AMD Zen tuning, OpenMP, AMD LibM vector library support, byte swapping, and AOCC/LLVM link-time optimization options.
The AOCC vectorization option used in LDFLAGS follows the spelling documented in the AOCC 4.0 User Guide:
-vectorize-non-contiguous-memory-aggressively
No WPS algorithms, data processing behavior, or scientific results are changed. This change only adds a supported configure path for AOCC builds.
ISSUE:
N/A
LIST OF MODIFIED FILES:
M arch/configure.defaults
TESTS CONDUCTED:
- Build/configure validation: [Replace with actual test result.]
Suggested validation:
- Run ./clean -a
- Run ./configure
- Select the new AOCC flang/clang option for serial and/or dmpar
- Confirm that configure.wps is generated with flang, clang, mpifort, and mpicc as expected
- Run ./compile
- Confirm that the expected WPS executables are produced, such as geogrid.exe, ungrib.exe, and metgrid.exe
- Jenkins tests: Not run locally. To be verified by the WPS automated test suite.
Added a WPS configure option for AMD Linux x86_64 systems using AOCC flang and AOCC clang. The new stanza supports serial, serial_NO_GRIB2, dmpar, and dmpar_NO_GRIB2 builds, and includes AOCC-oriented optimization, OpenMP, AMD LibM, and AMD Zen tuning flags. The AOCC vectorization option follows the spelling documented in the AMD AOCC User Guide, Publication #57222, Revision #4.0, November 2022.
Add WRF-style executable checks to WPS compile script by HathewayWill · Pull Request #287 · wrf-model/WPS
Summary This PR updates the WPS compile script to perform WRF-style executable checks after compilation. The script now verifies that each requested target produced the expected .exe file and repor...
This PR updates the WPS compile script to perform WRF-style executable checks after compilation. The script now verifies that each requested target produced the expected .exe file and reports a clear success or failure message for each build target.
Changes
- Added per-target executable checks after each WPS build step.
- Added final executable summary checks for all requested targets.
- Added explicit tracking of expected executables for wps, util, and individual compile targets.
- Added failure reporting for missing executable files or missing symbolic links.
- Updated the script to exit with a nonzero status if any requested executable is missing.
- Preserved the existing WPS target-selection logic and build commands.
Motivation
Previously, the WPS compile script could finish without clearly reporting whether all requested executables were successfully created. This made it easier to miss failed builds, especially when compiling multiple targets such as geogrid, ungrib, metgrid, and utilities.This change makes the WPS compile output more consistent with the WRF build output, where expected executables are checked and a clear success or failure message is printed.