1

これは実際にはバイオインフォマティクスの問題ですが、できる限り一般的なものにします。半仮説的な状況は次のとおりです。

クラスターやクラウドにさえアクセスできるとしましょう。このクラスター/クラウドでいくつかの非常に特定のプログラムを実行したいと考えています (正確には、ゲノム/トランスクリプトーム アセンブリ プログラム)。問題は、これらのプログラム (Velvet/Oases、Trinity など) が大量の RAM (控えめに言っても 100 GB 以上) を必要とし、クラスター/クラウドの最大ノードが 32 GB しかないと予想していることです。

MPI/Hadoop ベースのプログラム (ABySS など) に切り替えるか、独自のプログラムを作成するか、新しいコンピューターを購入する以外に、実行可能なオプションは何ですか? クラスター/クラウドの複数のノードで共有メモリを使用して分散オペレーティング システム (MOSIX、Kerrighed など) を使用しようとした人はいますか? 仮想 SMP はどうですか? ほかに何か?

助けてくれてありがとう!

明確化のために編集: 上記のプログラム (Velvet/Oases および Trinity) には、大きな RAM プールを備えた単一のシステムが必要であるとしましょう。一言で言えば、単一のプロセスが単一のシステムのようにすべてのノードからすべての RAM にアクセスできる 1 つの仮想スーパーノードに多数のノードをまとめて「貼り付ける」実行可能な方法を探しています。このようなものはおそらくパフォーマンスにかなりの影響を与えることを知っていますが、必ずしも効率的ではない可能性のあるものを探しています。

ps私の用語が混乱を招いている場合は申し訳ありません。私はこれの多くに少し慣れていません。

4

3 に答える 3

2

アプリケーションの性質に完全に依存します。Hadoop、MPI、MOSIX、または VSMP に切り替えても問題が解決しない場合があります。これらのテクノロジは、アプリケーションを同時実行ブロックに分割できる場合に役立つためです。

ここで、アプリケーションが並行ブロックに分割可能である場合は、ニーズに合った最適なソフトウェア テクノロジを選択してください。それ以外の場合は、ハードウェアをアップグレードすることをお勧めします。アプリケーションの場合のソフトウェア技術の選択:

  1. データ集約型: Hadoop や Dryad などを試してください。
  2. プロセス集約的で、ブロック間で多くのメッセージを渡します: MPI を試してください
  3. 多くの軽量スレッドを含む: アプリに GPGPU を使用します。
  4. ....

スタンフォード大学のRAMCloud プロジェクトを見てみましょう。それはどういうわけか関連しています。

于 2011-08-25T18:22:51.190 に答える
1

あなたの質問は、実行される処理の性質を省略しています。これは特に重要です。たとえば、各オブジェクトは実際に 100 GB ですか? それとも、100 GB はサイズがはるかに小さい多数のオブジェクトのコレクションですか?

それにもかかわらず、一般的な質問に答えると、私は日常的にメモリ マップされたファイルで 100 GB 以上のデータセットを操作します。メモリ マッピングの方法を学べば、これは非常に簡単な方法であることがわかるでしょう。さらに、データが 1 か所にある場合、NFS を使用するのが簡単な方法です。そうすれば、複数のシステムが同じデータに同時にアクセスできます。いずれにせよ、メモリ マッピングは、特にグリッド内のデータ ブロックの移動を管理する場合と比べて、既存のプログラムに非常に簡単に組み込むことができます。

お気づきのように、MOSIX や MPI などのオプションがあります。また、memcached や memcacheDB を検討することもできますが、長期的にはあまりうまくいかないと思います。システムの順序に関しては、まずメモリ マッピング、次に MPI、MOSIX、および memcached をお勧めします。

于 2011-09-25T23:22:07.363 に答える
0

いずれにしても、この問題を解決するために MOSIX を使用しないでください。MOSIX は、CPU を集中的に使用するスレッドを分散するためのシステムであり、多くのコラボレーションが必要な場合、一般的にあまりうまく機能しません。この大規模なデータセットを使用するには、とにかく MPI を使用する必要があります。

于 2014-04-03T15:14:36.087 に答える