gpt4 book ai didi

mpi - 使用 MPI 合并所有等级的数组

转载 作者:行者123 更新时间:2023-12-04 22:23:41 29 4
gpt4 key购买 nike

我在所有等级上都有一个相同长度的数组(假设为 10)。数组中的某些值包含处理器的等级。例如 ...

Proc 1: [1 0 0 0 0 1 0 0 0 1]

Proc 2: [0 2 2 0 0 0 0 2 2 0]

Proc 3: [0 0 0 3 3 0 3 0 0 0]

现在所有处理器以以下数组结尾的最有效方法是什么(使用 MPI-2)
[1 2 2 3 3 1 3 2 2 1]

它可以被认为是所有数组的总和(分布在所有等级上)。性能很重要,因为我想在 1K+ 内核上快速做到这一点。

最佳答案

这是可行的 MPI_Allreduce()MPI_SUMMPI_MAX运算符(operator)。参见 MPI_Allreduce 的文档.它应该以给定架构的最佳方式之一实现。

int arr_a[LEN], arr_b[LEN];
...
// Fill in arr_a
MPI_Allreduce(arr_a, arr_b, LEN, MPI_INT, MPI_SUM, MPI_COMM_WORLD);
// Result is now in arr_b

或者,如果内存不足,您可以使用就地操作,但这会损害性能:
MPI_Allreduce(MPI_IN_PLACE, arr_a, LEN, MPI_INT, MPI_SUM, MPI_COMM_WORLD);

关于mpi - 使用 MPI 合并所有等级的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10885970/

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