3

カーネル関数で宣言されたローカル メモリを、何らかの処理のために別の関数に渡したいと考えています。すべてのポインターがローカル空間でも宣言されるように制御したいと思います。

void funcB(__local float * __local p)
{
}

__kernel void funcA()
{
    __local float data[256];
    __local float * __local ptr;
    ptr = data;
    funcB(ptr);
}

funcB 宣言が機能しない理由: エラー: パラメータがアドレス空間で修飾されていない可能性があります

このようなことをする方法はありますか?ありがとう!

4

1 に答える 1

3

OpenCL Spec 1.2 セクション 6.5.4 から:

非カーネル関数内のすべての変数、およびすべての関数引数は __private またはプライベート アドレス空間にあります。

カーネル以外の関数は埋め込まれているため、とにかくこれを行うことで何を達成したいのかわかりません。

于 2013-03-26T06:03:06.037 に答える