2017-03-04 39 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線程可以在閱讀中獲得明顯的收益,但寫作規格令人失望。多線程技術絕對有助於加速數據的序列化。

相關問題