24小时热门版块排行榜    

查看: 662  |  回复: 5

q:1306140890

木虫 (正式写手)

[求助] 关于并行分区中消息传递的问题? 已有1人参与

subroutine read_b(ita)
        integer ny0,nz0,ii,ita

        if(myid==0)then
                allocate(du0(0:nz,1:3))
                                open(3,file='./inflow/du.dat',form='unformatted')
                                read(3)
                                read(3)((du0(k,l),k=0,nz),l=1,3)
                                close(3)

                do ii=0,numprocs-1
                                  do l=1,3
                                  do k=0,mysizez(ii)-1
                                        buffer(k+(l-1)*mysizez(ii))=real(du0(ibeginz(ii)+k,l))
                                        buffer(k+(l+2)*mysizez(ii))=imag(du0(ibeginz(ii)+k,l))
                                  enddo
                                  enddo
                                  call MPI_BSEND(buffer(0),3*mysizez(ii)*2,MPI_REAL8,ii,ii,MPI_COMM_WORLD,ierr)
                 enddo
                 deallocate(du0)
        endif
               
                call MPI_RECV(buffer(0),3*(kn+1)*2,MPI_REAL8,0,MPI_ANY_TAG,MPI_COMM_WORLD,status,ierr)
                do l=1,3
                            do k=0,kn
                                        du(k,l)=buffer(k+(l-1)*(kn+1))+ai*buffer(k+(l+2)*(kn+1))
                enddo
                enddo
   
        endsubroutine

1)这个子程序哪儿有问题?
2)各个进程在receive之后是如何把自己分区内的数据合成du的?接收的buffer长度和发送的不一样这不矛盾吗?(本程序是基于别的程序改的,原程序也是这么写的)
望不吝赐教,谢谢!
回复此楼

» 猜你喜欢

好之者不如乐之者
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

FMStation

至尊木虫 (知名作家)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
q:1306140890: 金币+20, 有帮助, 我已经想明白这个问题了,程序本身是没有问题的。金币全给你吧,谢谢回帖! 2016-09-01 10:50:19
if(myid==0)then
...
  endif

else 部份?
2楼2016-08-31 10:45:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

q:1306140890

木虫 (正式写手)

引用回帖:
2楼: Originally posted by FMStation at 2016-08-31 10:45:14
if(myid==0)then
...
  endif

else 部份?

我觉的else不是必须的吧,这里只是用0进程读取数据并发送消息而已,其他进程不需要都读入数据,否则发送消息就没意义了吧。
好之者不如乐之者
3楼2016-08-31 11:42:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

FMStation

至尊木虫 (知名作家)

【答案】应助回帖

??????????????? (myid==0) ???Д?
???????? read_b
4楼2016-08-31 18:01:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

q:1306140890

木虫 (正式写手)

???????:
4?: Originally posted by FMStation at 2016-08-31 18:01:43
??????????????? (myid==0) ???Д?
???????? read_b

"???????? read_b"?????????
好之者不如乐之者
5楼2016-08-31 19:21:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

FMStation

至尊木虫 (知名作家)

subroutine read_b(ita)
6楼2016-08-31 20:13:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 学员GMPvWK 的主题更新
信息提示
请填处理意见