【发布时间】:2018-10-14 13:10:51
【问题描述】:
我正在尝试维护一个可以像静态变量一样工作的内核全局变量。这样我就可以将以前的值存储在变量中以进行进一步计算。
这是我尝试过的以及我得到的错误:
__global int weightsum;
__kernel void calcLWMALoop(int begin, int limit, __global double *price, __global double *firstValue, int weightsum)
{
int len = get_global_id(3);
for(int i=begin;i<limit;i++)
{
weightsum+=(i-begin+1);
firstValue[len]+=(i-begin+1)*price[i];
}
firstValue[len]/=(double)weightsum;
}
输出错误是:
OpenCL program create failed: INVALID_HANDLE <kernel>:41:14: error: variable has address space that is not supported in program scope declaration
__global int weightsum;
^
<kernel>:41:14: error: global variables must have a constant address space qualifier
5105
5105 错误代码显示:Error occurred when compiling an OpenCL program
让我知道在这种情况下我能做些什么。请建议我一个正确的方法,以便有效地编程。
【问题讨论】: