我是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