sansu 发表于 2017-12-25 22:12:54

如何快速写30M左右数据到硬盘(50ms以内,甚至10ms)

正在修改热工水力程序。标题看来是不可实现。
目前存数据需要暂停程序,然后CALL SAVE,这里SAVE下面一大堆子程序了。改动里面我一时半会基本不可能了。
我想到的是:
第一种: fortran主程序不存到硬盘,而是内存,由其他程序去存
第二种:有没有可能并行单开一个线程,去专门存
求教各位大佬,有什么好方法?

pasuka 发表于 2017-12-26 08:40:09

本帖最后由 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

li913 发表于 2017-12-26 14:39:58

fortran 有 异步 I/O,可以试试。

kyra 发表于 2017-12-26 21:10:49

固态硬盘或RAID阵列,或许有帮助。

IO瓶颈,可以优化的空间很少,基本靠硬件

sansu 发表于 2017-12-27 11:03:34

kyra 发表于 2017-12-26 21:10
固态硬盘或RAID阵列,或许有帮助。

IO瓶颈,可以优化的空间很少,基本靠硬件 ...

应该有什么方法。现在我用的老外的平台+热工水力软件,在普通服务器上运行,能实时,不清楚实现机制。

sansu 发表于 2017-12-27 11:17:28

li913 发表于 2017-12-26 14:39
fortran 有 异步 I/O,可以试试。

查了下fortran2003有了,我试试

kyra 发表于 2017-12-27 13:03:42

sansu 发表于 2017-12-27 11:03
应该有什么方法。现在我用的老外的平台+热工水力软件,在普通服务器上运行,能实时,不清楚实现机制。 ...

你存的是二进制,还是文本?

sansu 发表于 2017-12-27 23:41:08

是二进制

sansu 发表于 2017-12-27 23:44:27

用自带的异步好像不行,我需要多步存储,如果等待上一个存储完,主进程cpu是不是就在那等着?那也会耗很多时间
页: [1]
查看完整版本: 如何快速写30M左右数据到硬盘(50ms以内,甚至10ms)