2017-03-04 53 views
0

我正在研究一个C++项目,通过一些已知的力场来跟踪粒子。该代码以粒子位置和动量的形式生成大量数据。我已经在粒子跟踪例程中使用了openmp指令。但是,总体性能最终取决于编写输出文件所需的时间。我明白,使用线程写入数据到输出文件不建议(我已经尝试过)。我很好奇,是否有任何方法可以使用多个线程将数据写入多个文件(比如我有4个线程,每个线程同时写入4个文件)。你能告诉我如何着手吗?关于如何有效地将数据流传输到文件的任何提示? 在此先感谢是否有可能:使用多线程将流输出到不同的文件/

+1

您有权访问并行文件系统吗?如果没有,那么就不要试图平行你的IO ... – Gilles

+0

@Gilles我会停止打扰它然后:D –

回答

0

这里是并发I/O的话题一篇有趣的文章: http://www.drdobbs.com/parallel/multithreaded-file-io/220300055

有限制这种方法增益的一些基本障碍。第一是硬件能力。 HDD和SSD的读取和写入速度有限,试图同时读取/写入多个文件可能无法大幅提高速度。事实上,在试图同时完成多项任务的硬盘上,实际上可能会在很多情况下损害性能,这可以在我提供的链接的基准测试中看到。看起来2-4线程可以在阅读中获得明显的收益,但写作规格令人失望。多线程技术绝对有助于加速数据的序列化。

相关问题