c - 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?
解决方案
基本上,您可以手动将数据打包/解包到连续缓冲区或使用派生数据类型。
手动打包/解包需要更多代码、更多内存,但打包/解包时间可以减少
OpenMP
例如。派生数据类型需要更少的代码、更少的内存,但数据通常在后台打包/解包,这通常由单个线程执行。
底线,使用派生数据类型可以节省您将数据复制到缓冲区或从缓冲区复制数据,但可能并不总是最快的选择。
推荐阅读
- kendo-ui - 剑道自动完成截断选定的值
- java - 如何检索按钮位置?
- c++ - 在井字游戏中需要 for 循环的帮助
- vb.net - IIS 在控制器操作之前缓冲请求内容
- selenium - Python Selenium:全局驱动程序-“驱动程序”未在全局范围内定义
- python - Python中的矩阵镜像/转换
- gradle - gradle.user.home - 在 gradle.properties、build.gradle 或 settings.gradle 中设置到项目相对位置?
- excel - 如何使用间接引用另一个选项卡的每个单元格
- jquery - 使用 jquery 在 html xml 命名空间 (xmlns) 标记中为多个 xhtml 文件添加 RTL 支持
- python - 如何将宽(15,000 + 列)CSV 上传到 Apache Hbase 实例