2016-05-14 12 views
0

OpenCLでは、複数のGPUで構成されるシステムは、プログラマが作業負荷を明示的に分けることなく暗黙的にジョブを分割する可能性がありますか?
たとえば、1つのSM 192コアGPUで構成されたGPUがあり、行列乗算を実行します。これは正常に動作します。今度は別の同じGPUを追加し、OpenCLは両方のGPUを使用してプログラマが作業負荷を各GPUに分割するのではなく、行列乗算を計算します。マルチGPUの暗黙的な作業

答えて

1

私はOpenCLが(少なくとも1.2では)自動的に行うことはできませんが、複数の計算デバイスを自動的に処理できるOpenCLラッパーがあると思います。 OpenCL CodeBenchを使用していませんが、複数のコンピューティングデバイスの負荷分散があると主張しています。

+0

それで、それぞれ1つのSMを持つ2つのGPUカードは、システムはシステムに存在する合計2つのSMを識別しますか? – pradyot

0

デバイスのメモリだけを統合し、openclのバージョン2.0以降でのみこれを実行できます。

カーネルはコマンドキューにエンキューされ、1つのデバイスで作成(バインド)されます。だから彼らは単一のデバイスでのみ動作することができます。しかし、複数のコマンドキューは、暗黙のバッファ同期を利用できる共通のコンテキストで機能することができます。

実行時に、どのワークアイテムがどのメモリアドレスにアクセスするかを知ることができないため、作業の分割は暗黙的に行うことはできません。

作業中のシングルデバイスラッパーを作成したら、マルチGPUサポートを追加することはあまり面倒ではありません。

関連する問題