如何快速写30M左右数据到硬盘(50ms以内,甚至10ms)
正在修改热工水力程序。标题看来是不可实现。目前存数据需要暂停程序,然后CALL SAVE,这里SAVE下面一大堆子程序了。改动里面我一时半会基本不可能了。
我想到的是:
第一种: fortran主程序不存到硬盘,而是内存,由其他程序去存
第二种:有没有可能并行单开一个线程,去专门存
求教各位大佬,有什么好方法?
本帖最后由 pasuka 于 2017-12-26 14:56 编辑
或许这个参考意义更大,基于HDF5的并行读写操作Fortran库
XDMF parallel partitioned mesh I/O on top of HDF5
------------------------------------------------------------------------------------------------------------------------------------------
1、更换或者升级硬件平台与操作系统,譬如双路工作站配固态硬盘组成的磁盘阵列,或者超算中心租用机时;
2、序列化,调用或者重写C++的库
Benchmark comparing various data serialization C++ libraries fortran 有 异步 I/O,可以试试。 固态硬盘或RAID阵列,或许有帮助。
IO瓶颈,可以优化的空间很少,基本靠硬件 kyra 发表于 2017-12-26 21:10
固态硬盘或RAID阵列,或许有帮助。
IO瓶颈,可以优化的空间很少,基本靠硬件 ...
应该有什么方法。现在我用的老外的平台+热工水力软件,在普通服务器上运行,能实时,不清楚实现机制。 li913 发表于 2017-12-26 14:39
fortran 有 异步 I/O,可以试试。
查了下fortran2003有了,我试试 sansu 发表于 2017-12-27 11:03
应该有什么方法。现在我用的老外的平台+热工水力软件,在普通服务器上运行,能实时,不清楚实现机制。 ...
你存的是二进制,还是文本? 是二进制 用自带的异步好像不行,我需要多步存储,如果等待上一个存储完,主进程cpu是不是就在那等着?那也会耗很多时间
页:
[1]