【发布时间】:2020-01-22 13:35:13
【问题描述】:
我知道存储了一个std::vector<bool>is not necessarily an array of bools。
如果我想发送接收存储在std::vector<int> 中的int 数据,我会使用MPI_Send(vect.data(),num_of_ints,MPI_INT,dest_rk,tag,comm)。
我应该如何使用MPI_Send 发送std::vector<bool> ?特别是:
- 我可以/应该使用
vect.data()作为指向缓冲区的指针吗? - 我应该提供什么 MPI 类型?不知何故,我觉得
MPI_CXX_BOOL不适用(请参阅此question) - 我应该给出多少个元素? (与上一点有关)
【问题讨论】:
-
在这种情况下我不会使用
std::vector<bool>,因为严格来说它不是bools 的向量。std::vector<char>或struct Bool { bool x;};的向量是可能的替代方案 -
你也可以考虑使用
boost::vector<bool>这是标准向量where T=bool.