2017-03-08 8 views
0

あるポイントの後で50GBを超えるサイズの大量のデータ(約4000枚の画像の各レイヤーのフィーチャマップ)を処理する必要があります。処理にはいくつかの計算が必要で、その後に約2MBのファイルがHDDに書き込まれます。限られたRAMで膨大な量のデータを扱う方法

フリー・ラムは約40GBなので、私のプロセスはある時点後にクラッシュします。誰もがこの50GBのデータを分割または処理して、利用可能なRAM内で計算ができるようにするためのより良いアプローチを提案することができます。例えば、いくつかのメモリ圧縮のアプローチ

私はちょうどこの問題への可能なアプローチのヒントを探しています。

ありがとうございます。

+0

すべてのデータを一度にメモリに保存しないでください。それを小さなものに分解してください。 –

+0

はい、ただし、データを同期させる必要があります。そのようなちょっとしたセーブポイントを持つ最良の方法は何か分かりません。 – blackbug

+1

あなたの問題の説明は、あまりにも一般的で、詳細な回答はありません。一度にRAMにデータセット全体をロードしていますか、それともバッチに分割していますか?あなたが後者をしていないなら、私はそれが行く方法だと思う。次にバッチを連続的に分析することができます。つまり、一度バッチが終了すると、すべてが処理されるまで次のバージョンに移ります。このように、作業しているセットは、使用可能なメモリより大きくなるべきではありません。 –

答えて

0

この質問は80年代前半を覚えています。メモリは高価でしたが、私たちは交換を発明しました。 OSの上位レベルの部分は、実際に存在するより多くのメモリを認識し、ページはディスクにコピーされます。 1つが必要になると、別のものが取り除かれ、ページがメモリにコピーバックされます。パフォーマンスはひどいですが、少なくとも動作します。

あなたの質問はかなり幅広いですが、バッチでデータを処理することができれば、データのバッチを明示的に読み込むほうがはるかに効率的ですが、寓意が複雑すぎるか、どんな瞬間でも、スワップはそれを気にしてください。

あなたが必要と思うメモリよりもかなり大きいスワップファイルを追加してください(指定されたサイズで100または200GBを試します)、退社する前に処理を開始してください。朝。

関連する問題