Я пытаюсь поддерживать глобальную переменную ядра, которая может действовать как статическая переменная. Так что я могу сохранить предыдущее значение в переменной для дальнейших вычислений.
Вот что я попробовал и что я получил как ошибку:
__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
Дайте мне знать, что я могу сделать в этой ситуации. Пожалуйста, предложите мне правильный путь, чтобы можно было эффективно программировать.