回 帖 发 新 帖 刷新版面

主题:fortran 使用openmpi并行计算的问题

初学者,刚学习并行计算,试了一个小程序

   program main
        implicit none
    include 'mpif.h'
        integer*4 ierr
        print*,'test *********** '    
              call MPI_INIT(ierr)
         call MPI_COMM_RANK(MPI_COMM_WORLD,rank,ierr)
         call MPI_COMM_SIZE(MPI_COMM_WORLD,size,ierr)
           print*,‘hollow world’
         call MPI_FINALIZE(ierr)

     print*,'test of result'
         stop

         end 


先对改程序利用mpif77 进行了编译生成a.out 的文件,然后利用qsub 提交 选择np=16,结果
‘test***********’出现了16次
‘hollo world’ 出现了16次
‘test of result’出现了16次,可是MPI_Init之前和MPI_Finalize 之后的程序不是不应该并行么?为什么会出现这种情况,第一次来贵板,还望各位高人不吝赐教

回复列表 (共3个回复)

沙发

MPI_Init和MPI_finalize是用于mpi库的初始化和终止函数,目的是用于MPI库的一些函数变量初始化,内存分配等工作,跟开辟进程没关系,开辟进程的多少是MPIRUN或者MPIEXEC来决定的,是在外部的操作。

板凳

我对这些理解也不是很清楚,望大牛指正!

3 楼


是用mpirun 分配的cpu数量,

我来回复

您尚未登录,请登录后再回复。点此登录或注册