Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么要使用“MPI_类型_向量”来指定跨距?_Mpi_Stride - Fatal编程技术网

为什么要使用“MPI_类型_向量”来指定跨距?

为什么要使用“MPI_类型_向量”来指定跨距?,mpi,stride,Mpi,Stride,在MPI文档中,我了解到MPI_Type_vector和MPI_Type_contiguos之间的区别在于第一个允许指定数组元素之间的跨距 为什么人们会有兴趣这样做,而不是简单地使用MPI\u-Type\u-continuous?您可以将MPI\u-Type\u-continuous()视为无跨步的MPI\u-Type\u-vector()的特例 例如,在Fortran中,数组是列主数组。所以如果你考虑下面的数组 integer :: A(n,m) 列的派生数据类型可以通过 CALL MPI_

在MPI文档中,我了解到
MPI_Type_vector
MPI_Type_contiguos
之间的区别在于第一个允许指定数组元素之间的跨距


为什么人们会有兴趣这样做,而不是简单地使用
MPI\u-Type\u-continuous

您可以将
MPI\u-Type\u-continuous()
视为无跨步的
MPI\u-Type\u-vector()
的特例

例如,在Fortran中,数组是列主数组。所以如果你考虑下面的数组

integer :: A(n,m)
列的派生数据类型可以通过

CALL MPI_Type_contiguous(n, MPI_INTEGER, newtype, ierr)

但描述行的唯一方法是通过
MPI\u Type\u vector()

请注意,如果您希望一次发送/接收多行数据,则需要调整数据类型的大小,这样完整的序列将是

CALL MPI_Type_vector(m, 1, n, MPI_INTEGER, tmptype, ierr)
CALL MPI_Type_size(MPI_INTEGER, integer_size, ierr)
CALL MPI_Type_create_resized(tmptype, 0, integer_size, newtype, ierr)
CALL MPI_Type_free(tmptype, ierr) 

请编辑您的帖子并修复
MPI\u Type\u contiguos()
中的打字错误好吗?具有带间隙(跨步)的重复模式的数据类型允许发送或接收到数组的一部分,例如子矩阵、高维矩阵的切片等。
CALL MPI_Type_vector(1, n, n, MPI_INTEGER, newtype, ierr)
CALL MPI_Type_vector(m, 1, n, MPI_INTEGER, newtype, ierr)
CALL MPI_Type_vector(m, 1, n, MPI_INTEGER, tmptype, ierr)
CALL MPI_Type_size(MPI_INTEGER, integer_size, ierr)
CALL MPI_Type_create_resized(tmptype, 0, integer_size, newtype, ierr)
CALL MPI_Type_free(tmptype, ierr)