Kaydet (Commit) de9248a8 authored tarafından mingli's avatar mingli Kaydeden (comit) I-Jui (Ray) Sung

GPU Calc: Optimized FISHER

AMLOEXT-261

Change-Id: Ic96d701aa8bbe1e1fe15ca196556960b34fd64d3
Signed-off-by: 's avatarhaochen <haochen@multicorewareinc.com>
Signed-off-by: 's avatarWei Wei <weiwei@multicorewareinc.com>
Signed-off-by: 's avatarI-Jui (Ray) Sung <ray@multicorewareinc.com>
üst d8afb553
...@@ -3382,11 +3382,9 @@ void OpSTEYX::GenSlidingWindowFunction(std::stringstream &ss, ...@@ -3382,11 +3382,9 @@ void OpSTEYX::GenSlidingWindowFunction(std::stringstream &ss,
} }
} }
void OpFisher::GenSlidingWindowFunction( void OpFisher::GenSlidingWindowFunction(
std::stringstream &ss, const std::string sSymName, SubArguments &vSubArguments) std::stringstream &ss, const std::string sSymName, SubArguments &
vSubArguments)
{ {
FormulaToken *tmpCur = vSubArguments[0]->GetFormulaToken();
const formula::SingleVectorRefToken*tmpCurDVR=
dynamic_cast<const formula::SingleVectorRefToken *>(tmpCur);
ss << "\ndouble " << sSymName; ss << "\ndouble " << sSymName;
ss << "_"<< BinFuncName() <<"("; ss << "_"<< BinFuncName() <<"(";
for (unsigned i = 0; i < vSubArguments.size(); i++) for (unsigned i = 0; i < vSubArguments.size(); i++)
...@@ -3395,21 +3393,51 @@ void OpFisher::GenSlidingWindowFunction( ...@@ -3395,21 +3393,51 @@ void OpFisher::GenSlidingWindowFunction(
ss << ","; ss << ",";
vSubArguments[i]->GenSlidingWindowDecl(ss); vSubArguments[i]->GenSlidingWindowDecl(ss);
} }
ss << ") {\n\t"; ss << ") {\n";
ss <<"int gid0=get_global_id(0);\n\t"; ss <<" int gid0=get_global_id(0);\n";
ss << "double arg0 = " << vSubArguments[0]->GenSlidingWindowDeclRef(); ss <<" double arg0;\n";
ss << ";\n\t"; if(vSubArguments.size() != 1)
{
ss << " return DBL_MAX;\n";
return ;
}
FormulaToken *pCur = vSubArguments[0]->GetFormulaToken();
assert(pCur);
if (pCur->GetType() == formula::svDoubleVectorRef)
{
ss << " return DBL_MAX;\n";
return ;
}
else if (pCur->GetType() == formula::svSingleVectorRef)
{
const formula::SingleVectorRefToken* pSVR =
dynamic_cast< const formula::SingleVectorRefToken* >(pCur);
ss << " arg0 = " << vSubArguments[0]->GenSlidingWindowDeclRef();
ss << ";\n";
#ifdef ISNAN #ifdef ISNAN
ss<< "if(isNan(arg0)||(gid0>="; ss<< " if(isNan(arg0)||(gid0>=";
ss<<tmpCurDVR->GetArrayLength(); ss<<pSVR->GetArrayLength();
ss<<"))\n\t\t"; ss<<"))\n";
ss<<"arg0 = 0;\n\t"; ss<<" arg0 = 0;\n";
#endif #endif
ss << "double tmp=atanh(arg0);\n\t"; }
ss << "return tmp;\n"; else if (pCur->GetType() == formula::svDouble)
{
ss << " arg0 = " << vSubArguments[0]->GenSlidingWindowDeclRef();
ss << ";\n";
#ifdef ISNAN
ss << " if(isNan(arg0))\n";
ss << " return DBL_MAX;\n";
#endif
}
ss << " if (fabs(arg0) >= 1.0)\n";
ss << " return DBL_MAX;\n";
ss << " double tmp=0.5*log((1+arg0)*pow((1-arg0),-1));\n";
ss << " return tmp;\n";
ss << "}\n"; ss << "}\n";
} }
void OpFisherInv::GenSlidingWindowFunction( void OpFisherInv::GenSlidingWindowFunction(
std::stringstream &ss, const std::string sSymName, SubArguments &vSubArguments) std::stringstream &ss, const std::string sSymName, SubArguments &vSubArguments)
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment