0

このようなコード:

__constant char a[1] = "x";
...
__local char b[1];
async_work_group_copy(b, a, 1, 0);

コンパイルエラーをスローします:

no instance of overloaded function "async_work_group_copy" matches the argument list

__constantしたがって、この関数を使用してアドレス空間からコピーすることはできないようです。私は正しいですか?はいの場合、アクセスを高速化するために__constantデータをメモリにコピーするための推奨される方法は何ですか?__localここで、各作業項目がいくつかの要素をコピーする単純なforループを使用します。

4

1 に答える 1

1

async_work_group_copy()ローカルメモリとグローバルメモリ間でのみコピーするように定義されています(http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/を参照)。

私の知る限り、定数メモリからローカルメモリへの一括コピーを実行する方法はありません。おそらくその理由は、私が知っているすべてのGPUに定数メモリが実際にキャッシュされているためです。これは、基本的に、ローカルメモリと同じ速度で動作することを意味します。

関数ファミリは、vloadn()定数を含むすべてのタイプのメモリのベクトル全体をロードできるため、必要なものと部分的に一致する場合があります。ただし、一括コピーではありません。

于 2012-08-23T09:25:47.563 に答える