私はいつもOpenCLでのグローバルデータのキャッシュ動作について疑問に思っていました。
カーネル内のグローバルメモリへのポインタがあるとしましょう。次に、ポインタが指す場所を読み取ります。カーネルの後半で同じデータが再び必要になる可能性があるため、ポインターを介して再度読み取ります。
ここで問題となるのは、このデータはキャッシュされるのでしょうか、それとも他のスレッドがデータを変更した可能性があるため、毎回グローバルメモリから再読み込みされるのでしょうか。キャッシュされていない場合は、毎回ローカルコピーを作成する必要があるため、グローバルメモリに絶えずアクセスしてパフォーマンスを大幅に低下させることはありません。
これはベンダー固有の可能性があることは知っていますが、仕様ではこれについて何と言っていますか?