-
Notifications
You must be signed in to change notification settings - Fork 6
Adding AdiosGlobalComm for global data exchange #54
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: main
Are you sure you want to change the base?
Conversation
|
Please explain a bit more in the PR description or ideally, in code comments, what 'global' means and an example of how this is used. Please also undo all the whitespace changes. It looks like redev_comm.h has many lines of just reformatting. |
| enum class ProcessType { Client = 0, Server = 1 }; | ||
| enum class TransportType { BP4 = 0, SST = 1 }; | ||
|
|
||
| enum class CommType{ Ptn = 0, Global = 1 }; |
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.
Let's change this to Partitoned instead of Ptn. It's possible @cwsmith will disagree with me here, but I think it will be more clear to have the full name spelled out what the distinction is between the two options.
Counter argument is we use Ptn for the partition class.
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.
Partitioned is fine with me. We just need to be sure the user interface documentation discusses it.
| */ | ||
| template<typename T> | ||
| class AdiosComm : public Communicator<T> { | ||
| class AdiosPtnComm : public Communicator<T> { |
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.
AdiosPartitionedComm
| return CommV{impl_.template CreateComm< | ||
| CommunicatorTypeMap<CommunicatorDataType::INT8>::type>( | ||
| std::move(name), comm)}; | ||
| std::move(name), comm, std::move(ctype))}; |
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.
No need to move ctype since it's an enum move will have no impact.
| * @param[in] eng_ ADIOS2 engine for writing on the sender side | ||
| * @param[in] io_ ADIOS2 IO associated with eng_ | ||
| * @param[in] name_ unique name among AdiosComm objects | ||
| * @param[in] name_ unique name among AdiosPtnComm objects |
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.
Since we now have the partitioned and global communicators, specify that this communicator works on the partitioned data.
This PR introduces a Global ADIOS communicator
Key Changes
AdiosGlobalComm::Communicatorclass. This global communicator is intended for exchanging global data and metadata between coupled applications.AdiosChannel::CreateCommto route communicator creation through theCommTypeenum which defines the Ptn and Global communication modes..The existing API remains unchanged. If
CommTypeis not provided,channel.CreateCommdefaults toCommType::Ptnand behaves as before.Added a virtual (non-pure) function
redev::Communicator::SetCommParamsto specify the active variable's name and size.redev::Communicator::send()operated on a raw pointer, which prevented communicating the message size without deducing it from the in/out layout.A testcase to test
AdiosGlobalComm.