可以說我有在這樣的格式N個文件的組合:多線程文件(共享存儲器)
一個文件看起來像這樣:
對於每個時間有不同的ID
- time 1:
- data with id: 10
- data with id: 13
- data with id: 4
- time 2:
- data with id: 10
- data with id: 77
...etc
(每次從1-1000與IDS的數據被鋪展一些如何(混合)在這些N個文件)
竟被我ð喜歡讓我有被下令單個文件到所有這些N個文件結合:
最終文件:
- time 1:
- data with id: 1
- data with id: 2
- data with id: 3
- ...
- data with id: 1000
- time 2:
- data with id: 1
- data with id: 2
- data with id: 3
- ...
- data with id: 1000
...etc
數據ID 1-1000的大小約爲100MB,但我有很多時候它佔據了高達50GB的數據。
我對這個問題的解決辦法是,到目前爲止這樣使這一儘可能快:
我用一臺超級計算機節點上牛逼線程(1臺電腦,例如24-48核)(例如)。 我已分配了一個共享存儲器數組來保存與IDS 1所有DATAS - 1000一次性(也可以是更多的,如果我喜歡)
步驟:
第1步:
- 每個線程都有一些打開並擁有的文件。然後每個線程將其在文件中具有的ID的數據填入 到共享數組中。
步驟2:
- 當所有線程都處理最後一個時間 - >線程1有序形式寫入 此數組到最終文件。
asdasd
- 我會非常感興趣,如果這是有效的?無論如何, 並行讀取是否無序,因此完全沒有用處? 我可以計算本地計算機與超快SSD或與網絡存儲 (Lustres或Panasas的文件系統)
- 我能再次使用的所有線程在 步驟2在平行於寫入到磁盤的集羣節點上的最終文件可以說MPI IO(其中 支持偏移量並行寫入),或者如何可以實現 ? - > C++標準庫?
感謝您的任何意見!