启用缓冲I / O采用Intel ifort编译到stdout(Enable buffered I/

2019-09-22 16:30发布

我读过的英特尔文档关于启用缓冲I / O与ifort(使用-assume buffered_ioFORT_BUFFERED=true ),这将直接适用于输出到文件。 但是,我们有正在写到标准输出(如大型应用程序write(*,*)write(stdout,*)这是重定向到一个文件。 在这种情况下,无论是的缓冲技术工作。

除了重构代码直接写入文件,有没有使与ifort标准输出缓冲I / O的方法? 这是默认启用,例如,gfortran。

我们使用ifort 12.0上SLES 11。

更新:感谢您的意见。 我调查通过缓冲程序(如TEE)stdbuf和/或管道作为一种解决方法。 到目前为止,我还没有能够进行可测量的差异。

更新2:

我已经尝试了一些实验与道格拉斯的建议,通过其他程序管道。 三通和猫都缓存在脸上的缓冲似乎通过管道本身在8K左右来完成。 然而,原来写的开销()调用,加管,加管道项目(TEE,猫等)的系统调用过高使之成为一个可行的解决方案。

文章来源: Enable buffered I/O to stdout with Intel ifort compiler