2

ATI Stream SDKを使用してGPUで大きな線形方程式を解くために、コレスキー分解を実装しました。今度は、ますます多くのGPUの計算能力を活用したいと考えており、このコードを複数のGPUで実行したいと考えています。

現在、1台のマシンと1台のGPUがインストールされており、コレスキー分解が正しく実行されています。Nマシンで実行したいのですが、すべてに1つのGPUがインストールされています。だから私にどのように進めるべきか提案してください。

4

3 に答える 3

2

まず、このアプローチでは、ノード間の通信に 3 つのレベルのレイテンシが発生することに注意する必要があります。

  1. マシン 1 の GPU メモリからマシン 1 のメイン メモリへ
  2. マシン 1 のメイン メモリからマシン 2 のメイン メモリへ
  3. マシン 2 のメイン メモリからマシン 2 の GPU メモリへ

適切な最初のステップは、エンベロープ計算の一部を実行して、問題を複数のマシンに分割することで得られる速度向上が、導入する遅延を上回るかどうかを判断することです。

アプローチが従いたいものであることを確認したら、これを正しく実装するのはほとんどあなた次第です。現在、NVIDIA の CUDA または OpenCL ライブラリは、X セッションと結合しなくても計算のために GPU にアクセスできるため、より良い選択になることに注意してください。ATI の OpenCL 実装が GPU をサポートすると、これも実行可能なオプションになるはずです。

すでに GPU の実装が機能しているため、従う必要がある基本的な手順は次のとおりです。

  • 個別のノードによる処理をサポートするために因数分解アルゴリズムを更新する方法を決定する
  • N 台のコンピューター間のデータ交換をセットアップします (このために MPI を選択していることに気付きました)。
  • 入力問題を計算ノード間で分割する分散操作を設定します
  • マシンとその GPU 間のデータ交換をセットアップする
  • ノードからの結果を 1 つのノードに収集する収集操作をセットアップします。
于 2009-09-10T08:46:33.637 に答える
0

非常に専門的な質問です。Stream開発者リソースStream開発者フォーラムを確認することをお勧めします。

于 2009-09-09T06:16:31.870 に答える
0

この Q を、これらのことを知っている同僚に見せました。彼は ScaLAPACK の使用を提案しました。

于 2009-09-11T16:30:13.433 に答える