diff options
author | yiming ju <yiming@multicorewareinc.com> | 2013-12-06 12:46:24 +0800 |
---|---|---|
committer | I-Jui (Ray) Sung <ray@multicorewareinc.com> | 2013-12-19 17:53:41 -0600 |
commit | c1c6701a46128b795d6a98a82068fb2b7c322329 (patch) | |
tree | be0bafcfc5b44c38b5571baa7d5d8ede814aea44 /sc/source | |
parent | 6dfd73beffefb625a1c5a42764fe85969ccfb45d (diff) |
GPU Calc: Optimized RECEIVED
AMLOEXT-328
Change-Id: I8b6031aa9cebf15ce1aa9f4ae38cabe0995b3aed
Signed-off-by: haochen <haochen@multicorewareinc.com>
Signed-off-by: Wei Wei <weiwei@multicorewareinc.com>
Signed-off-by: I-Jui (Ray) Sung <ray@multicorewareinc.com>
Diffstat (limited to 'sc/source')
-rw-r--r-- | sc/source/core/opencl/op_financial.cxx | 89 |
1 files changed, 45 insertions, 44 deletions
diff --git a/sc/source/core/opencl/op_financial.cxx b/sc/source/core/opencl/op_financial.cxx index 529e76df8b7d..f5cc04e24fbb 100644 --- a/sc/source/core/opencl/op_financial.cxx +++ b/sc/source/core/opencl/op_financial.cxx @@ -4542,12 +4542,12 @@ void OpReceived::GenSlidingWindowFunction(std::stringstream &ss, ss << ","; vSubArguments[i]->GenSlidingWindowDecl(ss); } - ss << ") {\n\t"; - ss << "double tmp = " << GetBottom() <<";\n\t"; - ss << "int gid0 = get_global_id(0);\n\t"; - ss << "int nSettle, nMat;\n\t"; - ss << "double fInvest,fDisc;\n\t"; - ss << "int rOB;\n\t"; + ss << ") {\n"; + ss << " double tmp = " << GetBottom() <<";\n"; + ss << " int gid0 = get_global_id(0);\n"; + ss << " int nSettle, nMat;\n"; + ss << " double fInvest,fDisc;\n"; + ss << " int rOB;\n"; #ifdef ISNAN FormulaToken *tmpCur0 = vSubArguments[0]->GetFormulaToken(); const formula::SingleVectorRefToken*tmpCurDVR0= dynamic_cast<const @@ -4564,67 +4564,68 @@ void OpReceived::GenSlidingWindowFunction(std::stringstream &ss, FormulaToken *tmpCur4 = vSubArguments[4]->GetFormulaToken(); const formula::SingleVectorRefToken*tmpCurDVR4= dynamic_cast<const formula::SingleVectorRefToken *>(tmpCur4); - ss<< "int buffer_settle_len = "; + ss<< " int buffer_settle_len = "; ss<< tmpCurDVR0->GetArrayLength(); - ss << ";\n\t"; - ss<< "int buffer_mat_len = "; + ss << ";\n"; + ss<< " int buffer_mat_len = "; ss<< tmpCurDVR1->GetArrayLength(); - ss << ";\n\t"; - ss<< "int buffer_invest_len = "; + ss << ";\n"; + ss<< " int buffer_invest_len = "; ss<< tmpCurDVR2->GetArrayLength(); - ss << ";\n\t"; - ss<< "int buffer_disc_len = "; + ss << ";\n"; + ss<< " int buffer_disc_len = "; ss<< tmpCurDVR3->GetArrayLength(); - ss << ";\n\t"; - ss<< "int buffer_rob_len = "; + ss << ";\n"; + ss<< " int buffer_rob_len = "; ss<< tmpCurDVR4->GetArrayLength(); - ss << ";\n\t"; + ss << ";\n"; #endif #ifdef ISNAN - ss <<"if(gid0 >= buffer_settle_len || isNan("; + ss <<" if(gid0 >= buffer_settle_len || isNan("; ss <<vSubArguments[0]->GenSlidingWindowDeclRef(); - ss <<"))\n\t\t"; - ss <<"nSettle = 0;\n\telse\n\t\t"; + ss <<"))\n"; + ss <<" nSettle = 0;\n\telse\n"; #endif - ss <<"nSettle = (int)"<<vSubArguments[0]->GenSlidingWindowDeclRef(); - ss <<";\n\t"; + ss <<" nSettle = (int)"<<vSubArguments[0]->GenSlidingWindowDeclRef(); + ss <<";\n"; #ifdef ISNAN - ss <<"if(gid0 >= buffer_mat_len || isNan("; + ss <<" if(gid0 >= buffer_mat_len || isNan("; ss <<vSubArguments[1]->GenSlidingWindowDeclRef(); - ss <<"))\n\t\t"; - ss <<"nMat = 0;\n\telse\n\t\t"; + ss <<"))\n"; + ss <<" nMat = 0;\n\telse\n"; #endif - ss <<"nMat = (int)"; + ss <<" nMat = (int)"; ss <<vSubArguments[1]->GenSlidingWindowDeclRef(); - ss <<";\n\t"; + ss <<";\n"; #ifdef ISNAN - ss <<"if(gid0 >= buffer_invest_len || isNan("; + ss <<" if(gid0 >= buffer_invest_len || isNan("; ss <<vSubArguments[2]->GenSlidingWindowDeclRef(); - ss <<"))\n\t\t"; - ss <<"fInvest = 0;\n\telse\n\t\t"; + ss <<"))\n"; + ss <<" fInvest = 0;\n\telse\n"; #endif - ss <<"fInvest = "<<vSubArguments[2]->GenSlidingWindowDeclRef(); - ss <<";\n\t"; + ss <<" fInvest = "<<vSubArguments[2]->GenSlidingWindowDeclRef(); + ss <<";\n"; #ifdef ISNAN - ss <<"if(gid0 >= buffer_disc_len || isNan("; + ss <<" if(gid0 >= buffer_disc_len || isNan("; ss <<vSubArguments[3]->GenSlidingWindowDeclRef(); - ss <<"))\n\t\t"; - ss <<"fDisc = 0;\n\telse\n\t\t"; + ss <<"))\n"; + ss <<" fDisc = 0;\n\telse\n"; #endif - ss <<"fDisc = "<<vSubArguments[3]->GenSlidingWindowDeclRef(); - ss <<";\n\t"; + ss <<" fDisc = "<<vSubArguments[3]->GenSlidingWindowDeclRef(); + ss <<";\n"; #ifdef ISNAN - ss <<"if(gid0 >= buffer_rob_len || isNan("; + ss <<" if(gid0 >= buffer_rob_len || isNan("; ss <<vSubArguments[4]->GenSlidingWindowDeclRef(); - ss <<"))\n\t\t"; - ss <<"rOB = 0;\n\telse\n\t\t"; + ss <<"))\n"; + ss <<" rOB = 0;\n\telse\n"; #endif - ss <<"rOB = (int)"<<vSubArguments[4]->GenSlidingWindowDeclRef(); - ss <<";\n\t"; - ss << "tmp = fInvest/(1.0-(fDisc"; + ss <<" rOB = (int)"<<vSubArguments[4]->GenSlidingWindowDeclRef(); + ss <<";\n"; + ss << " double tmpvalue = (1.0-(fDisc"; ss <<" * GetYearDiff( GetNullDate()"; - ss <<",nSettle,nMat,rOB)));"; - ss << "\n\treturn tmp;\n"; + ss <<",nSettle,nMat,rOB)));\n"; + ss << " tmp = fInvest*pow(tmpvalue,-1);\n"; + ss << " return tmp;\n"; ss << "}"; } |