10 個の計算ユニットと 32k のローカル メモリを備えた HD5770 を使用しています。
グローバル サイズは 256 * 256、
ローカル サイズは 256
各ワークグループは、次のように指定している 1k のローカル メモリを使用する必要があります。
clSetKernelArg(predicate, param++, 1024, NULL);
最初に:これはローカル メモリを割り当てる正しい方法ですか、それとも、ローカル ID に応じてカーネル arg を設定し、後でこのバッファにインデックスを設定するときに、すべてのワークグループが一緒に使用するバッファのサイズ全体を指定する必要がありますか?
2 つ目: 1 つのワークグループは 1 つのコンピューティング ユニットだけで実行されますか?
3 番目:ワークグループが終了した後、メモリは解放されますか? (それぞれが 1k を使用する場合、256 のワークグループには 32k では十分ではありません)
または、より一般的な方法: スケジューラは、32 を超えるワークグループを並行してスケジュールしないように処理しますか?
ありがとうございました!