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,
}
}
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 << "_"<< BinFuncName() <<"(";
for (unsigned i = 0; i < vSubArguments.size(); i++)
......@@ -3395,21 +3393,51 @@ void OpFisher::GenSlidingWindowFunction(
ss << ",";
vSubArguments[i]->GenSlidingWindowDecl(ss);
}
ss << ") {\n\t";
ss <<"int gid0=get_global_id(0);\n\t";
ss << "double arg0 = " << vSubArguments[0]->GenSlidingWindowDeclRef();
ss << ";\n\t";
ss << ") {\n";
ss <<" int gid0=get_global_id(0);\n";
ss <<" double arg0;\n";
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
ss<< "if(isNan(arg0)||(gid0>=";
ss<<tmpCurDVR->GetArrayLength();
ss<<"))\n\t\t";
ss<<"arg0 = 0;\n\t";
ss<< " if(isNan(arg0)||(gid0>=";
ss<<pSVR->GetArrayLength();
ss<<"))\n";
ss<<" arg0 = 0;\n";
#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";
}
void OpFisherInv::GenSlidingWindowFunction(
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