23 #ifndef __IMPLICIT_ALS_TRAINING_INIT_DISTRIBUTED_H__
24 #define __IMPLICIT_ALS_TRAINING_INIT_DISTRIBUTED_H__
26 #include "algorithms/algorithm.h"
27 #include "algorithms/implicit_als/implicit_als_training_init_types.h"
33 namespace implicit_als
52 template<ComputeStep step,
typename algorithmFPType, Method method, CpuType cpu>
53 class DAAL_EXPORT DistributedContainer {};
59 template<
typename algorithmFPType, Method method, CpuType cpu>
60 class DAAL_EXPORT DistributedContainer<step1Local, algorithmFPType, method, cpu> :
public
61 TrainingContainerIface<distributed>
69 DistributedContainer(daal::services::Environment::env *daalEnv);
71 ~DistributedContainer();
76 services::Status compute() DAAL_C11_OVERRIDE;
81 services::Status finalizeCompute() DAAL_C11_OVERRIDE {
return services::Status(); }
88 template<
typename algorithmFPType, Method method, CpuType cpu>
89 class DAAL_EXPORT DistributedContainer<step2Local, algorithmFPType, method, cpu> :
public
90 TrainingContainerIface<distributed>
98 DistributedContainer(daal::services::Environment::env *daalEnv);
100 ~DistributedContainer();
105 services::Status compute() DAAL_C11_OVERRIDE;
110 services::Status finalizeCompute() DAAL_C11_OVERRIDE {
return services::Status(); }
126 template<ComputeStep step,
typename algorithmFPType = DAAL_ALGORITHM_FP_TYPE, Method method = fastCSR>
127 class DAAL_EXPORT Distributed {};
140 template<
typename algorithmFPType, Method method>
141 class DAAL_EXPORT Distributed<step1Local, algorithmFPType, method> :
public Training<distributed>
144 typedef algorithms::implicit_als::training::init::DistributedInput<step1Local> InputType;
145 typedef algorithms::implicit_als::training::init::DistributedParameter ParameterType;
146 typedef algorithms::implicit_als::training::init::Result ResultType;
147 typedef algorithms::implicit_als::training::init::PartialResult PartialResultType;
149 DistributedInput<step1Local> input;
150 ParameterType parameter;
164 Distributed(
const Distributed<step1Local, algorithmFPType, method> &other) : input(other.input), parameter(other.parameter)
173 virtual int getMethod() const DAAL_C11_OVERRIDE {
return(
int)method; }
179 services::Status setPartialResult(
const PartialResultPtr& partialResult)
181 DAAL_CHECK(partialResult, services::ErrorNullPartialResult);
182 _partialResult = partialResult;
183 _pres = _partialResult.get();
184 return services::Status();
191 PartialResultPtr getPartialResult() {
return _partialResult; }
198 services::SharedPtr<Distributed<step1Local, algorithmFPType, method> > clone()
const
200 return services::SharedPtr<Distributed<step1Local, algorithmFPType, method> >(cloneImpl());
204 PartialResultPtr _partialResult;
206 virtual Distributed<step1Local, algorithmFPType, method> * cloneImpl() const DAAL_C11_OVERRIDE
208 return new Distributed<step1Local, algorithmFPType, method>(*this);
211 services::Status allocateResult() DAAL_C11_OVERRIDE
213 return services::Status();
216 services::Status allocatePartialResult() DAAL_C11_OVERRIDE
218 services::Status s = _partialResult->allocate<algorithmFPType>(&input, ¶meter, method);
219 _pres = _partialResult.get();
223 services::Status initializePartialResult() DAAL_C11_OVERRIDE
225 return services::Status();
230 _ac =
new __DAAL_ALGORITHM_CONTAINER(distributed, DistributedContainer, step1Local, algorithmFPType, method)(&_env);
233 _partialResult.reset(
new PartialResultType());
248 template<
typename algorithmFPType, Method method>
249 class DAAL_EXPORT Distributed<step2Local, algorithmFPType, method> :
public Training<distributed>
252 typedef algorithms::implicit_als::training::init::DistributedInput<step2Local> InputType;
253 typedef algorithms::implicit_als::training::init::Result ResultType;
254 typedef algorithms::implicit_als::training::init::DistributedPartialResultStep2 PartialResultType;
256 DistributedInput<step2Local> input;
270 Distributed(
const Distributed<step2Local, algorithmFPType, method> &other)
273 input.set(inputOfStep2FromStep1, other.input.get(inputOfStep2FromStep1));
280 virtual int getMethod() const DAAL_C11_OVERRIDE {
return(
int)method; }
286 services::Status setPartialResult(
const DistributedPartialResultStep2Ptr& partialResult)
288 DAAL_CHECK(partialResult, services::ErrorNullPartialResult);
289 _partialResult = partialResult;
290 _pres = _partialResult.get();
291 return services::Status();
298 DistributedPartialResultStep2Ptr getPartialResult() {
return _partialResult; }
305 services::SharedPtr<Distributed<step2Local, algorithmFPType, method> > clone()
const
307 return services::SharedPtr<Distributed<step2Local, algorithmFPType, method> >(cloneImpl());
311 DistributedPartialResultStep2Ptr _partialResult;
313 virtual Distributed<step2Local, algorithmFPType, method> * cloneImpl() const DAAL_C11_OVERRIDE
315 return new Distributed<step2Local, algorithmFPType, method>(*this);
318 services::Status allocateResult() DAAL_C11_OVERRIDE
320 return services::Status();
323 services::Status allocatePartialResult() DAAL_C11_OVERRIDE
325 services::Status s = _partialResult->allocate<algorithmFPType>(&input, NULL, method);
326 _pres = _partialResult.get();
330 services::Status initializePartialResult() DAAL_C11_OVERRIDE
332 return services::Status();
337 _ac =
new __DAAL_ALGORITHM_CONTAINER(distributed, DistributedContainer, step2Local, algorithmFPType, method)(&_env);
340 _partialResult.reset(
new PartialResultType());
345 using interface1::DistributedContainer;
346 using interface1::Distributed;
daal::algorithms::implicit_als::training::init::interface1::DistributedContainer< step2Local, algorithmFPType, method, cpu >::finalizeCompute
services::Status finalizeCompute() DAAL_C11_OVERRIDE
Definition: implicit_als_training_init_distributed.h:110
daal::algorithms::implicit_als::training::init::interface1::Distributed< step1Local, algorithmFPType, method >::getPartialResult
PartialResultPtr getPartialResult()
Definition: implicit_als_training_init_distributed.h:191
daal::algorithms::implicit_als::training::init::inputOfStep2FromStep1
Definition: implicit_als_training_init_types.h:77
daal::step2Local
Definition: daal_defines.h:126
daal::algorithms::implicit_als::training::init::interface1::Distributed< step2Local, algorithmFPType, method >
Initializes the implicit ALS model in the second step of the distributed processing mode...
Definition: implicit_als_training_init_distributed.h:249
daal::algorithms::implicit_als::training::init::interface1::Distributed< step2Local, algorithmFPType, method >::getMethod
virtual int getMethod() const DAAL_C11_OVERRIDE
Definition: implicit_als_training_init_distributed.h:280
daal
Definition: algorithm_base_common.h:31
daal::algorithms::implicit_als::training::init::interface1::Distributed< step1Local, algorithmFPType, method >::getMethod
virtual int getMethod() const DAAL_C11_OVERRIDE
Definition: implicit_als_training_init_distributed.h:173
daal::algorithms::implicit_als::training::init::interface1::Distributed< step2Local, algorithmFPType, method >::input
DistributedInput< step2Local > input
Definition: implicit_als_training_init_distributed.h:256
daal::algorithms::implicit_als::training::init::interface1::DistributedContainer
Class containing methods to compute the results of the implicit ALS initialization algorithm in the d...
Definition: implicit_als_training_init_distributed.h:53
daal::algorithms::implicit_als::training::init::interface1::Distributed< step1Local, algorithmFPType, method >::Distributed
Distributed(const Distributed< step1Local, algorithmFPType, method > &other)
Definition: implicit_als_training_init_distributed.h:164
daal::algorithms::implicit_als::training::init::interface1::Distributed< step1Local, algorithmFPType, method >::setPartialResult
services::Status setPartialResult(const PartialResultPtr &partialResult)
Definition: implicit_als_training_init_distributed.h:179
daal::services::ErrorNullPartialResult
Definition: error_indexes.h:105
daal::algorithms::implicit_als::training::init::interface1::Distributed< step1Local, algorithmFPType, method >::clone
services::SharedPtr< Distributed< step1Local, algorithmFPType, method > > clone() const
Definition: implicit_als_training_init_distributed.h:198
daal::algorithms::implicit_als::training::init::interface1::Distributed< step2Local, algorithmFPType, method >::setPartialResult
services::Status setPartialResult(const DistributedPartialResultStep2Ptr &partialResult)
Definition: implicit_als_training_init_distributed.h:286
daal::algorithms::kmeans::init::interface2::Distributed
class DAAL_EXPORT Distributed
Computes initial clusters for the K-Means algorithm in the distributed processing mode...
Definition: kmeans_init_distributed.h:275
daal::algorithms::implicit_als::training::init::interface1::Distributed< step2Local, algorithmFPType, method >::getPartialResult
DistributedPartialResultStep2Ptr getPartialResult()
Definition: implicit_als_training_init_distributed.h:298
daal::distributed
Definition: daal_defines.h:111
daal::algorithms::implicit_als::training::init::interface1::Distributed< step1Local, algorithmFPType, method >
Initializes the implicit ALS model in the first step of the distributed processing mode...
Definition: implicit_als_training_init_distributed.h:141
daal::algorithms::implicit_als::training::init::interface1::Distributed< step2Local, algorithmFPType, method >::Distributed
Distributed(const Distributed< step2Local, algorithmFPType, method > &other)
Definition: implicit_als_training_init_distributed.h:270
daal::algorithms::implicit_als::training::init::interface1::Distributed< step1Local, algorithmFPType, method >::Distributed
Distributed()
Definition: implicit_als_training_init_distributed.h:153
daal::algorithms::implicit_als::training::init::interface1::DistributedContainer< step1Local, algorithmFPType, method, cpu >::finalizeCompute
services::Status finalizeCompute() DAAL_C11_OVERRIDE
Definition: implicit_als_training_init_distributed.h:81
daal::algorithms::implicit_als::training::init::interface1::Distributed< step2Local, algorithmFPType, method >::clone
services::SharedPtr< Distributed< step2Local, algorithmFPType, method > > clone() const
Definition: implicit_als_training_init_distributed.h:305
daal::algorithms::kmeans::interface1::DistributedContainer
class DAAL_EXPORT DistributedContainer
Provides methods to run implementations of the K-Means algorithm. This class is associated with the d...
Definition: kmeans_distributed.h:55
daal::step1Local
Definition: daal_defines.h:121
daal::algorithms::implicit_als::training::init::interface1::Distributed< step1Local, algorithmFPType, method >::input
DistributedInput< step1Local > input
Definition: implicit_als_training_init_distributed.h:149
daal::algorithms::implicit_als::training::init::interface1::Distributed< step2Local, algorithmFPType, method >::Distributed
Distributed()
Definition: implicit_als_training_init_distributed.h:259
daal::algorithms::TrainingContainerIface
Abstract interface class that provides virtual methods to access and run implementations of the model...
Definition: training.h:50
daal::algorithms::implicit_als::training::init::interface1::Distributed
Initializes the implicit ALS model in the distributed processing mode.
Definition: implicit_als_training_init_distributed.h:127
daal::algorithms::implicit_als::training::init::interface1::Distributed< step1Local, algorithmFPType, method >::parameter
ParameterType parameter
Definition: implicit_als_training_init_distributed.h:150
daal::algorithms::Training
Provides methods to train models that depend on the data provided. For example, these methods enable ...
Definition: training.h:60