【发布时间】:2018-04-23 07:56:29
【问题描述】:
这是内核的代码:
"__kernel void CalculateLWMA( \r\n"
"int rates_total, \r\n"
"int prev_calculated, \r\n"
"int begin, \r\n"
"int InpMAPeriod, \r\n"
"__global double *price, \r\n"
"__global double *ExtLineBuffer \r\n"
") \r\n"
"{ \r\n"
"int i,limit; \r\n"
"static int weightsum; \r\n"
"double sum; \r\n"
"if(prev_calculated==0) \r\n"
"{ \r\n"
"weightsum=0; \r\n"
"limit=InpMAPeriod+begin; \r\n"
"for(i=0;i<limit;i++) ExtLineBuffer[i]=0.0; \r\n"
"double firstValue=0; \r\n"
"for(i=begin;i<limit;i++) \r\n"
"{ \r\n"
"int k=i-begin+1; \r\n"
"weightsum+=k; \r\n"
"firstValue+=k*price[i]; \r\n"
"} \r\n"
"firstValue/=(double)weightsum; \r\n"
"ExtLineBuffer[limit-1]=firstValue; \r\n"
"} \r\n"
"else limit=prev_calculated-1; \r\n"
"for(i=limit;i<rates_total;i++) \r\n"
"{ \r\n"
"sum=0; \r\n"
"for(int j=0;j<InpMAPeriod;j++) sum+=(InpMAPeriod-j)*price[i-j];\r\n"
"ExtLineBuffer[i]=sum/weightsum; \r\n"
"} \r\n"
"}
正如人们所看到的那样:"static int weightsum; \r\n" 我给出了以下错误:
error: variables in function scope cannot be declared static
请告诉我什么可以替代 OpenCL 内核程序函数中的 static?
【问题讨论】:
-
你试过在内核函数之前声明它是全局的吗?
-
好吧,我没有……让我试试看。
-
@pmdj 你能告诉我如何声明全球......我试过
global int weightsum;。甚至__global int weightsum,。没用:(
标签: function static opencl mql5