CliMA / CliMA/ClimaComms.jl

Allow users an abstract way to define MPI devices

Open
#84 0 comments 0 reactions 0 assignees View on GitHub
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.