Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.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_Type_commit是否隐式调用MPI_COMM_WORLD中所有进程上的屏障?_Mpi_User Defined Types_Barrier - Fatal编程技术网

MPI_Type_commit是否隐式调用MPI_COMM_WORLD中所有进程上的屏障?

MPI_Type_commit是否隐式调用MPI_COMM_WORLD中所有进程上的屏障?,mpi,user-defined-types,barrier,Mpi,User Defined Types,Barrier,在我的代码中,我定义了一个新的MPI用户定义的数据类型。 我想知道MPI_Barrier函数是否必须遵循MPI_提交,或者必须放置在新数据类型首次使用出现的某个位置,以便所有进程都确认并同意新数据类型的定义 谢谢。MPI数据类型是创建它们的流程的私有业务。它们不需要匹配,事实上,接收进程使用不同于发送进程的类型映射是可能的,也是完全合法的(当然,只要它不会导致内存损坏)。因此,在使用Define或Commit否时,没有任何同步-MPI_类型命令内没有通信,它们完全是本地的。特别是,流程不一定必须

在我的代码中,我定义了一个新的MPI用户定义的数据类型。 我想知道MPI_Barrier函数是否必须遵循MPI_提交,或者必须放置在新数据类型首次使用出现的某个位置,以便所有进程都确认并同意新数据类型的定义


谢谢。

MPI数据类型是创建它们的流程的私有业务。它们不需要匹配,事实上,接收进程使用不同于发送进程的类型映射是可能的,也是完全合法的(当然,只要它不会导致内存损坏)。因此,在使用
Define
Commit

否时,没有任何同步-MPI_类型命令内没有通信,它们完全是本地的。特别是,流程不一定必须就新类型的定义达成一致

如果秩1向秩0发送一个新的数据类型,则它们所需要同意的只是数据量,而不是类型的布局。例如,假设秩1将它的所有(比如2d)本地数组发送到秩0-它可能只选择发送一个MPI类型的NX*NY浮点。但是秩0可能将其接收到一个更大的全局数组中;它可能会选择将其接收到全局类型的子阵列类型中。即使这些数据类型具有相同的名称,只要数据总量相同,它们也可以在内存中描述不同的最终布局