Fortran Coder

标题: 如何快速写30M左右数据到硬盘(50ms以内,甚至10ms) [打印本页]

作者: sansu    时间: 2017-12-25 22:12
标题: 如何快速写30M左右数据到硬盘(50ms以内,甚至10ms)
正在修改热工水力程序。标题看来是不可实现。
目前存数据需要暂停程序,然后CALL SAVE,这里SAVE下面一大堆子程序了。改动里面我一时半会基本不可能了。
我想到的是:
第一种: fortran主程序不存到硬盘,而是内存,由其他程序去存
第二种:有没有可能并行单开一个线程,去专门存
求教各位大佬,有什么好方法?

作者: pasuka    时间: 2017-12-26 08:40
本帖最后由 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
fortran 有 异步 I/O,可以试试。

QQ截图20171226143836.png (67.02 KB, 下载次数: 309)

QQ截图20171226143836.png

作者: kyra    时间: 2017-12-26 21:10
固态硬盘或RAID阵列,或许有帮助。

IO瓶颈,可以优化的空间很少,基本靠硬件
作者: sansu    时间: 2017-12-27 11:03
kyra 发表于 2017-12-26 21:10
固态硬盘或RAID阵列,或许有帮助。

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

应该有什么方法。现在我用的老外的平台+热工水力软件,在普通服务器上运行,能实时,不清楚实现机制。
作者: sansu    时间: 2017-12-27 11:17
li913 发表于 2017-12-26 14:39
fortran 有 异步 I/O,可以试试。

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

你存的是二进制,还是文本?
作者: sansu    时间: 2017-12-27 23:41
是二进制
作者: sansu    时间: 2017-12-27 23:44
用自带的异步好像不行,我需要多步存储,如果等待上一个存储完,主进程cpu是不是就在那等着?那也会耗很多时间




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2