Use ROCm clang for Ghost unified-memory examples - #190
Open
dannybaths wants to merge 1 commit into
Open
Conversation
Signed-off-by: Daniele Bagni <danieleb@xilinx.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
The five
MPI_Ghost_Exchange_Ver[1-5]test scripts now select the ROCm C and C++compilers from
$ROCM_PATH/binwhenamdclangandamdclang++are present there.Each script exports
CC/CXXimmediately before its per-test CMake configure, sothe GhostExchange examples build with ROCm clang instead of whatever the MPI wrapper
defaults to (often GCC on Cray/Open MPI login environments).
These examples use
#pragma omp requires unified_shared_memory. GCC does notimplement that clause on the offload path these tests need.
Why
On MI300A systems where the MPI module defaults to GCC, CMake picks GCC and every
Ghost Ver1–5 build aborts on the
requires unified_shared_memoryline before launch.The scripts already use
ROCM_PATHfor the ROCm runtime; selecting the matchingROCm compiler keeps the tests self-contained without launcher-specific
-xflags orOpen MPI-only options on the scripts'
srunbranch.Validation
MI300A / gfx942, Open MPI,
HSA_XNACK=1,ROCM_PATHpointing at a ROCm installwith
bin/amdclangandbin/amdclang++. Focused run on upstreammain(20e93223):Static checks on the branch:
Unpatched upstream: 0/5 pass. All five builds use GCC and fail at compile with
sorry, unimplemented: 'unified_shared_memory' clause on 'requires' directive not supported yet.With this change: 5/5 pass. Per-test CMake logs show
Check for working C/CXX compiler: …/rocm-…/bin/amdclang{,++}; CTest reports100% tests passed, 0 tests failed out of 5.AAC7 proof: current-main control on ROCm 7.14 / Open MPI 5.0.10 — unpatched 0/5,
patched 5/5.
AAC6 no-regression: MI300A, Lmod
rocm/7.14.0, Slurm job19736onppac-pl1-s24-16— 5/5 PASS withamdclang/amdclang++under$ROCM_PATH/bin.