Adding AdiosGlobalComm for global data exchange#54
Adding AdiosGlobalComm for global data exchange#54hgangwar wants to merge 11 commits intoSCOREC:mainfrom
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.
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.
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> { |
| 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.
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.
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.