考虑一下方法索引。我从一个数组中发送/接收元素,该数组的位置是随机的。例如,位置为5,16,102,1001,.的元素在设置MPI数据类型之前,我应该将它们彼此相邻地排列一下,这样会更好吗?
发布于 2014-02-02 23:28:22
定义“更好”。
这可能会使您的代码更易于维护,因为与设置索引数据类型相比,在内存中交换值并将其作为单个数组发送可能更容易,而且更容易出错。
就性能而言,这是非常不必要的,除非您可能有太多的值可供选择,而这些值并不都适合内存,而且操作系统不得不求助于分页。即使如此,硬盘访问仍可能比网络流量更快,因此与传递消息的固有开销相比,性能增益可能是微不足道的。我甚至没有考虑排序数组的算法开销。当然,和往常一样,唯一正确的答案是“如果我做X而不是Y,它会更有效吗?”就是“两样都写,自己看看”。
简而言之,我不会麻烦地重新安排您的数据,除非您特别希望避免出于任何原因使用派生的MPI数据类型。派生数据类型是为这个场景创建的。
https://stackoverflow.com/questions/21516419
复制相似问题