人!渡されたパラメータでタッチされたグローバル変数は使用できなくなります
私は、データの完全なデータを自分のカーネルに渡して、それを使って次のような難しさに遭遇しています(非常に削除されています): [編集:mac osx/xcode 3.2 on mac book pro;このコンパイルは、(a)は、ライン(b)は、単純な代入をマークされた行を実行した後
typedef struct
{
float xoom;
int sizex;
} varholder;
float zX, xd;
__kernel void Harlan(__global varholder * vh)
{
int X = get_global_id(0), Y = get_global_id(1);
zX = ((X - vh->sizex/2)/vh->xoom + vh->sizex/2); // (a)
xd = zX; // (b) BOOM!!
}
] CPUのは明らかである、 "LLVMコンパイラは、関数のコンパイルに失敗しました" 与えます。
ただし、行(a)を実行しないと、行(b)は正常です。
これを使ってたくさんの手伝いをすると、引き渡されたパラメータを使用する代入文(a)のようになり、変数zXの将来のアクセスが崩れてしまいます。しかし、もちろん、私は計算結果をさらに下に使う必要があります。
私のヘルパー関数が必要とするため、ファイルレベルでzXとxdを宣言しました。
どのような考えですか? ありがとう! David
p.s.私は今登録されているので、私を助けてくれた最後の人には悲しいことにアップアップして回答を受け入れることができるように登録されています(登録に同じユーザー名を使用しましたが、古い投稿には投票できないようです。 )。