【问题标题】:What's the benefit of mpi derived datatypesmpi 派生数据类型有什么好处
【发布时间】:2018-10-11 23:41:56
【问题描述】:

假设我的 3d procs 网格需要与所有最近的邻居通信 2d 数组。我可以简单地将二维数组存储为一维数组以使数据连续并使用发送/接收。如果我使用例如,我可以期待任何性能优势吗?改为mpi_type_vector?

【问题讨论】:

    标签: c mpi


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 刚刚在 Cray xe6 上运行了几个基准测试,使用派生数据类型的速度似乎快了 10 倍。我想有一些优化正在进行,但我无法弄清楚它可能是什么。另一方面,在我的本地机器上,使用 mpi 派生的数据类型会导致更长的通信时间
    • 很好的反馈!后台打包/解包可以是多线程的,和/或硬件可以支持发送/接收非连续缓冲区。
    猜你喜欢
    • 1970-01-01
    • 2012-02-11
    • 2012-02-03
    • 2014-12-03
    • 2014-08-08
    • 2017-05-27
    • 2018-02-26
    • 1970-01-01
    相关资源
    最近更新 更多