8

C++ 分散数値計算アプリケーションで使用するフレームワークを探しています。

セットアップは次のようになります。

問題領域を小さな独立したタスクに分割するマスター ノードがあります。タスクは、さまざまな機能 (CPU タイプ/GPU 対応など) のワーカー ノードに分散されます。ワーカー ノードは、使用可能になると、コンピューティング グリッドに動的に追加されます。さようならを言わずにワーカーノードが死ぬこともあるかもしれません。

このセットアップを実現するための高速な C/C++ フレームワークを探しています。

要約すると、私の主な要件は次のとおりです。

  • ワーカー/タスク スケジューリング パラダイム
  • ノードを動的に追加/削除する
  • ターゲット ネットワーク: 1G - 10G イーサネット (企業ネットワーク、インターネット経由の良好なパフォーマンスは必要ありません)
  • オプション: 暗号化および認証された通信
4

1 に答える 1

5

MPIでやりたいことは確かにできます。MPI-2 は動的プロセス管理機能を追加しました。現在広く使用されている実装のほとんどがこれらを提供していると思います。

C++ + MPI を使用する利点の 1 つは、この組み合わせが科学技術計算で非常に広く使用されていることですが、私の印象では、このニッチな分野では動的プロセス管理はあまり使用されていません。MPI は計算科学の最先端の問題に取り組んでいる非常に大規模なスーパーコンピューターで使用されるため、MPI が目的に十分な速度であると推測する人がいるかもしれません。

C++ + MPI を使用することの欠点の 1 つは、MPI が実行中のプロセスの障害を許容するように設計されていないことです。動的プロセス管理機能を使用して独自のフォールト トレランスをプログラムできるかどうかについては、SO に関する議論があります。しかし、それが難しいかもしれないという議論はありません。

要件の最初の 3 つを「すぐに」取得できます。暗号化および認証された通信に関しては、そのほとんどを自分で行う必要があります。MPI はメッセージをやり取りするだけです。ほとんどの MPI ユーザーにとって、プライベートな相互接続 (企業や企業のネットワークから分離されていることが多い) を備えたクラスターまたはスーパーコンピューターで並列アプリケーションを実行している場合、暗号化と認証はほとんど問題ではないと思います。

于 2012-07-12T09:09:33.873 に答える