Ben parametreleri beri 1000000 x 100 iki boyutlu küresel iş büyüklüğü ve 1 x 100 Ancak bu derlemeye reddederOpenCL'de yerel bellek nasıl bildirilir?
__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
}
yerel bir çalışma boyutu ile aşağıda OpenCL çekirdeği koşuyorum length
ve height
derleme zamanında bilinmemektedir. Ancak, bunun nasıl doğru bir şekilde yapılacağı açık değildir. Memalloc ile işaretçileri kullanmalı mıyım? Bu işlem, belleğin yalnızca çalışma grubu için bir kez değil, iş öğesi başına bir kez ayrılacağı şekilde nasıl kullanılır?
İhtiyacım olan tüm çalışma grubu (yani, 100 iş öğesinin tümü) arasında paylaşılan 2 düz şema, 1 int ve 1 boolean dizisi.
kernel void myKernel(const int length, const int height, local float* LP,
local float* LT, a bunch of other parameters)
Daha sonra value
ait olan kernelargument ayarlayın: Ama bu işi doğru yapan herhangi bir yöntem ...
http://stackoverflow.com/questions/2541929/how-do-i-use-local-memory-in-opencl –