Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

mhp MPI backend #630

Closed
lslusarczyk opened this issue Nov 7, 2023 · 0 comments
Closed

mhp MPI backend #630

lslusarczyk opened this issue Nov 7, 2023 · 0 comments

Comments

@lslusarczyk
Copy link
Contributor

lslusarczyk commented Nov 7, 2023

Summary

MPI based multi process communication primitives as a backend for Distributed-Ranges.

Feature details

MPI backend allows to write programs in SPMD way. Data structures are automatically distributed on multiple nodes using MPI and their constructors and algorithms are collective.
The MPI backedn will use a relaxed memory model similar to OpenSHMEM in which writes return without blocking while reads block until the data is ready to be read. To ensure consistency, collective operations perform a barrier/memory flush to ensure
all writes are complete before returning control. Collective operations employ asynchronous communication internally.

The feature will provide an MPI backend (communication primitives implemented using MPI) which can be used as a backend for

  • distributed_vector
  • distributed_mdarray
  • algorithms: for_each, for_each_tile, copy, fill, reduce, sort, inclusive_scan, exclusive_scan, transform,
  • Distributed Range Views: zip, iota, take, drop, counted, enumerate, transform
  • Distributed Mdspan Algorithms: mdfor_each, mdfor_each_stencil, mdfor_each_tile

MPI Communicatin primitives should support:

  • copy to/from local and Distributed Range
  • implementing a distributed range remote reference, which is exposed as [index]
  • implementing distributed mdspan remote reference, which is exposed as (index0, index1, ...)
  • halo exchange in distributed_vector and distributed_mdarray
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Done
Development

No branches or pull requests

1 participant