Compiling at OLCF
Frontier
log into: frontier.olcf.ornl.gov
see: https://docs.olcf.ornl.gov/systems/frontier_user_guide.html#programming-environment
load modules:
ROCm 6.1.3:
module load PrgEnv-gnu module load cray-mpich/8.1.28 module load craype-accel-amd-gfx90a module load amd-mixed/6.1.3
ROCm 6.2.4:
There is an additional step with later versions of ROCm. First load the modules:
module load cpe/24.07 module load PrgEnv-gnu module load cray-mpich module load craype-accel-amd-gfx90a module load amd-mixed/6.2.4
Then you need to modify the library include path to include
CRAY_LD_LIBRARY_PATH
since the module wrappers do not do this:export LD_LIBRARY_PATH=$CRAY_LD_LIBRARY_PATH:$LD_LIBRARY_PATH
Note
In the past, tabulated rates seem to exhibit a strange slow down on Frontier, so it is best to run test with and without rate tabulation to see if there is a performance issue.
build via:
make USE_HIP=TRUE
HIP Function Inlining
By default, the ROCm compiler inlines all function calls in device code
(for better compatibility with codes that use file- or function-scoped
__shared__
variables). This greatly increases the time it takes to
compile and link, and may be detrimental for the templated Microphysics
networks with lots of compile-time loop unrolling.
This can be disabled by passing flags to hipcc
to allow non-inlined
function calls:
make USE_HIP=TRUE EXTRACXXFLAGS='-mllvm -amdgpu-function-calls=true'
See also https://rocm.docs.amd.com/en/docs-5.3.3/reference/rocmcc/rocmcc.html#rocm-compiler-interfaces
Note
Inline is automatically disabled via our Microphysics
repository
when it detects a HIP build.