-
Notifications
You must be signed in to change notification settings - Fork 47
MPI Split communicator. #318
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
base: develop
Are you sure you want to change the base?
MPI Split communicator. #318
Conversation
mo-joshuacolclough
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
(From discussion with @MarekWlasak)
|
Looks like a good start Josh, thanks. I should have mentioned before, but all PRs must be from branches started from develop (as well as targeting develop). It looks like you've started from main, hence the apparent conflicts with CMakeLists.txt. I'd recommend rebasing all of your commits on top of develop before continuing to save yourself some headaches later. |
|
Thanks @samhatfield - we are working off of the tagged release we are using currently, to avoid any potential complications with using develop in our codebase... (Happy to deal with the headaches at a later date... :) ) Just while we get things working. I don't intend for this to get merged, just for sharing at the moment. We are pleased so far that the changes needed seem to be quite minimal! |
That's fair enough! Okay then, let's discuss what you've done so far in our next call. |
wdeconinck
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice progress on building up some test cases.
You can keep the transi developments here for now. I find it useful as a discussion point. We can always split the PR in pieces later.
I still believe forking from a develop branch will be less painful, especially because 1.6.2 is quite old. Already this (draft, granted) PR is not mergeable due to merge conflicts. Version 1.7.0 is now out. Perhaps you can test this tagged release in the stack; That feedback is also valuable. |
|
Thanks @samhatfield @wdeconinck - I have merged develop into the branch to bring it up-to-date, and I've tidied the changes and used MPL where I can. Please can you take another look when you get the chance! |
|
Thanks @mo-joshuacolclough! Yes we will take a look soon. |
|
Hi @mo-joshuacolclough this looks great to me now, and a good starting point to begin the work of making the MPI communicator configurable per trans handle. |
|
Couple of early comments:
|
|
BTW I think I planted the seed of the |
|
Thanks Sam, can confirm that the test works with your changes - 0e68acf. Now updating the transi code. |
|
I'm of the opinion that whatever can be done with MPL is good to do with MPL especially in the Fortran tests. However! ectrans should also be able to be used within codes that don't use MPL and be able to be set up with regular MPI communicators and be interoperable with MPI routines and MPI comms. MPL should not be the ground truth for how MPI is run in packages that use ectrans. For this reason, I found that also previous implementation using MPI in the driver layer in Fortran was OK in my opinion. For transi, the use of MPL is really an implementation detail of ectrans, and standard MPI calls are advised. In the context of Atlas these mpi communicators are managed and split via eckit. |
Add tests to ensure ectrans/transi works with split MPI communicators. Requires no changes to ectrans, but does require an extension to transi to allow for setting of the fiat default MPL communicator.
Added:
trans_set_mpi_commmethod to set the user communicator prior to setup of trans. Includes some error checking to ensure correct usage (prior to trans_init. And if it's not, ignore if it's called with the same communicator that has already been set).