【问题标题】:MPI Scatter only sending first elementMPI Scatter 仅发送第一个元素
【发布时间】:2014-04-20 22:29:24
【问题描述】:

我只是试图将一些字符串分散到节点,然后将它们接收回一个新数组中。当我打印新数组时,终端将输出

    name1
    (empty line) 
    (empty line)
    (empty line)

这是我的散点图:

    std::string files[4] = {"name1", "name2", "name3", "name4"};
    std::string recArr[4];


    MPI_Scatter(files, 5, MPI_CHAR, recArr, 5, MPI_CHAR, 0, world);


    for(int i = 0; i < 4; i++) std::cout << recArr[i]  << "\n";

【问题讨论】:

    标签: c++ openmpi


    【解决方案1】:

    问题是您只发送数组的前 5 个字符。请记住,MPI_CHAR 与字符串不同。你必须传入一个字符数组并告诉 MPI 数组中有多少个字符。将所有字符串的长度相加,然后重试。

    【讨论】:

    • 我的想法是我必须指定每个字符串对象有多少个字符才能正确发送到每个进程。
    • 不,您要指定要发送的指定数据类型的数量。你说你正在发送MPI_CHARs,所以 MPI 将结束 countMPI_CHARs。你可以在这里找到更多信息:stackoverflow.com/questions/20620421/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-26
    • 1970-01-01
    • 2016-07-22
    相关资源
    最近更新 更多