首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用MPI从各个级别合并数组

使用MPI从各个级别合并数组
EN

Stack Overflow用户
提问于 2012-06-04 18:07:01
回答 1查看 2.2K关注 0票数 5

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

代码语言:javascript
复制
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)是什么?

代码语言:javascript
复制
[1 2 2 3 3 1 3 2 2 1]

它可以被认为是所有数组(分布在所有级别上)的总和。性能很重要,因为我想在1K+核上快速完成这个任务。

EN

回答 1

Stack Overflow用户

发布于 2012-06-04 18:52:03

这可以由MPI_Allreduce()使用MPI_SUMMPI_MAX运算符完成。请参阅全减的文档。对于给定的体系结构,它应该以一种可能的最佳方式实现。

代码语言:javascript
复制
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

或者,如果内存不足,可以使用就地操作,但这会影响性能:

代码语言:javascript
复制
MPI_Allreduce(MPI_IN_PLACE, arr_a, LEN, MPI_INT, MPI_SUM, MPI_COMM_WORLD);
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10885970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档