Parallel processing MPI_测试:无效的MPI_请求
我想测试mpi_iSend和mpi_iRecv是否运行良好 我有两个requestargument向量:一个用于所有mpi_iSend的向量,另一个用于所有mpi_iRecv 关键是程序在开始运行MPI_测试周期之前运行良好。我试过用2个数字做I=1,2,仍然是相同的错误 PMPI_测试中出现致命错误:无效的MPI_请求,错误堆栈: PMPI_Test166:MPI_Testrequest=0x7fff93fd2220,flag=0x7fff93fd1ffc, 状态=0x7fff93fd2890失败的PMPI_测试121:无效的MPI_请求Parallel processing MPI_测试:无效的MPI_请求,parallel-processing,mpi,Parallel Processing,Mpi,我想测试mpi_iSend和mpi_iRecv是否运行良好 我有两个requestargument向量:一个用于所有mpi_iSend的向量,另一个用于所有mpi_iRecv 关键是程序在开始运行MPI_测试周期之前运行良好。我试过用2个数字做I=1,2,仍然是相同的错误 PMPI_测试中出现致命错误:无效的MPI_请求,错误堆栈: PMPI_Test166:MPI_Testrequest=0x7fff93fd2220,flag=0x7fff93fd1ffc, 状态=0x7fff93fd2890
istatus是如何声明的?好的,用var声明更新了它。您有匹配的发送和接收吗?现在,在主/从模式中,您似乎只在从节点上,因为您正在向节点1发送/接收数据。节点1有匹配的发送/接收吗?是的,我已经更新了。
INTEGER :: ierr, myid, istatus(MPI_STATUS_SIZE), num, i, n
INTEGER,parameter :: seed = 86456, numbers=200
INTEGER :: req1(numbers), req2(numbers)
LOGICAL :: flag
CALL MPI_COMM_RANK(MPI_COMM_WORLD, myid, ierr)
IF (myid==0) THEN
DO n=1, numbers
req1(n)=0
req2(n)=0
num=IRAND()
CALL MPI_ISEND(num,1,MPI_INTEGER,1,1,MPI_COMM_WORLD,req1(n),ierr)
CALL MPI_IRECV(best_prime,1,MPI_INTEGER,1,0,MPI_COMM_WORLD,req2(n),ierr)
END DO
ELSE IF (myid==1) THEN
DO i=1, numbers
CALL MPI_TEST(req2(i),flag,istatus,ierr)
IF (flag .eqv. .false.) THEN
WRITE(*,*)'RECV',i,'non-blocking FAIL'
ELSE IF (flag .eqv. .true.) THEN
WRITE(*,*)'RECV',i,'non-blocking SUCCESS'
END IF
END DO
END IF