如何使用MPI并行化基本的fortran do循环?

时间:2013-11-15 04:35:04

标签: parallel-processing fortran mpi fortran77 do-loops

我是MPI的新手。我有一个fortran 77程序,它读入一个大型数据文件(~1.7 GB),然后对数据进行一些分析。然后它读入下一个数据文件并再次进行分析。这个过程重复了'nstep'次(对我而言,nstep~ = 1000)。 我附上了代码的一些相关部分。分析本身并不耗时。读入大数据文件非常耗时。

注意MN是一个海量数字,我正在阅读的文件通常有4-4-4百万行(颗粒),即整数'i'在每一步都会发生变化。

目前读取1000个数据文件需要花费几个小时才能完成1个核心。我想并行化下面的程序(do循环),以便每个核心可以读入较小的数据块。

c *** DECLARATIONS ***    
     integer MN
     parameter (MN=4700000)
     ....etc
c ********************

c *** SELECT INPUT DATA STEP ***/
     open(10,file='../ini/ghofile.dat',status='old')
      do is=0,nstep-1
       read(10,*) step

     ...

c *** OPEN INPUT DATA FILE (THE DO LOOP BELOW IS TIME CONSUMING) ***/
     open(20,file=filename,status='old')

        do i=0,MN
         read(20,121,end=21) x(i),y(i),z(i),vx(i),vy(i),
    &                        vz(i),m(i).... etc
121      format(17(1pE13.5),2(I10),2(1pE13.5),I10)

        enddo
21      ns=i
        write(6,*) 'No of particles =',ns

      enddo
      close(20)

      stop
      end

0 个答案:

没有答案