繁体   English   中英

MPI中派生数据类型的范围

[英]Extent of derived datatypes in MPI

我正在尝试为2D子矩阵创建数据类型并使用MPI处理它。 到目前为止,我发现的是这个问题。 答案完全涵盖了我的问题。 我唯一不了解的是如何计算子数组数据类型的范围。 任何解释都将真正有帮助。

这是从该问题的答案中复制的代码和语句:

MPI_Datatype newtype;
int sizes[2]    = {6,6};  /* size of global array */
int subsizes[2] = {3,3};  /* size of sub-region */
int starts[2]   = {0,0};  /* let's say we're looking at region "0",
                             which begins at index [0,0] */

MPI_Type_create_subarray(2, sizes, subsizes, starts, MPI_ORDER_C, MPI_INT, &newtype);
MPI_Type_commit(&newtype);

我们不能只将MPI_Scatter()(甚至是scatterv)与这些类型一起使用,因为这些类型的范围为16个整数。

实际上,我认为它们的范围是36个整数而不是16个? 无论如何,您是正确的,这种程度意味着在Scatter或Scatterv操作中子数组类型的划分并不容易。

您需要使用MPI_Type_create_resized将范围固定为更有用的范围,例如单个整数。

我在C中回答了类似的问题-MPI- 向数组发送/接收子数组 -乔纳森·杜尔西(Jonathan Dursi)发表了更完整的解释,其中涉及使用MPI在C发送2D数组块

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM