22 #ifndef __ALGORITHM_BASE_MODE_IMPL_H__
23 #define __ALGORITHM_BASE_MODE_IMPL_H__
25 #include "services/daal_defines.h"
26 #include "algorithms/algorithm_base_common.h"
27 #include "services/daal_memory.h"
28 #include "services/daal_kernel_defines.h"
30 #include "services/host_app.h"
49 template<ComputeMode mode>
50 class DAAL_EXPORT AlgorithmImpl :
public Algorithm<mode>
54 AlgorithmImpl() : wasSetup(false), resetFlag(true), wasFinalizeSetup(false), resetFinalizeFlag(true) {}
56 AlgorithmImpl(
const AlgorithmImpl& other) : wasSetup(false), resetFlag(true), wasFinalizeSetup(false), resetFinalizeFlag(true) {}
58 virtual ~AlgorithmImpl()
61 resetFinalizeCompute();
68 services::Status computeNoThrow();
74 services::Status compute()
76 this->_status = computeNoThrow();
77 return services::throwIfPossible(this->_status);
83 services::Status finalizeComputeNoThrow()
85 if(this->isChecksEnabled())
87 services::Status s = this->checkPartialResult();
92 services::Status s = this->allocateResultMemory();
94 return s.add(services::ErrorMemoryAllocationFailed);
96 this->_ac->setPartialResult(this->_pres);
97 this->_ac->setResult(this->_res);
99 if(this->isChecksEnabled())
101 s = this->checkFinalizeComputeParams();
106 s = setupFinalizeCompute();
108 s |= this->_ac->finalizeCompute();
109 if(resetFinalizeFlag)
110 s |= resetFinalizeCompute();
117 services::Status finalizeCompute()
119 this->_status = finalizeComputeNoThrow();
120 return services::throwIfPossible(this->_status);
126 virtual services::Status checkComputeParams() DAAL_C11_OVERRIDE
130 s = this->_par->check();
131 return s.add(this->_in->check(this->_par, this->getMethod()));
137 virtual services::Status checkResult() DAAL_C11_OVERRIDE
139 return this->_pres ? this->_pres->check(this->_in, this->_par, this->getMethod()) :
140 services::Status(services::ErrorNullPartialResult);
146 virtual services::Status checkPartialResult() DAAL_C11_OVERRIDE
148 return this->_pres ? this->_pres->check(this->_par, this->getMethod()) :
149 services::Status(services::ErrorNullPartialResult);
155 virtual services::Status checkFinalizeComputeParams() DAAL_C11_OVERRIDE
157 return this->_res ? this->_res->check(this->_pres, this->_par, this->getMethod()) : services::Status();
160 services::Status setupCompute()
165 s = this->_ac->setupCompute();
171 services::Status resetCompute()
176 s = this->_ac->resetCompute();
182 void enableResetOnCompute(
bool flag)
187 services::Status setupFinalizeCompute()
190 if(!wasFinalizeSetup)
192 s = this->_ac->setupFinalizeCompute();
193 wasFinalizeSetup =
true;
198 services::Status resetFinalizeCompute()
203 s = this->_ac->resetFinalizeCompute();
204 wasFinalizeSetup =
false;
209 void enableResetOnFinalizeCompute(
bool flag)
211 resetFinalizeFlag = flag;
217 services::HostAppIfacePtr hostApp();
223 void setHostApp(
const services::HostAppIfacePtr& pHost);
228 bool wasFinalizeSetup;
229 bool resetFinalizeFlag;
237 class DAAL_EXPORT AlgorithmImpl<batch> :
public Algorithm<batch>
241 AlgorithmImpl() : wasSetup(false), resetFlag(true) {}
243 AlgorithmImpl(
const AlgorithmImpl& other) : wasSetup(false), resetFlag(true) {}
245 virtual ~AlgorithmImpl()
253 services::Status computeNoThrow();
258 services::Status compute()
260 this->_status = computeNoThrow();
261 return services::throwIfPossible(this->_status);
267 virtual services::Status checkComputeParams() DAAL_C11_OVERRIDE
277 return _in->check(_par, getMethod());
283 virtual services::Status checkResult() DAAL_C11_OVERRIDE
286 return _res->check(_in, _par, getMethod());
287 return services::Status(services::ErrorNullResult);
290 services::Status setupCompute()
295 s = this->_ac->setupCompute();
301 services::Status resetCompute()
306 s = this->_ac->resetCompute();
312 void enableResetOnCompute(
bool flag)
321 services::HostAppIfacePtr hostApp();
327 void setHostApp(
const services::HostAppIfacePtr& pHost);
335 using interface1::AlgorithmImpl;
daal::algorithms::interface1::AlgorithmImpl< batch >::AlgorithmImpl
AlgorithmImpl()
Definition: algorithm_base_mode_impl.h:241
daal
Definition: algorithm_base_common.h:31
daal::algorithms::interface1::AlgorithmImpl::AlgorithmImpl
AlgorithmImpl()
Definition: algorithm_base_mode_impl.h:54
daal::algorithms::interface1::AlgorithmImpl< batch >::checkResult
virtual services::Status checkResult() DAAL_C11_OVERRIDE
Definition: algorithm_base_mode_impl.h:283
daal::algorithms::interface1::AlgorithmImpl::checkPartialResult
virtual services::Status checkPartialResult() DAAL_C11_OVERRIDE
Definition: algorithm_base_mode_impl.h:146
daal::algorithms::interface1::AlgorithmImpl< batch >::compute
services::Status compute()
Definition: algorithm_base_mode_impl.h:258
daal::services::ErrorNullPartialResult
Definition: error_indexes.h:105
daal::services::ErrorMemoryAllocationFailed
Definition: error_indexes.h:147
daal::algorithms::interface1::AlgorithmImpl< batch >::checkComputeParams
virtual services::Status checkComputeParams() DAAL_C11_OVERRIDE
Definition: algorithm_base_mode_impl.h:267
daal::algorithms::interface1::AlgorithmImpl::checkResult
virtual services::Status checkResult() DAAL_C11_OVERRIDE
Definition: algorithm_base_mode_impl.h:137
daal::algorithms::interface1::AlgorithmImpl::checkComputeParams
virtual services::Status checkComputeParams() DAAL_C11_OVERRIDE
Definition: algorithm_base_mode_impl.h:126
daal::batch
Definition: daal_defines.h:110
daal::algorithms::interface1::AlgorithmImpl::compute
services::Status compute()
Definition: algorithm_base_mode_impl.h:74
daal::algorithms::interface1::AlgorithmImpl::finalizeCompute
services::Status finalizeCompute()
Definition: algorithm_base_mode_impl.h:117
daal::algorithms::interface1::AlgorithmImpl
Provides implementations of the compute and finalizeCompute methods of the Algorithm class...
Definition: algorithm_base_mode_impl.h:50
daal::algorithms::interface1::Algorithm
Implements the abstract interface AlgorithmIface. Algorithm is, in turn, the base class for the class...
Definition: algorithm_base_mode.h:50
daal::algorithms::interface1::AlgorithmImpl::finalizeComputeNoThrow
services::Status finalizeComputeNoThrow()
Definition: algorithm_base_mode_impl.h:83
daal::services::ErrorNullResult
Definition: error_indexes.h:96
daal::algorithms::interface1::AlgorithmImpl::checkFinalizeComputeParams
virtual services::Status checkFinalizeComputeParams() DAAL_C11_OVERRIDE
Definition: algorithm_base_mode_impl.h:155