24小时热门版块排行榜    

查看: 282  |  回复: 0

mhyuan

金虫 (小有名气)

[求助] 有关MPI的一个小问题,请求高手指点迷津

在一个串行程序中,需要把某一模块写成MPI并行的,并且在串行中要循环调用这一模块,请问怎么实现?比如下面这个例子(是错误的)
        program array

        implicit none
        integer :: a(8)
        call prog111(a)
        print*, a
        end


        subroutine prog111(a)
        implicit none
        integer :: a(8)
        integer :: i

        do i=1,5
        call prog(a)
        enddo
        do i=1,8
          a(i)=a(i)*a(i)*a(i)
        enddo
        end

        subroutine prog(a)
        implicit none
        include 'mpif.h'
        integer :: ierr,myid,np
        integer :: a(8)
        call mpi_init(ierr)
        call mpi_comm_size(mpi_comm_world,np,ierr)
        call mpi_comm_rank(mpi_comm_world,myid,ierr)

        a(1)=myid

        call mpi_gather(a,1,mpi_integer,a,1,mpi_integer,0,mpi_comm_world,ierr)

        call mpi_finalize(ierr)

        end
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

智能机器人

Robot (super robot)

我们都爱小木虫

相关版块跳转 我要订阅楼主 mhyuan 的主题更新
信息提示
请填处理意见