fortran

时间:2016-04-12 16:41:37

标签: fortran mpi

我对Fortran中的mpi_comm_split提出了一些问题。

问题I) 如何使用mpi_comm_split创建单个通信器?例如,我想创建一个仅基于我的域顶部处理器(Cartesian)的通信器。我知道我必须使用MPI_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)

为什么它不起作用?

问题II)

当我想制作几个MPI_COMM_SPLIT(up,down,side1,side2的新comm)时,它会返回错误:

[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

有谁知道为什么?

问题III)

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

0 个答案:

没有答案