MPI_Type_indexed内存布局

时间:2014-02-02 21:23:30

标签: c mpi

考虑方法MPI_Type_indexed。我发送/接收来自数组的元素,这些元素以随机顺序排列。例如,位置为5,16,102,1001的元素......如果在设置MPI数据类型之前将它们彼此相邻排列会更好吗?

1 个答案:

答案 0 :(得分:1)

定义“更好”。

它可能使您的代码更容易维护,因为在内存中交换值并将它们作为单个数组发送可以说比设置索引数据类型更容易,并且更不容易出错。

在性能方面,这是非常不必要的,除非你可以选择这么多的值,因为它们并不都适合内存,操作系统必须采用分页。即便如此,硬盘驱动器访问仍然可能比网络流量更快,因此与传递消息的固有开销相比,性能增益可能会微不足道。我甚至没有考虑排序你的数组的算法开销。当然,和往常一样,问题的唯一真正答案是“如果我做X而不是Y,它会更有效吗?”是“对自己进行分析并亲眼看看”。

简而言之,我不打算重新安排您的数据,除非您特别想要避免因任何原因使用派生的MPI数据类型。为此场景创建了派生数据类型。