2

私は天体物理学の大学院生です。私は、大部分が他の人が 10 年ほどかけて開発したコードを使用して、大規模なシミュレーションを実行しています。これらのコードの例については、ガジェットhttp://www.mpa-garching.mpg.de/gadget/と enzo http://code.google.com/p/enzo/を参照してください。これらは間違いなく最も成熟した 2 つのコードです (異なる方法を使用しています)。

これらのシミュレーションから得られる成果は膨大です。コードによって、データは少し異なりますが、常にビッグ データです。通常、何十億もの粒子とセルを使用して、現実的なことを行います。最大の実行は、スナップショットあたり数テラバイト、シミュレーションあたり数百のスナップショットです。

現在、この種のデータを読み書きする最良の方法は、基本的にバイナリ ファイルを使用する体系的な方法であるHDF5 http://www.hdfgroup.org/HDF5/を使用することです。これは、カスタム ヘッダー ブロックを使用したフォーマットされていないバイナリ ファイルに比べて大幅に改善されていますが (それでも悪夢に悩まされます)、これを行うためのより良い方法があるのではないかと思わずにはいられません。

ここで問題になるのは膨大なデータ サイズだと思いますが、テラバイト単位のバイナリ データを効率的に処理できる何らかのデータストアがあるのでしょうか、それとも現時点ではバイナリ ファイルが唯一の方法なのでしょうか?

それが役立つ場合は、通常、データを列ごとに保存します。つまり、すべての粒子 ID のブロック、すべての粒子位置のブロック、粒子速度のブロックなどがあります。これは最もきれいではありませんが、あるボリュームで粒子ルックアップのようなことを行うには最速です。

編集:問題について曖昧で申し訳ありません。これはデータの保存方法ではなく、データ構造の問題である可能性があるという Steve の意見は正しいです。今すぐ走らなければなりませんが、今夜か明日遅くに詳細をお知らせします.

編集 2:したがって、これを調べれば調べるほど、これはおそらくデータストアの問題ではないことがわかります。フォーマットされていないバイナリの主な問題は、データを正しく読み取る (ブロック サイズと順序を正しく取得し、それを確認する) という頭痛の種でした。HDF5 ではそれがほぼ修正されており、ファイル システムの制限が改善されるまで、より高速なオプションはありません (Matt Turk に感謝)。

新しい問題は、おそらくデータ構造に帰着します。HDF5 は、クエリを実行するのに最適なインターフェイスではありませんが、最高のパフォーマンスを発揮します。データベースに慣れているので、「いつでも x を超える速度のすべての粒子を教えてください」などのクエリを実行できると、非常に興味深い/強力だと思いました。今でもそのようなことはできますが、より低いレベルで作業する必要があります。もちろん、データがどれだけ大きいかを考えると、それを使って何をするかにもよりますが、パフォーマンスのために低いレベルで作業することは良いことかもしれません.

4

1 に答える 1

4

編集

説明不足の根拠 / など:

  • OP は次のように述べています。「[HDF5] は、カスタム ヘッダー ブロックを使用したフォーマットされていないバイナリ ファイルよりも大幅に改善されていますが (それでも悪夢を感じます)、これを行うためのより良い方法があると思わずにはいられません。」

「より良い」とはどういう意味ですか? より良い構造?彼は、「フォーマットされていないバイナリ ファイル」が問題であるとほのめかしているようです。もしそうなら、彼は何らかの構造を持つものが必要になるでしょう - したがって、最初のいくつかの提案.

  • OP は次のように述べています。

はい、いくつかあります。構造化と「非構造化」の両方 - 彼は構造を望んでいますか、それとも何らかの「フォーマットされていないバイナリ形式」のままにしておいてよろしいですか? まだわからないので、いくつかの分散ファイル システムを調べることをお勧めします。

  • OP は次のように述べています。あるボリュームで粒子ルックアップのようなことをしています。」

繰り返しますが、OPはより良い構造を望んでいますか、それともそうではありませんか? 彼は両方を望んでいるようです-より良い構造とより速い....おそらくスケールアウトは彼にこれを与えるでしょう. これにより、リストした最初のいくつかのオプションがさらに強化されます。

  • OPは(コメントで)次のように述べています。「ioでヒットできるかどうかはわかりません。」

IO 要件はありますか? コスト制限?彼らは何ですか?

ここでは何も得られません。「特効薬」のストレージ ソリューションはありません。要件についてここで続けなければならないのは、「大量のデータ」と「構造の欠如が好きかどうかはわかりませんが、追加の構造に対応するためにIOを増やしたくありません」...だから彼がどんな答えを期待しているのか私にはわかりません。彼は、構造の欠如以外に、彼が持っている現在のソリューションについて単一の不満を挙げていません - そして、彼はそれについて何かをするためにオーバーヘッドを支払うつもりはないとすでに言っています...それで.... ?

于 2011-06-28T22:16:06.960 に答える