【发布时间】:2012-02-11 21:47:50
【问题描述】:
我正在运行下面的 OpenCL 内核,二维全局工作大小为 1000000 x 100,本地工作大小为 1 x 100。
__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
}
然而这拒绝编译,因为参数length 和height 在编译时是未知的。但是我完全不清楚如何正确地做到这一点。我应该在 memalloc 中使用指针吗?如何以只为整个工作组分配一次内存而不是每个工作项一次的方式来处理这个问题?
我只需要 2 个浮点数组,1 个整数和 1 个布尔值,它们在整个工作组之间共享(所以所有 100 个工作项)。但是我找不到任何可以正确执行此操作的方法...
【问题讨论】: