24 #ifndef __ALGORITHM_BASE_MODE_H__
25 #define __ALGORITHM_BASE_MODE_H__
27 #include "services/daal_memory.h"
28 #include "services/daal_kernel_defines.h"
29 #include "services/error_handling.h"
30 #include "services/env_detect.h"
31 #include "algorithms/algorithm_types.h"
32 #include "algorithms/algorithm_base_common.h"
52 template<ComputeMode mode>
class Algorithm :
public AlgorithmIfaceImpl
56 Algorithm() : _ac(0), _in(0), _pres(0), _res(0), _par(0) { }
66 virtual void clean() {}
71 virtual services::Status checkPartialResult() = 0;
76 virtual services::Status checkFinalizeComputeParams() = 0;
79 PartialResult *allocatePartialResultMemory()
83 allocatePartialResult();
89 virtual void setParameter() {}
91 services::Status allocateResultMemory()
94 return allocateResult();
95 return services::Status();
98 services::Status initPartialResult()
100 return initializePartialResult();
103 virtual services::Status allocatePartialResult() = 0;
104 virtual services::Status allocateResult() = 0;
106 virtual services::Status initializePartialResult() = 0;
107 virtual Algorithm<mode> *cloneImpl()
const = 0;
109 bool getInitFlag() {
return _pres->getInitFlag(); }
110 void setInitFlag(
bool flag) { _pres->setInitFlag(flag); }
112 AlgorithmContainerImpl<mode> *_ac;
115 PartialResult *_pres;
126 template<>
class Algorithm<batch> :
public AlgorithmIfaceImpl
130 Algorithm() : _ac(0), _par(0), _in(0), _res(0) { }
143 virtual services::Status checkComputeParams() = 0;
145 Parameter * getBaseParameter() {
return _par; }
148 services::Status allocateResultMemory()
151 return allocateResult();
152 return services::Status();
155 virtual void setParameter() {}
157 virtual services::Status allocateResult() = 0;
159 virtual Algorithm<batch> *cloneImpl()
const = 0;
161 daal::algorithms::AlgorithmContainerImpl<batch> *_ac;
170 using interface1::Algorithm;
daal::algorithms::interface1::AlgorithmIfaceImpl
Implements the abstract interface AlgorithmIface. AlgorithmIfaceImpl is, in turn, the base class for ...
Definition: algorithm_base_common.h:87
daal::batch
Definition: daal_defines.h:112
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::Algorithm::checkFinalizeComputeParams
virtual services::Status checkFinalizeComputeParams()=0
daal::algorithms::interface1::Algorithm< batch >::Algorithm
Algorithm()
Definition: algorithm_base_mode.h:130
daal::algorithms::interface1::PartialResult::setInitFlag
void setInitFlag(bool flag)
Definition: algorithm_types.h:260
daal::algorithms::interface1::Algorithm::checkPartialResult
virtual services::Status checkPartialResult()=0
daal::algorithms::interface1::PartialResult::getInitFlag
bool getInitFlag()
Definition: algorithm_types.h:254
daal::algorithms::interface1::Algorithm::Algorithm
Algorithm()
Definition: algorithm_base_mode.h:56
daal::algorithms::interface1::AlgorithmIface::checkComputeParams
virtual services::Status checkComputeParams()=0