1

私はいくつかの結果を読んでいました。そして、彼らが 5120 のワークグループと 1 のローカル サイズを使用していることがわかりました。OpenCl についての知識が限られているため、次の記述が正しいかどうか疑問に思っていました。

GPU でわかるように、最初のテストには 5120 個のワークグループがあり、それぞれに 1 つのワークアイテムがあります。これは、並列に実行されるスレッドが、マシンにある計算ユニットの量に制限されることを意味します。たとえば、GPU に 20 のコンピューティング ユニットがある場合、並列に動作する最大 20 のスレッドしか存在できません。ただし、ローカル サイズを 2 に増やすと、2 倍の量のスレッドが同時に実行されます

OpenClに関するいくつかの情報を読むと、それはほぼ正しいようです。セカンドオピニオンが必要ですが。

4

1 に答える 1

1

更新します。うーん、nat chouf のコメントは正しいです。質問を「物理的に同時に実行」ではなく「同時に飛行中」と理解しました。

私が書いたように、単一のコンピューティング ユニットで特定の時間に複数のワーク グループをスケジュールできます。このような「実行中」のワークグループの数は、各計算ユニットで使用可能なリソース (ローカル メモリ、レジスタなど) によって制限されます。

既存の実装 (afaik) では、計算ユニットは、計算ユニット内で実行中のすべてのブロックの中から、実行のために同じワークグループからワークアイテムのブロック (ワープ/ウェーブフロント) を選択します。このブロックの 1 つの「命令」がパイプラインに挿入され (数サイクルかかる場合があり、各「命令」が各ワークアイテムの複数の操作に対応する場合があります)、別のブロックが選択されます。

したがって、ワーク グループ サイズが 1 の場合、コンピューティング ユニットごとに 1 つのワークアイテムのみが物理的に同時に開始されます。しかし、潜在的にすべての作業項目が同時に GPU で実行中の可能性があります。

于 2013-02-25T21:37:17.540 に答える