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 "algorithms/algorithm_base_mode_batch.h"
28 #include "services/host_app.h"
47 template<ComputeMode mode>
48 class DAAL_EXPORT AlgorithmImpl :
public Algorithm<mode>
52 AlgorithmImpl() : wasSetup(false), resetFlag(true), wasFinalizeSetup(false), resetFinalizeFlag(true) {}
54 AlgorithmImpl(
const AlgorithmImpl& other) : wasSetup(false), resetFlag(true), wasFinalizeSetup(false), resetFinalizeFlag(true) {}
56 virtual ~AlgorithmImpl()
59 resetFinalizeCompute();
66 services::Status computeNoThrow();
72 services::Status compute()
74 this->_status = computeNoThrow();
75 return services::throwIfPossible(this->_status);
81 services::Status finalizeComputeNoThrow()
83 if(this->isChecksEnabled())
85 services::Status s = this->checkPartialResult();
90 services::Status s = this->allocateResultMemory();
92 return s.add(services::ErrorMemoryAllocationFailed);
94 this->_ac->setPartialResult(this->_pres);
95 this->_ac->setResult(this->_res);
97 if(this->isChecksEnabled())
99 s = this->checkFinalizeComputeParams();
104 s = setupFinalizeCompute();
106 s |= this->_ac->finalizeCompute();
107 if(resetFinalizeFlag)
108 s |= resetFinalizeCompute();
115 services::Status finalizeCompute()
117 this->_status = finalizeComputeNoThrow();
118 return services::throwIfPossible(this->_status);
124 virtual services::Status checkComputeParams() DAAL_C11_OVERRIDE
128 s = this->_par->check();
129 return s.add(this->_in->check(this->_par, this->getMethod()));
135 virtual services::Status checkResult() DAAL_C11_OVERRIDE
137 return this->_pres ? this->_pres->check(this->_in, this->_par, this->getMethod()) :
138 services::Status(services::ErrorNullPartialResult);
144 virtual services::Status checkPartialResult() DAAL_C11_OVERRIDE
146 return this->_pres ? this->_pres->check(this->_par, this->getMethod()) :
147 services::Status(services::ErrorNullPartialResult);
153 virtual services::Status checkFinalizeComputeParams() DAAL_C11_OVERRIDE
155 return this->_res ? this->_res->check(this->_pres, this->_par, this->getMethod()) : services::Status();
158 services::Status setupCompute()
163 s = this->_ac->setupCompute();
169 services::Status resetCompute()
174 s = this->_ac->resetCompute();
180 void enableResetOnCompute(
bool flag)
185 services::Status setupFinalizeCompute()
188 if(!wasFinalizeSetup)
190 s = this->_ac->setupFinalizeCompute();
191 wasFinalizeSetup =
true;
196 services::Status resetFinalizeCompute()
201 s = this->_ac->resetFinalizeCompute();
202 wasFinalizeSetup =
false;
207 void enableResetOnFinalizeCompute(
bool flag)
209 resetFinalizeFlag = flag;
215 services::HostAppIfacePtr hostApp();
221 void setHostApp(
const services::HostAppIfacePtr& pHost);
226 bool wasFinalizeSetup;
227 bool resetFinalizeFlag;
235 class DAAL_EXPORT AlgorithmImpl<batch> :
public Algorithm<batch>
239 AlgorithmImpl() : wasSetup(false), resetFlag(true) {}
241 AlgorithmImpl(
const AlgorithmImpl& other) : wasSetup(false), resetFlag(true) {}
243 virtual ~AlgorithmImpl()
251 services::Status computeNoThrow();
256 services::Status compute()
258 this->_status = computeNoThrow();
259 return services::throwIfPossible(this->_status);
265 virtual services::Status checkComputeParams() DAAL_C11_OVERRIDE
275 return _in->check(_par, getMethod());
281 virtual services::Status checkResult() DAAL_C11_OVERRIDE
284 return _res->check(_in, _par, getMethod());
285 return services::Status(services::ErrorNullResult);
288 services::Status setupCompute()
293 s = this->_ac->setupCompute();
299 services::Status resetCompute()
304 s = this->_ac->resetCompute();
310 void enableResetOnCompute(
bool flag)
319 services::HostAppIfacePtr hostApp();
325 void setHostApp(
const services::HostAppIfacePtr& pHost);
333 using interface1::AlgorithmImpl;
daal::algorithms::interface1::AlgorithmImpl< batch >::AlgorithmImpl
AlgorithmImpl()
Definition: algorithm_base_mode_impl.h:239
daal
Definition: algorithm_base_common.h:31
daal::algorithms::interface1::AlgorithmImpl::AlgorithmImpl
AlgorithmImpl()
Definition: algorithm_base_mode_impl.h:52
daal::algorithms::interface1::AlgorithmImpl< batch >::checkResult
virtual services::Status checkResult() DAAL_C11_OVERRIDE
Definition: algorithm_base_mode_impl.h:281
daal::algorithms::interface1::AlgorithmImpl::checkPartialResult
virtual services::Status checkPartialResult() DAAL_C11_OVERRIDE
Definition: algorithm_base_mode_impl.h:144
daal::algorithms::interface1::AlgorithmImpl< batch >::compute
services::Status compute()
Definition: algorithm_base_mode_impl.h:256
daal::services::ErrorNullPartialResult
Definition: error_indexes.h:105
daal::services::ErrorMemoryAllocationFailed
Definition: error_indexes.h:146
daal::algorithms::interface1::AlgorithmImpl< batch >::checkComputeParams
virtual services::Status checkComputeParams() DAAL_C11_OVERRIDE
Definition: algorithm_base_mode_impl.h:265
daal::algorithms::interface1::AlgorithmImpl::checkResult
virtual services::Status checkResult() DAAL_C11_OVERRIDE
Definition: algorithm_base_mode_impl.h:135
daal::algorithms::interface1::AlgorithmImpl::checkComputeParams
virtual services::Status checkComputeParams() DAAL_C11_OVERRIDE
Definition: algorithm_base_mode_impl.h:124
daal::batch
Definition: daal_defines.h:106
daal::algorithms::interface1::AlgorithmImpl::compute
services::Status compute()
Definition: algorithm_base_mode_impl.h:72
daal::algorithms::interface1::AlgorithmImpl::finalizeCompute
services::Status finalizeCompute()
Definition: algorithm_base_mode_impl.h:115
daal::algorithms::interface1::AlgorithmImpl
Provides implementations of the compute and finalizeCompute methods of the Algorithm class...
Definition: algorithm_base_mode_impl.h:48
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:81
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:153