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

Attributes, inter-communicators, and spawning #140

Merged
merged 8 commits into from
Dec 20, 2022
Merged

Conversation

jedbrown
Copy link
Contributor

@jedbrown jedbrown commented Dec 5, 2022

This isn't super full-featured, but I think the interface is convenient enough. Process spawning with Open MPI is a bit more expensive than launching using mpiexec.

@jtronge
Copy link
Collaborator

jtronge commented Dec 5, 2022

This looks great. I tried the three examples locally.

Is this assuming that inter communicators are created outside of rsmpi right now? I didn't see any MPI_Intercomm_* functions.

@jedbrown
Copy link
Contributor Author

jedbrown commented Dec 5, 2022

MPI_Comm_spawn creates intercommunicators. I didn't bind MPI_Intercomm_create because I'm interested in spawning, but it could be done later.

Cargo.toml Show resolved Hide resolved
@jedbrown jedbrown force-pushed the jed/process-management branch 3 times, most recently from c6ab86f to 84905b4 Compare December 19, 2022 21:44
jedbrown and others added 6 commits December 19, 2022 15:53
Explicitly disconnect parent communicator to appease MPICH leak
checks, which might be incorrect.
pmodels/mpich#6319

Co-authored-by: Jed Brown
These were refactored from an earlier approach to use
std::process::Command because existing tools can build Commands. They
currently do not support environment variables, which can be implemented
using MPI_Info.

Based-on-patch-by: Andrew Gaspar
We're now getting various transitive dependencies that have updated to
requires 1.56 and 1.57, so as I understand it, we either need to pin
those or acknowledge that MSRV is now 1.57. 1.56 is the first version
that supports the rust-version key, which should help with this
reliability. So long as we're upgrading to this version, we may as well
update our other dependencies.
When accepting a receive from any process, another process can complete
this phase and move on to sending to neighbors. Race introduced in
8f4b0bf
@jedbrown jedbrown merged commit 22fed82 into main Dec 20, 2022
@jedbrown jedbrown deleted the jed/process-management branch December 20, 2022 00:15
keefehuang pushed a commit to keefehuang/rsmpi that referenced this pull request Oct 17, 2023
jedbrown added a commit that referenced this pull request Oct 19, 2023
* Extern required complex types from mpi

* Add complex feature

Add feature "complex" and optional dendency "num_complex".
Tie `Complex<T>` implementation with C types.

* Add complex number example to example/

* upgrade MSRV to 1.60 (#161)

CI was failing because 1.60-incompatible dependencies were pulled in so
may as well upgrade what we can.

* Add RSMPI_UNWEIGHTED (#160)

Add RSMPI_UNWEIGHTED() as a function because MPI_UNWEIGHTED can be a link-time constant, which can't be used to initialize an object with static storage duration.

* docs: remove "Process management" as not implemented

#140

* Cargo upgrade and MSRV 1.65

MSRV of transitive deps had already updated so this is just reflecting reality.

* Merge conflict Cargo.toml

* Config so that complex code runs only with feature

* Tidy up dependencies

Remove unneeded `derive` feature comments.
Arranged in dependencies in alphabetical order.
Remove unneeded spaces.

* Remove #cfg complex and update Cargo.toml

* Add complex feature flag to window runner

* Fix complex_number test

* cargo fmt

---------

Co-authored-by: Keefe Huang <keefe.huang@tum.de>
Co-authored-by: Jed Brown <jed@jedbrown.org>
Co-authored-by: Matthew Scroggs <matthew.w.scroggs@gmail.com>
Cydhra pushed a commit to Cydhra/rsmpi that referenced this pull request Oct 29, 2023
Cydhra pushed a commit to Cydhra/rsmpi that referenced this pull request Oct 29, 2023
* Extern required complex types from mpi

* Add complex feature

Add feature "complex" and optional dendency "num_complex".
Tie `Complex<T>` implementation with C types.

* Add complex number example to example/

* upgrade MSRV to 1.60 (rsmpi#161)

CI was failing because 1.60-incompatible dependencies were pulled in so
may as well upgrade what we can.

* Add RSMPI_UNWEIGHTED (rsmpi#160)

Add RSMPI_UNWEIGHTED() as a function because MPI_UNWEIGHTED can be a link-time constant, which can't be used to initialize an object with static storage duration.

* docs: remove "Process management" as not implemented

rsmpi#140

* Cargo upgrade and MSRV 1.65

MSRV of transitive deps had already updated so this is just reflecting reality.

* Merge conflict Cargo.toml

* Config so that complex code runs only with feature

* Tidy up dependencies

Remove unneeded `derive` feature comments.
Arranged in dependencies in alphabetical order.
Remove unneeded spaces.

* Remove #cfg complex and update Cargo.toml

* Add complex feature flag to window runner

* Fix complex_number test

* cargo fmt

---------

Co-authored-by: Keefe Huang <keefe.huang@tum.de>
Co-authored-by: Jed Brown <jed@jedbrown.org>
Co-authored-by: Matthew Scroggs <matthew.w.scroggs@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants