我有一个Fortran90代码,大部分时间都用于I/O,因为需要读取非常大的数据文件(至少1GB及以上)。还需要写入一些较小但仍然很大的计算结果数据文件。相比之下,一些快速傅里叶变换和其他计算可以在短时间内完成。我已经使用并行化(OpenMP)来处理其中的一些计算,但由于上述I/O问题,整体性能提升非常有限。
然后对
我有可能在Lustre文件系统上运行这些计算,这原则上为并行I/O提供了优势,尽管希望能够提供常规文件系统的通用解决方案。
我的直觉是没有解决这个问题的方法,但我想确认一下。
我目前的策略是一次性读取整个文件:
open(unit=10, file="data", status="old")
do i=1,verylargenumber
read(10,*) var1(i), var2(i), var3(i)
end do
close(10)
然后对
var1
等执行操作。我的问题是,是否有一种适合使用(最好是)OpenMP的策略,可以加速读取过程,特别是考虑到数据文件非常大的情况下(如果有任何区别)。我有可能在Lustre文件系统上运行这些计算,这原则上为并行I/O提供了优势,尽管希望能够提供常规文件系统的通用解决方案。
我的直觉是没有解决这个问题的方法,但我想确认一下。