私はこれはしかし、パラメータlength
いるので、コンパイルすることを拒否1000000×100の2次元グローバルワークサイズと×100 1OpenCLでローカルメモリを宣言するには?
__kernel void myKernel(
const int length,
const int height,
and a bunch of other parameters) {
//declare some local arrays to be shared by all 100 work item in this group
__local float LP [length];
__local float LT [height];
__local int bitErrors = 0;
__local bool failed = false;
//here come my actual computations which utilize the space in LP and LT
}
のローカルワークサイズを下回るのOpenCLカーネルを実行していることだし、 height
はコンパイル時には分かりません。しかし、これをどうやって正しく行うかは、私には全く分かりません。私はmemallocでポインタを使うべきですか?ワークグループ全体で1回だけメモリが割り当てられ、ワークアイテムごとに1回は割り当てられません。
私が必要とするのは、ワークグループ全体で共有される2つの浮動小数点配列、1 int、1ブール値です(100個すべての作業項目)。
kernel void myKernel(const int length, const int height, local float* LP,
local float* LT, a bunch of other parameters)
あなたは、その後のvalue
でkernelargumentを設定します。しかし、私はそれはあなたがあなたのカーネルの引数としてローカル配列を渡すことができ、比較的簡単です
http://stackoverflow.com/questions/2541929/how-do-i-use-local-memory-in-opencl –