首页 > 解决方案 > What's the benefit of mpi derived datatypes

问题描述

Let's suppose my 3d grid of procs needs to communicate 2d arrays with all nearest neighbors. I could simply store the 2d array as a 1d array to make the data contiguous and use send/recv. Can I expect any performance benefit if I used e.g. Mpi_type_vector instead?

标签: cmpi

解决方案


基本上,您可以手动将数据打包/解包到连续缓冲区或使用派生数据类型。

  • 手动打包/解包需要更多代码、更多内存,但打包/解包时间可以减少OpenMP例如。

  • 派生数据类型需要更少的代码、更少的内存,但数据通常在后台打包/解包,这通常由单个线程执行。

底线,使用派生数据类型可以节省您将数据复制到缓冲区或从缓冲区复制数据,但可能并不总是最快的选择。


推荐阅读