私のOpenCLプログラムでは、各カーネルがアクセスできるようにする必要がある60以上のグローバルメモリバッファーができあがります。各カーネルにこれらの各バッファの場所を知らせるための推奨される方法は何ですか?
バッファー自体は、アプリケーションの存続期間を通じて安定しています。つまり、アプリケーションの開始時にバッファーを割り当て、複数のカーネルを呼び出してから、アプリケーションの終了時にのみバッファーの割り当てを解除します。ただし、カーネルがそれらから読み取り/書き込みを行うと、それらの内容が変更される可能性があります。
CUDAでこれを行った方法は、CUDAコードに60以上のプログラムスコープグローバル変数を作成することでした。次に、ホスト上で、これらのグローバル変数に割り当てたデバイスバッファーのアドレスを書き込みます。次に、カーネルはこれらのグローバル変数を使用して、操作に必要なバッファーを見つけるだけです。
OpenCLでこれを行うための最良の方法は何でしょうか?CLのグローバル変数はCUDAのものとは少し異なるようですが、私のCUDAメソッドが機能するかどうか、そして機能する場合は、バッファーポインターをグローバル変数に転送する方法について明確な答えを見つけることができません。それがうまくいかない場合、それ以外の最善の方法は何ですか?