24小时热门版块排行榜    

查看: 323  |  回复: 2

wangxn06

金虫 (正式写手)

[求助] MPI编程中遇到的一个奇怪问题!太不可思议了 已有1人参与

一段简单的MPI程序:

        If(myproc == 0)Then     !  receive data from processor 0


100       Do N = 1, 2
101       Do M = 1, 2
102       Do L = 1, 2
103
104                If(id(L,M,N)==0) CYCLE
105
106            SOURCE=id(L,M,N)
107            MYTAG =!
108            NUM   =!
109            Call MPI_RECV (VAR,NUM,MPI_REAL,SOURCE,
110        1                   MYTAG,MPI_COMM_WORLD,ISTAT,IERR)
111
112        Enddo;Enddo;Enddo
113
114        Elseif(myproc /= ROOT)Then
115
116            DEST  =0
117            MYTAG =!
118            NUM   =!
119            Call MPI_SSEND (VAR,NUM,MPI_REAL,DEST,
120        1                   MYTAG,MPI_COMM_WORLD,ISTAT,IERR)
121        Endif



错误处在进程0,程序运行了几个循环后,在Call MPI_RECV...之前L=2,M=2,N=1,从Call MPI_RECV出来后变成了L=2,M=3,N=1,为什么?L,M,N和Call MPI_RECV无关啊!
进程0继续执行到第104行时,L=1,M=4,N=1,循环怎么还在继续啊!真搞不明白,
错误提示是MPI_RECV给的因为rank的值出错了。

请问大家这是啥问题啊?问题出在MPI_RECV里,它到底干啥了?
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

masharp

金虫 (小有名气)

【答案】应助回帖


wangxn06: 金币+1 2014-07-26 14:56:41
MPI_RECV就是接收别的进程发过来的数据啊。
查查id(L,M,N)这个函数干了啥吧
2楼2014-07-25 11:12:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wangxn06

金虫 (正式写手)

问题已经解决!
3楼2014-07-26 14:56:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 wangxn06 的主题更新
信息提示
请填处理意见