Fortran Coder

标题: MPI并行时接收错误问题 [打印本页]

作者: xiaoshuaihao666    时间: 2023-7-10 21:41
标题: MPI并行时接收错误问题
老师好,我想问下我用MPI并行,想要把进程1的数据输出给进程0,为什么接收到的进程0的数据异常呢?
[Fortran] 纯文本查看 复制代码
IF(rank==1)THEN             !观察点所处进程不是0进程并且为该观察进程时
                 call MPI_SEND(TmpEx,1,MPI_REAL,0,19,MPI_COMM_WORLD,ierr)!这边进行发送是发送到0进程,0进程进行接收
             call MPI_SEND(TmpEy,1,MPI_REAL,0,20,MPI_COMM_WORLD,ierr)
             call MPI_SEND(TmpEz,1,MPI_REAL,0,21,MPI_COMM_WORLD,ierr)
                 call MPI_SEND(TmpHx,1,MPI_REAL,0,22,MPI_COMM_WORLD,ierr)
                 call MPI_SEND(TmpHy,1,MPI_REAL,0,23,MPI_COMM_WORLD,ierr)
                 call MPI_SEND(TmpHz,1,MPI_REAL,0,24,MPI_COMM_WORLD,ierr)
         ENDIF
                 call MPI_Barrier(MPI_COMM_WORLD,IERR)         !///这边进程同步
                 write(*,*),'发送前','rank号',rank   
                 Write(*,'(I3,7e20.10e3)')oby1,Ctime(mstart(num)+mstop(num)-1),TmpHx,TmpHy,TmpHz,&
                                &TmpEx,TmpEy,TmpEz
         call sleep(3)
         !!!这边对所传递的数据进行接收,全都在0进程进行接收==================
         IF(rank==0)THEN
                 call MPI_RECV(TmpEx,1,MPI_REAL,1,19,MPI_COMM_WORLD,STATUS,ierr)
                 call MPI_RECV(TmpEy,1,MPI_REAL,1,20,MPI_COMM_WORLD,STATUS,ierr)
                 call MPI_RECV(TmpEz,1,MPI_REAL,1,21,MPI_COMM_WORLD,STATUS,ierr)
                 call MPI_RECV(TmpHx,1,MPI_REAL,1,22,MPI_COMM_WORLD,STATUS,ierr)
                 call MPI_RECV(TmpHy,1,MPI_REAL,1,23,MPI_COMM_WORLD,STATUS,ierr)
                 call MPI_RECV(TmpHz,1,MPI_REAL,1,24,MPI_COMM_WORLD,STATUS,ierr)
         ENDIF
                 call MPI_Barrier(MPI_COMM_WORLD,IERR)         !///这边进程同步
                 write(*,*),'接收后','rank号',rank   
                 Write(*,*)oby1,Ctime(mstart(num)+mstop(num)-1),TmpHx,TmpHy,TmpHz,&
                                &TmpEx,TmpEy,TmpEz
             pause 22


QQ图片20230710213610.png (11.91 KB, 下载次数: 190)

QQ图片20230710213610.png

QQ图片20230710213558.png (26.22 KB, 下载次数: 191)

QQ图片20230710213558.png

作者: xiaoshuaihao666    时间: 2023-7-10 22:08
感谢各位老师,问题已经解决了,是数据精度的问题。




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2