Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/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
fortran中的mpi_comm_拆分错误_Fortran_Mpi - Fatal编程技术网

fortran中的mpi_comm_拆分错误

fortran中的mpi_comm_拆分错误,fortran,mpi,Fortran,Mpi,我对Fortran中的mpi\u comm\u split有一些问题 问题一) 如何使用mpi\u comm\u split创建单台通信器?例如,我想创建一个仅基于域顶部(笛卡尔)处理器的通信器。我知道我必须使用MPI\u UNDEFINED来处理我不想成为新通信器一部分的流程,但我下面的代码并没有达到我的预期 do k=1,size(proc_up) if(rank==proc_up(k)) then color_up=1 else color_up=MPI_UNDEFINED end if

我对Fortran中的mpi\u comm\u split有一些问题

问题一) 如何使用
mpi\u comm\u split
创建单台通信器?例如,我想创建一个仅基于域顶部(笛卡尔)处理器的通信器。我知道我必须使用
MPI\u UNDEFINED
来处理我不想成为新通信器一部分的流程,但我下面的代码并没有达到我的预期

do k=1,size(proc_up)
if(rank==proc_up(k)) then
color_up=1
else 
color_up=MPI_UNDEFINED
end if
call MPI_COMM_SPLIT(comm2d ,color_up ,coords(2) ,comm_up ,code)
为什么它不起作用

问题二)

当我要进行多个MPI_COMM_分割时(向上、向下、侧1、侧2的新通信),它会返回一个错误:

[nin:30039] *** An error occurred in MPI_Comm_split
[nin:30039] *** on communicator MPI_COMM_WORLD
[nin:30039] *** MPI_ERR_ARG: invalid argument of some other kind
[nin:30039] *** MPI_ERRORS_ARE_FATAL: your MPI job will now abort
有人知道为什么吗

问题三)


我也可以使用
MPI\u Cart\u sub
,但它会返回许多组进程。如何确保只使用我想要的组?

在Q1中,循环的结束操作在哪里?Q2请展示代码-通常,如果您展示一个小而完整的程序来说明您遇到的问题,我们会更容易提供帮助。对于Q3 MPI_CART_SUB,可以将笛卡尔分解为低维对象,例如,立方体可以切割为平面。给定进程的通讯器包含所选平面中的所有进程。请用单个答案回答您的问题。例如,只询问您的碰撞,然后用另一个问题询问笛卡尔通信者。请务必显示您的代码。阅读帮助部分了解如何在这里提问。好的,我是新来的,所以我还不知道如何管理(我将阅读帮助部分)。对于这个问题,我)确实我忘记了结局(就在分裂之前)。那么对于问题I)你知道为什么它不起作用吗?过程的内容是什么?从某一点开始,您需要它是本地排名,如果它只是一个地方的本地排名,而后续条目不是,那么您将再次用未定义的MPI_覆盖color_up。这是你想要的吗?我们不知道您想要什么,所以您需要更清楚地描述您使用什么作为输入,以及您期望什么作为输出。