1

整数データ (大きな整数配列) を含む大きなバッファーがあり、それをファイルに書き込みたいと考えています。

ただし、私は openMP を使用しており、アプリケーション全体がマルチスレッド化されています。バッファがいっぱいになった後、openMP を使用し、複数のスレッドが同じファイルに書き込み、バッファへの読み取り専用アクセスを行う方法はあるのでしょうか?

openMP でそれが不可能な場合、他の方法でそれを行うことは可能ですか? どうすればいいですか?

これを行うために知っているライブラリはありますか?

4

1 に答える 1

3

複数のスレッドがファイルに書き込みを行うと、多くの操作が強制されるため、プロセスが以前よりもさらに遅くなりますseek(デフォルトの磁気 HDD を考慮すると、最も遅い操作です)。

1 つのスレッドだけでデータをディスクに書き込むことを検討してください。読み取りはメモリ内配列に直接アクセスする複数のスレッドで行われます。その配列が割り当てられなくなったら、ディスクでアクセスを実行する必要があり、シーク時間のために再び大幅な速度低下が発生します。速度低下を抑えるには、何らかのバッファリング スキームを実装するか、スレッドを 1 つだけ使用する必要があります。

読み取りがどのように実行され、アルゴリズムが実装されているかによって、考慮すべきことが他にもありますが、これらは一般的な行の一部であると思います.

于 2013-03-17T17:25:35.453 に答える