Allow users an abstract way to define MPI devices
- Dominant language
- Julia
- Stars
- 6
- Forks
- 3
- PR merge metrics
- No merged PRs in 30d
Description
We should define something like, e.g., "`assign_mpi_devices`":
```julia
if context isa ClimaComms.MPICommsContext &&
device isa ClimaComms.CUDADevice
# assign GPUs based on local rank
local_comm = ClimaComms.MPI.Comm_split_type(
context.mpicomm,
ClimaComms.MPI.COMM_TYPE_SHARED,
ClimaComms.MPI.Comm_rank(context.mpicomm),
)
CUDA.device!(
ClimaComms.MPI.Comm_rank(local_comm) % length(CUDA.devices()),
)
end
```
from ClimaCore's benchmark utility: https://github.com/CliMA/ClimaCore.jl/blob/25792d42b04c36dc6f2a6f50cd9d75cf2416b5cb/test/Operators/spectralelement/benchmark_utils.jl#L189-L200
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by reading the referenced ClimaCore benchmark utility at test/Operators/spectralelement/benchmark_utils.jl around lines 189–200, then compare its MPI and CUDA assumptions with the ClimaComms APIs. Define the abstract device-assignment interface and verify that the benchmark’s local-rank GPU assignment can be expressed through it without requiring callers to duplicate the implementation.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- julia
- Domain
- distributed-systems
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100