gpt4 book ai didi

c++ - 有没有办法在不知道每个进程中每个数组的大小的情况下执行 MPI_Gatherv?

转载 作者:行者123 更新时间:2023-11-30 04:49:19 24 4
gpt4 key购买 nike

我正在尝试为 int 数组执行 MPI_Gatherv,但不知道每个进程中每个数组的大小。有办法吗?

这是我的代码片段。

#include "mpi.h"
#include <iostream>

using namespace std;

int main(int argc, char *argv[]) {
MPI_Init(&argc, &argv);
int rank;
MPI_Comm_rank(MPI_COMM_WORLD, &rank);

int *local_arr;
int *arr;
int local_n;
int n;

if (rank == 0) {

// do gatherv without knowing the element sizes and displacements

} else {
// fill array with random size
srand(rank);
local_n = (rand()%10)+1;
local_arr = new int[local_n];

for (int i = 0; i < local_n; i++) {
local_arr[i] = i;
}

// do gatherv without knowing the element sizes and displacements
}
}

最佳答案

你真的不能那样做。 displacementselement_sizes 参数的存在表明了这一点。如果真的没有办法知道(没有办法在 root 处计算)root 将收到的计数,您将需要从每个节点并将其用作 MPI_Gatherv 中的位移

关于c++ - 有没有办法在不知道每个进程中每个数组的大小的情况下执行 MPI_Gatherv?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55457620/

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