Parallel processing 在就地使用MPI\U时,MPI\U在IGHBOR\U ALL中出错

Parallel processing 在就地使用MPI\U时,MPI\U在IGHBOR\U ALL中出错,parallel-processing,mpi,in-place,Parallel Processing,Mpi,In Place,MPI\u在IGHBOR\u ALL中是否支持MPI\u就地调用,或者函数调用是否存在问题?表示发送不支持MPI_IN_PLACE?这是否意味着receive也不支持它 如果我将接收缓冲区切换到MPI_,则代码会中断 ierr = MPI_Ineighbor_alltoall( &P( 0 ), P.chunkSize, MPI_DOUBLE, &R(0), P.chunkSize, MPI_DOUBLE, nbrComm[0], &request );

MPI\u在IGHBOR\u ALL中是否支持MPI\u就地调用,或者函数调用是否存在问题?表示发送不支持MPI_IN_PLACE?这是否意味着receive也不支持它

如果我将接收缓冲区切换到MPI_,则代码会中断

ierr = MPI_Ineighbor_alltoall( &P( 0 ), P.chunkSize, MPI_DOUBLE, &R(0),        P.chunkSize, MPI_DOUBLE, nbrComm[0], &request );

ierr = MPI_Ineighbor_alltoall( &P( 0 ), P.chunkSize, MPI_DOUBLE, MPI_IN_PLACE, P.chunkSize, MPI_DOUBLE, nbrComm[0], &request );
由于以下错误

*** An error occurred in MPI_Ineighbor_alltoall
*** reported by process [3809738753,4575480487799160832]
*** on communicator MPI_COMM_WORLD
*** MPI_ERR_ARG: invalid argument of some other kind
*** MPI_ERRORS_ARE_FATAL (processes in this communicator will now abort,
***    and potentially your MPI job)

显示的两行代码应该是相同的吗?或者它们是为了说明对比?如果调用
MPI\u Neighbor\u alltoall
(阻塞版本),是否会发生错误?你能在a中重现错误吗?对不起,第一个有一个不同的缓冲区用于接收。。。我修复了它是的,错误也发生在阻塞版本中…它说“就地”选项对于这个操作没有意义。”这是针对阻塞版本的,所以我假设它对于非阻塞也是正确的。