19 void OpSumX2MY2::GenSlidingWindowFunction(std::stringstream &ss,
20 const std::string &sSymName,
SubArguments &vSubArguments)
22 ss <<
"\ndouble " << sSymName;
23 ss <<
"_"<< BinFuncName() <<
"(";
24 for (
size_t i = 0;
i < vSubArguments.size();
i++)
28 vSubArguments[
i]->GenSlidingWindowDecl(ss);
31 ss <<
" int gid0=get_global_id(0);\n";
32 ss <<
" double tmp =0;\n";
33 GenTmpVariables(ss,vSubArguments);
34 if(vSubArguments[0]->GetFormulaToken()->GetType() ==
37 FormulaToken *tmpCur = vSubArguments[0]->GetFormulaToken();
46 ss <<
"gid0; i < "<< nCurWindowSize <<
"; i++)\n";
48 ss <<
"0; i < gid0+"<< nCurWindowSize <<
"; i++)\n";
50 ss <<
"0; i < "<< nCurWindowSize <<
"; i++)\n";
55 ss <<
" int doubleIndex =i+gid0;\n";
58 ss <<
" int doubleIndex =i;\n";
61 CheckSubArgumentIsNan(ss,vSubArguments,0);
62 CheckSubArgumentIsNan(ss,vSubArguments,1);
63 ss <<
" tmp +=pow(tmp0,2) - pow(tmp1,2);\n";
68 ss <<
" int singleIndex =gid0;\n";
69 CheckAllSubArgumentIsNan(ss, vSubArguments);
70 ss <<
" tmp = pow(tmp0,2) - pow(tmp1,2);\n";
72 ss <<
"return tmp;\n";
76 void OpSumX2PY2::GenSlidingWindowFunction(std::stringstream &ss,
77 const std::string &sSymName,
SubArguments &vSubArguments)
79 ss <<
"\ndouble " << sSymName;
80 ss <<
"_"<< BinFuncName() <<
"(";
81 for (
size_t i = 0;
i < vSubArguments.size();
i++)
85 vSubArguments[
i]->GenSlidingWindowDecl(ss);
88 ss <<
" int gid0=get_global_id(0);\n";
89 ss <<
" double tmp =0;\n";
90 GenTmpVariables(ss,vSubArguments);
91 if(vSubArguments[0]->GetFormulaToken()->GetType() ==
94 FormulaToken *tmpCur = vSubArguments[0]->GetFormulaToken();
103 ss <<
"gid0; i < "<< nCurWindowSize <<
"; i++)\n";
105 ss <<
"0; i < gid0+"<< nCurWindowSize <<
"; i++)\n";
107 ss <<
"0; i < "<< nCurWindowSize <<
"; i++)\n";
112 ss <<
" int doubleIndex =i+gid0;\n";
115 ss <<
" int doubleIndex =i;\n";
118 CheckSubArgumentIsNan(ss,vSubArguments,0);
119 CheckSubArgumentIsNan(ss,vSubArguments,1);
120 ss <<
" tmp +=pow(tmp0,2) + pow(tmp1,2);\n";
125 ss <<
" int singleIndex =gid0;\n";
126 CheckAllSubArgumentIsNan(ss, vSubArguments);
127 ss <<
" tmp = pow(tmp0,2) + pow(tmp1,2);\n";
129 ss <<
" return tmp;\n";
132 void OpSumXMY2::GenSlidingWindowFunction(std::stringstream &ss,
133 const std::string &sSymName,
SubArguments &vSubArguments)
135 ss <<
"\ndouble " << sSymName;
136 ss <<
"_"<< BinFuncName() <<
"(";
137 for (
size_t i = 0;
i < vSubArguments.size();
i++)
141 vSubArguments[
i]->GenSlidingWindowDecl(ss);
144 ss <<
" int gid0=get_global_id(0);\n";
145 ss <<
" double tmp =0;\n";
146 GenTmpVariables(ss,vSubArguments);
147 if(vSubArguments[0]->GetFormulaToken()->GetType() ==
150 FormulaToken *tmpCur = vSubArguments[0]->GetFormulaToken();
159 ss <<
"gid0; i < "<< nCurWindowSize <<
"; i++)\n";
161 ss <<
"0; i < gid0+"<< nCurWindowSize <<
"; i++)\n";
163 ss <<
"0; i < "<< nCurWindowSize <<
"; i++)\n";
168 ss <<
" int doubleIndex =i+gid0;\n";
171 ss <<
" int doubleIndex =i;\n";
174 CheckSubArgumentIsNan(ss,vSubArguments,0);
175 CheckSubArgumentIsNan(ss,vSubArguments,1);
176 ss <<
" tmp +=pow((tmp0-tmp1),2);\n";
181 ss <<
" int singleIndex =gid0;\n";
182 CheckAllSubArgumentIsNan(ss, vSubArguments);
183 ss <<
" tmp = pow((tmp0-tmp1),2);\n";
185 ss <<
" return tmp;\n";
std::vector< DynamicKernelArgumentRef > SubArguments
Arguments that are actually compile-time constant string Currently, only the hash is passed...