1

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

注意 MN 是一个大数字,我正在阅读的文件通常有 4 到 470 万行(粒子),即整数“i”在每一步发生变化。

目前在 1 个核心上读取 1000 个数据文件需要几个小时。我想并行化下面的程序(执行循环),以便每个内核都可以读取较小的数据块。

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
4

0 回答 0