From 7e3d93e763770c7759555cfe7441573a97d276c1 Mon Sep 17 00:00:00 2001 From: "I-Jui (Ray) Sung" Date: Mon, 25 Nov 2013 01:13:44 -0600 Subject: GPU Calc: fixed a SUMPRODUCT problem ALMOEXT-245 Change-Id: Iedbbdc612232a939b2270e373313c872de831c20 --- sc/source/core/opencl/formulagroupcl.cxx | 52 ++++++++++++++++++++++++++++---- 1 file changed, 46 insertions(+), 6 deletions(-) diff --git a/sc/source/core/opencl/formulagroupcl.cxx b/sc/source/core/opencl/formulagroupcl.cxx index 340545977b95..bee159bf3adc 100644 --- a/sc/source/core/opencl/formulagroupcl.cxx +++ b/sc/source/core/opencl/formulagroupcl.cxx @@ -1103,10 +1103,30 @@ public: ss << "for(int outLoop=0; outLoop<" << nCurWindowSize/outLoopSize<< "; outLoop++){\n\t"; for(int count=0; count < outLoopSize; count++){ - ss << "i = outLoop*"<GetFormulaToken(); + if(ocPush==tmpCur->GetOpCode()) + { + pCurDVR= dynamic_cast< + const formula::DoubleVectorRefToken *>(tmpCur); + if(!pCurDVR->IsStartFixed() && !pCurDVR->IsEndFixed()) + { + temp3 << " currentCount"; + temp3 << i; + temp3 <<" =i+gid0+1;\n"; + } + else + { + temp3 << " currentCount"; + temp3 << i; + temp3 << " =i+1;\n"; + } + } + } + temp3 << "tmp = fsum("; for (unsigned i = 0; i < vSubArguments.size(); i++){ if (i) @@ -1149,10 +1169,30 @@ public: for(unsigned int count=nCurWindowSize/outLoopSize*outLoopSize; count < nCurWindowSize; count++) { - ss << "i =" <GetFormulaToken(); + if(ocPush==tmpCur->GetOpCode()) + { + pCurDVR= dynamic_cast< + const formula::DoubleVectorRefToken *>(tmpCur); + if(!pCurDVR->IsStartFixed() && !pCurDVR->IsEndFixed()) + { + temp4 << " currentCount"; + temp4 << i; + temp4 <<" =i+gid0+1;\n"; + } + else + { + temp4 << " currentCount"; + temp4 << i; + temp4 << " =i+1;\n"; + } + } + } + temp4 << "tmp = fsum("; for (unsigned i = 0; i < vSubArguments.size(); i++) { -- cgit