24 #ifndef __ALGORITHM_BASE_MODE_IMPL_H__
25 #define __ALGORITHM_BASE_MODE_IMPL_H__
27 #include "services/daal_defines.h"
28 #include "algorithms/algorithm_base_common.h"
29 #include "services/daal_memory.h"
30 #include "services/daal_kernel_defines.h"
32 #include "services/host_app.h"
51 template<ComputeMode mode>
52 class DAAL_EXPORT AlgorithmImpl :
public Algorithm<mode>
56 AlgorithmImpl() : wasSetup(false), resetFlag(true), wasFinalizeSetup(false), resetFinalizeFlag(true) {}
58 AlgorithmImpl(
const AlgorithmImpl& other) : wasSetup(false), resetFlag(true), wasFinalizeSetup(false), resetFinalizeFlag(true) {}
60 virtual ~AlgorithmImpl()
63 resetFinalizeCompute();
70 services::Status computeNoThrow();
76 services::Status compute()
78 this->_status = computeNoThrow();
79 return services::throwIfPossible(this->_status);
85 services::Status finalizeComputeNoThrow()
87 if(this->isChecksEnabled())
89 services::Status s = this->checkPartialResult();
94 services::Status s = this->allocateResultMemory();
96 return s.add(services::ErrorMemoryAllocationFailed);
98 this->_ac->setPartialResult(this->_pres);
99 this->_ac->setResult(this->_res);
101 if(this->isChecksEnabled())
103 s = this->checkFinalizeComputeParams();
108 s = setupFinalizeCompute();
110 s |= this->_ac->finalizeCompute();
111 if(resetFinalizeFlag)
112 s |= resetFinalizeCompute();
119 services::Status finalizeCompute()
121 this->_status = finalizeComputeNoThrow();
122 return services::throwIfPossible(this->_status);
128 virtual services::Status checkComputeParams() DAAL_C11_OVERRIDE
132 s = this->_par->check();
133 return s.add(this->_in->check(this->_par, this->getMethod()));
139 virtual services::Status checkResult() DAAL_C11_OVERRIDE
141 return this->_pres ? this->_pres->check(this->_in, this->_par, this->getMethod()) :
142 services::Status(services::ErrorNullPartialResult);
148 virtual services::Status checkPartialResult() DAAL_C11_OVERRIDE
150 return this->_pres ? this->_pres->check(this->_par, this->getMethod()) :
151 services::Status(services::ErrorNullPartialResult);
157 virtual services::Status checkFinalizeComputeParams() DAAL_C11_OVERRIDE
159 return this->_res ? this->_res->check(this->_pres, this->_par, this->getMethod()) : services::Status();
162 services::Status setupCompute()
167 s = this->_ac->setupCompute();
173 services::Status resetCompute()
178 s = this->_ac->resetCompute();
184 void enableResetOnCompute(
bool flag)
189 services::Status setupFinalizeCompute()
192 if(!wasFinalizeSetup)
194 s = this->_ac->setupFinalizeCompute();
195 wasFinalizeSetup =
true;
200 services::Status resetFinalizeCompute()
205 s = this->_ac->resetFinalizeCompute();
206 wasFinalizeSetup =
false;
211 void enableResetOnFinalizeCompute(
bool flag)
213 resetFinalizeFlag = flag;
219 services::HostAppIfacePtr hostApp();
225 void setHostApp(
const services::HostAppIfacePtr& pHost);
230 bool wasFinalizeSetup;
231 bool resetFinalizeFlag;
239 class DAAL_EXPORT AlgorithmImpl<batch> :
public Algorithm<batch>
243 AlgorithmImpl() : wasSetup(false), resetFlag(true) {}
245 AlgorithmImpl(
const AlgorithmImpl& other) : wasSetup(false), resetFlag(true) {}
247 virtual ~AlgorithmImpl()
255 services::Status computeNoThrow();
260 services::Status compute()
262 this->_status = computeNoThrow();
263 return services::throwIfPossible(this->_status);
269 virtual services::Status checkComputeParams() DAAL_C11_OVERRIDE
279 return _in->check(_par, getMethod());
285 virtual services::Status checkResult() DAAL_C11_OVERRIDE
288 return _res->check(_in, _par, getMethod());
289 return services::Status(services::ErrorNullResult);
292 services::Status setupCompute()
297 s = this->_ac->setupCompute();
303 services::Status resetCompute()
308 s = this->_ac->resetCompute();
314 void enableResetOnCompute(
bool flag)
323 services::HostAppIfacePtr hostApp();
329 void setHostApp(
const services::HostAppIfacePtr& pHost);
337 using interface1::AlgorithmImpl;
daal::algorithms::interface1::AlgorithmImpl::checkResult
virtual services::Status checkResult() DAAL_C11_OVERRIDE
Definition: algorithm_base_mode_impl.h:139
daal::batch
Definition: daal_defines.h:112
daal::algorithms::interface1::AlgorithmImpl< batch >::AlgorithmImpl
AlgorithmImpl()
Definition: algorithm_base_mode_impl.h:243
daal::algorithms::interface1::AlgorithmImpl< batch >::checkResult
virtual services::Status checkResult() DAAL_C11_OVERRIDE
Definition: algorithm_base_mode_impl.h:285
daal::algorithms::interface1::AlgorithmImpl::finalizeCompute
services::Status finalizeCompute()
Definition: algorithm_base_mode_impl.h:119
daal::services::ErrorNullResult
Definition: error_indexes.h:98
daal::algorithms::interface1::Algorithm
Implements the abstract interface AlgorithmIface. Algorithm is, in turn, the base class for the class...
Definition: algorithm_base_mode.h:52
daal::algorithms::interface1::AlgorithmImpl::AlgorithmImpl
AlgorithmImpl()
Definition: algorithm_base_mode_impl.h:56
daal::algorithms::interface1::AlgorithmImpl
Provides implementations of the compute and finalizeCompute methods of the Algorithm class...
Definition: algorithm_base_mode_impl.h:52
daal::algorithms::interface1::AlgorithmImpl::checkPartialResult
virtual services::Status checkPartialResult() DAAL_C11_OVERRIDE
Definition: algorithm_base_mode_impl.h:148
daal::algorithms::interface1::AlgorithmImpl< batch >::compute
services::Status compute()
Definition: algorithm_base_mode_impl.h:260
daal::algorithms::interface1::AlgorithmImpl::checkComputeParams
virtual services::Status checkComputeParams() DAAL_C11_OVERRIDE
Definition: algorithm_base_mode_impl.h:128
daal::services::ErrorMemoryAllocationFailed
Definition: error_indexes.h:150
daal::algorithms::interface1::AlgorithmImpl::finalizeComputeNoThrow
services::Status finalizeComputeNoThrow()
Definition: algorithm_base_mode_impl.h:85
daal::services::ErrorNullPartialResult
Definition: error_indexes.h:107
daal::algorithms::interface1::AlgorithmImpl< batch >::checkComputeParams
virtual services::Status checkComputeParams() DAAL_C11_OVERRIDE
Definition: algorithm_base_mode_impl.h:269
daal::algorithms::interface1::AlgorithmImpl::checkFinalizeComputeParams
virtual services::Status checkFinalizeComputeParams() DAAL_C11_OVERRIDE
Definition: algorithm_base_mode_impl.h:157
daal::algorithms::interface1::AlgorithmImpl::compute
services::Status compute()
Definition: algorithm_base_mode_impl.h:76