gpt4 book ai didi

c++ - 通过 mpi 发送 c++ std::vector

转载 作者:行者123 更新时间:2023-12-01 14:05:27 24 4
gpt4 key购买 nike

我知道一个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> specialization没有 data()成员函数。底层存储方案is not specified按标准:

    There is no requirement that the data be stored as a contiguous allocation of bool values. A space-optimized representation of bits is recommended instead.



    唯一合理的选择发送 std::vector<bool>就是把它复制到 char的 vector 中(或一些类似的类型,如 std::int8_t ),然后发送该 vector 。更好的选择可能是避免 std::vector<bool>从一开始就在您的代码中。

    关于c++ - 通过 mpi 发送 c++ std::vector<bool>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59860967/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com