23 #ifndef __IMPLICIT_ALS_TRAINING_DISTRIBUTED_H__
24 #define __IMPLICIT_ALS_TRAINING_DISTRIBUTED_H__
26 #include "algorithms/algorithm.h"
27 #include "algorithms/implicit_als/implicit_als_training_types.h"
33 namespace implicit_als
50 template<ComputeStep step,
typename algorithmFPType, Method method, CpuType cpu>
51 class DAAL_EXPORT DistributedContainer
58 template<
typename algorithmFPType, Method method, CpuType cpu>
59 class DAAL_EXPORT DistributedContainer<step1Local, algorithmFPType, method, cpu> :
public
60 TrainingContainerIface<distributed>
68 DistributedContainer(daal::services::Environment::env *daalEnv);
70 ~DistributedContainer();
76 services::Status compute() DAAL_C11_OVERRIDE;
81 services::Status finalizeCompute() DAAL_C11_OVERRIDE;
88 template<
typename algorithmFPType, Method method, CpuType cpu>
89 class DAAL_EXPORT DistributedContainer<step2Master, algorithmFPType, method, cpu> :
public
90 TrainingContainerIface<distributed>
98 DistributedContainer(daal::services::Environment::env *daalEnv);
100 ~DistributedContainer();
106 services::Status compute() DAAL_C11_OVERRIDE;
111 services::Status finalizeCompute() DAAL_C11_OVERRIDE;
118 template<
typename algorithmFPType, Method method, CpuType cpu>
119 class DAAL_EXPORT DistributedContainer<step3Local, algorithmFPType, method, cpu> :
public
120 TrainingContainerIface<distributed>
128 DistributedContainer(daal::services::Environment::env *daalEnv);
130 ~DistributedContainer();
136 services::Status compute() DAAL_C11_OVERRIDE;
141 services::Status finalizeCompute() DAAL_C11_OVERRIDE;
148 template<
typename algorithmFPType, Method method, CpuType cpu>
149 class DAAL_EXPORT DistributedContainer<step4Local, algorithmFPType, method, cpu> :
public
150 TrainingContainerIface<distributed>
158 DistributedContainer(daal::services::Environment::env *daalEnv);
160 ~DistributedContainer();
166 services::Status compute() DAAL_C11_OVERRIDE;
171 services::Status finalizeCompute() DAAL_C11_OVERRIDE;
186 template<ComputeStep step,
typename algorithmFPType = DAAL_ALGORITHM_FP_TYPE, Method method = fastCSR>
187 class DAAL_EXPORT Distributed :
public Training<distributed> {};
204 template<
typename algorithmFPType, Method method>
205 class DAAL_EXPORT Distributed<step1Local, algorithmFPType, method> :
public Training<distributed>
208 typedef algorithms::implicit_als::training::DistributedInput<step1Local> InputType;
209 typedef algorithms::implicit_als::Parameter ParameterType;
210 typedef algorithms::implicit_als::training::Result ResultType;
211 typedef algorithms::implicit_als::training::DistributedPartialResultStep1 PartialResultType;
213 DistributedInput<step1Local> input;
214 ParameterType parameter;
228 Distributed(
const Distributed<step1Local, algorithmFPType, method> &other) : input(other.input), parameter(other.parameter)
237 virtual int getMethod() const DAAL_C11_OVERRIDE {
return(
int)method; }
245 services::Status setPartialResult(
const DistributedPartialResultStep1Ptr& partialResult)
247 DAAL_CHECK(partialResult, services::ErrorNullPartialResult);
248 _partialResult = partialResult;
249 _pres = _partialResult.get();
250 return services::Status();
259 DistributedPartialResultStep1Ptr getPartialResult() {
return _partialResult; }
266 services::SharedPtr<Distributed<step1Local, algorithmFPType, method> > clone()
const
268 return services::SharedPtr<Distributed<step1Local, algorithmFPType, method> >(cloneImpl());
272 DistributedPartialResultStep1Ptr _partialResult;
274 virtual Distributed<step1Local, algorithmFPType, method> * cloneImpl() const DAAL_C11_OVERRIDE
276 return new Distributed<step1Local, algorithmFPType, method>(*this);
279 services::Status allocateResult() DAAL_C11_OVERRIDE
281 return services::Status();
284 services::Status allocatePartialResult() DAAL_C11_OVERRIDE
286 services::Status s = _partialResult->allocate<algorithmFPType>(&input, ¶meter, method);
287 _pres = _partialResult.get();
291 services::Status initializePartialResult() DAAL_C11_OVERRIDE
293 return services::Status();
298 _ac =
new __DAAL_ALGORITHM_CONTAINER(distributed, DistributedContainer, step1Local, algorithmFPType, method)(&_env);
301 _partialResult.reset(
new PartialResultType());
320 template<
typename algorithmFPType, Method method>
321 class DAAL_EXPORT Distributed<step2Master, algorithmFPType, method> :
public Training<distributed>
324 typedef algorithms::implicit_als::training::DistributedInput<step2Master> InputType;
325 typedef algorithms::implicit_als::Parameter ParameterType;
326 typedef algorithms::implicit_als::training::Result ResultType;
327 typedef algorithms::implicit_als::training::DistributedPartialResultStep2 PartialResultType;
329 DistributedInput<step2Master> input;
330 ParameterType parameter;
344 Distributed(
const Distributed<step2Master, algorithmFPType, method> &other) : input(other.input), parameter(other.parameter)
353 virtual int getMethod() const DAAL_C11_OVERRIDE {
return(
int)method; }
361 services::Status setPartialResult(
const DistributedPartialResultStep2Ptr& partialResult)
363 DAAL_CHECK(partialResult, services::ErrorNullPartialResult);
364 _partialResult = partialResult;
365 _pres = _partialResult.get();
366 return services::Status();
375 DistributedPartialResultStep2Ptr getPartialResult() {
return _partialResult; }
382 services::SharedPtr<Distributed<step2Master, algorithmFPType, method> > clone()
const
384 return services::SharedPtr<Distributed<step2Master, algorithmFPType, method> >(cloneImpl());
388 DistributedPartialResultStep2Ptr _partialResult;
390 virtual Distributed<step2Master, algorithmFPType, method> * cloneImpl() const DAAL_C11_OVERRIDE
392 return new Distributed<step2Master, algorithmFPType, method>(*this);
395 services::Status allocateResult() DAAL_C11_OVERRIDE
397 return services::Status();
400 services::Status allocatePartialResult() DAAL_C11_OVERRIDE
402 services::Status s = _partialResult->allocate<algorithmFPType>(&input, ¶meter, method);
403 _pres = _partialResult.get();
407 services::Status initializePartialResult() DAAL_C11_OVERRIDE
409 return services::Status();
414 _ac =
new __DAAL_ALGORITHM_CONTAINER(distributed, DistributedContainer, step2Master, algorithmFPType, method)(&_env);
417 _partialResult.reset(
new PartialResultType());
437 template<
typename algorithmFPType, Method method>
438 class DAAL_EXPORT Distributed<step3Local, algorithmFPType, method> :
public Training<distributed>
441 typedef algorithms::implicit_als::training::DistributedInput<step3Local> InputType;
442 typedef algorithms::implicit_als::Parameter ParameterType;
443 typedef algorithms::implicit_als::training::Result ResultType;
444 typedef algorithms::implicit_als::training::DistributedPartialResultStep3 PartialResultType;
446 DistributedInput<step3Local> input;
447 ParameterType parameter;
461 Distributed(
const Distributed<step3Local, algorithmFPType, method> &other) : input(other.input), parameter(other.parameter)
470 virtual int getMethod() const DAAL_C11_OVERRIDE {
return(
int)method; }
478 services::Status setPartialResult(
const DistributedPartialResultStep3Ptr& partialResult)
480 DAAL_CHECK(partialResult, services::ErrorNullPartialResult);
481 _partialResult = partialResult;
482 _pres = _partialResult.get();
483 return services::Status();
492 DistributedPartialResultStep3Ptr getPartialResult() {
return _partialResult; }
499 services::SharedPtr<Distributed<step3Local, algorithmFPType, method> > clone()
const
501 return services::SharedPtr<Distributed<step3Local, algorithmFPType, method> >(cloneImpl());
505 DistributedPartialResultStep3Ptr _partialResult;
507 virtual Distributed<step3Local, algorithmFPType, method> * cloneImpl() const DAAL_C11_OVERRIDE
509 return new Distributed<step3Local, algorithmFPType, method>(*this);
512 services::Status allocateResult() DAAL_C11_OVERRIDE
514 return services::Status();
517 services::Status allocatePartialResult() DAAL_C11_OVERRIDE
519 services::Status s = _partialResult->allocate<algorithmFPType>(&input, ¶meter, method);
520 _pres = _partialResult.get();
524 services::Status initializePartialResult() DAAL_C11_OVERRIDE
526 return services::Status();
531 _ac =
new __DAAL_ALGORITHM_CONTAINER(distributed, DistributedContainer, step3Local, algorithmFPType, method)(&_env);
534 _partialResult.reset(
new PartialResultType());
553 template<
typename algorithmFPType, Method method>
554 class DAAL_EXPORT Distributed<step4Local, algorithmFPType, method> :
public Training<distributed>
557 typedef algorithms::implicit_als::training::DistributedInput<step4Local> InputType;
558 typedef algorithms::implicit_als::Parameter ParameterType;
559 typedef algorithms::implicit_als::training::Result ResultType;
560 typedef algorithms::implicit_als::training::DistributedPartialResultStep4 PartialResultType;
562 DistributedInput<step4Local> input;
563 ParameterType parameter;
577 Distributed(
const Distributed<step4Local, algorithmFPType, method> &other) : input(other.input), parameter(other.parameter)
586 virtual int getMethod() const DAAL_C11_OVERRIDE {
return(
int)method; }
594 services::Status setPartialResult(
const DistributedPartialResultStep4Ptr& partialResult)
596 DAAL_CHECK(partialResult, services::ErrorNullPartialResult);
597 _partialResult = partialResult;
598 _pres = _partialResult.get();
599 return services::Status();
608 DistributedPartialResultStep4Ptr getPartialResult() {
return _partialResult; }
615 services::SharedPtr<Distributed<step4Local, algorithmFPType, method> > clone()
const
617 return services::SharedPtr<Distributed<step4Local, algorithmFPType, method> >(cloneImpl());
621 DistributedPartialResultStep4Ptr _partialResult;
623 virtual Distributed<step4Local, algorithmFPType, method> * cloneImpl() const DAAL_C11_OVERRIDE
625 return new Distributed<step4Local, algorithmFPType, method>(*this);
628 services::Status allocateResult() DAAL_C11_OVERRIDE
630 return services::Status();
633 services::Status allocatePartialResult() DAAL_C11_OVERRIDE
635 services::Status s = _partialResult->allocate<algorithmFPType>(&input, ¶meter, method);
636 _pres = _partialResult.get();
640 services::Status initializePartialResult() DAAL_C11_OVERRIDE
642 return services::Status();
647 _ac =
new __DAAL_ALGORITHM_CONTAINER(distributed, DistributedContainer, step4Local, algorithmFPType, method)(&_env);
650 _partialResult.reset(
new PartialResultType());
655 using interface1::DistributedContainer;
656 using interface1::Distributed;
daal::algorithms::implicit_als::training::interface1::Distributed< step1Local, algorithmFPType, method >::setPartialResult
services::Status setPartialResult(const DistributedPartialResultStep1Ptr &partialResult)
Definition: implicit_als_training_distributed.h:245
daal::algorithms::implicit_als::training::interface1::Distributed< step1Local, algorithmFPType, method >::input
DistributedInput< step1Local > input
Definition: implicit_als_training_distributed.h:213
daal::algorithms::implicit_als::training::interface1::Distributed< step4Local, algorithmFPType, method >::input
DistributedInput< step4Local > input
Definition: implicit_als_training_distributed.h:562
daal::algorithms::implicit_als::training::interface1::Distributed< step2Master, algorithmFPType, method >::Distributed
Distributed()
Definition: implicit_als_training_distributed.h:333
daal
Definition: algorithm_base_common.h:31
daal::algorithms::implicit_als::training::interface1::Distributed< step3Local, algorithmFPType, method >::setPartialResult
services::Status setPartialResult(const DistributedPartialResultStep3Ptr &partialResult)
Definition: implicit_als_training_distributed.h:478
daal::algorithms::implicit_als::training::interface1::Distributed< step1Local, algorithmFPType, method >::getMethod
virtual int getMethod() const DAAL_C11_OVERRIDE
Definition: implicit_als_training_distributed.h:237
daal::algorithms::implicit_als::training::interface1::Distributed< step4Local, algorithmFPType, method >::Distributed
Distributed(const Distributed< step4Local, algorithmFPType, method > &other)
Definition: implicit_als_training_distributed.h:577
daal::algorithms::implicit_als::training::interface1::Distributed< step4Local, algorithmFPType, method >::Distributed
Distributed()
Definition: implicit_als_training_distributed.h:566
daal::services::ErrorNullPartialResult
Definition: error_indexes.h:105
daal::algorithms::implicit_als::training::interface1::Distributed< step3Local, algorithmFPType, method >::clone
services::SharedPtr< Distributed< step3Local, algorithmFPType, method > > clone() const
Definition: implicit_als_training_distributed.h:499
daal::algorithms::implicit_als::training::interface1::Distributed< step3Local, algorithmFPType, method >::Distributed
Distributed()
Definition: implicit_als_training_distributed.h:450
daal::algorithms::implicit_als::training::interface1::Distributed< step2Master, algorithmFPType, method >::getMethod
virtual int getMethod() const DAAL_C11_OVERRIDE
Definition: implicit_als_training_distributed.h:353
daal::algorithms::implicit_als::training::interface1::Distributed< step3Local, algorithmFPType, method >::input
DistributedInput< step3Local > input
Definition: implicit_als_training_distributed.h:446
daal::algorithms::implicit_als::training::interface1::DistributedContainer
Class containing methods to compute the result of implicit ALS model-based training in the distribute...
Definition: implicit_als_training_distributed.h:51
daal::algorithms::implicit_als::training::interface1::Distributed< step4Local, algorithmFPType, method >::setPartialResult
services::Status setPartialResult(const DistributedPartialResultStep4Ptr &partialResult)
Definition: implicit_als_training_distributed.h:594
daal::algorithms::implicit_als::training::interface1::Distributed< step2Master, algorithmFPType, method >::input
DistributedInput< step2Master > input
Definition: implicit_als_training_distributed.h:329
daal::algorithms::implicit_als::training::interface1::Distributed< step3Local, algorithmFPType, method >::Distributed
Distributed(const Distributed< step3Local, algorithmFPType, method > &other)
Definition: implicit_als_training_distributed.h:461
daal::algorithms::implicit_als::training::interface1::Distributed< step2Master, algorithmFPType, method >::clone
services::SharedPtr< Distributed< step2Master, algorithmFPType, method > > clone() const
Definition: implicit_als_training_distributed.h:382
daal::algorithms::kmeans::init::interface1::Distributed
class DAAL_EXPORT Distributed
Computes initial clusters for the K-Means algorithm in the distributed processing mode...
Definition: kmeans_init_distributed.h:255
daal::distributed
Definition: daal_defines.h:107
daal::algorithms::implicit_als::training::interface1::Distributed< step1Local, algorithmFPType, method >
Trains the implicit ALS model in the first step of the distributed processing mode.
Definition: implicit_als_training_distributed.h:205
daal::algorithms::implicit_als::training::interface1::Distributed< step3Local, algorithmFPType, method >::getMethod
virtual int getMethod() const DAAL_C11_OVERRIDE
Definition: implicit_als_training_distributed.h:470
daal::algorithms::implicit_als::training::interface1::Distributed< step1Local, algorithmFPType, method >::Distributed
Distributed()
Definition: implicit_als_training_distributed.h:217
daal::algorithms::implicit_als::training::interface1::Distributed
Trains the implicit ALS model in the distributed processing mode.
Definition: implicit_als_training_distributed.h:187
daal::algorithms::implicit_als::training::interface1::Distributed< step1Local, algorithmFPType, method >::getPartialResult
DistributedPartialResultStep1Ptr getPartialResult()
Definition: implicit_als_training_distributed.h:259
daal::algorithms::implicit_als::training::interface1::Distributed< step4Local, algorithmFPType, method >
Trains the implicit ALS model in the fourth step of the distributed processing mode.
Definition: implicit_als_training_distributed.h:554
daal::algorithms::implicit_als::training::interface1::Distributed< step2Master, algorithmFPType, method >::Distributed
Distributed(const Distributed< step2Master, algorithmFPType, method > &other)
Definition: implicit_als_training_distributed.h:344
daal::algorithms::implicit_als::training::interface1::Distributed< step1Local, algorithmFPType, method >::clone
services::SharedPtr< Distributed< step1Local, algorithmFPType, method > > clone() const
Definition: implicit_als_training_distributed.h:266
daal::algorithms::implicit_als::training::interface1::Distributed< step2Master, algorithmFPType, method >
Trains the implicit ALS model in the second step of the distributed processing mode.
Definition: implicit_als_training_distributed.h:321
daal::step4Local
Definition: daal_defines.h:120
daal::algorithms::implicit_als::training::interface1::Distributed< step2Master, algorithmFPType, method >::parameter
ParameterType parameter
Definition: implicit_als_training_distributed.h:330
daal::algorithms::implicit_als::training::interface1::Distributed< step4Local, algorithmFPType, method >::clone
services::SharedPtr< Distributed< step4Local, algorithmFPType, method > > clone() const
Definition: implicit_als_training_distributed.h:615
daal::algorithms::implicit_als::training::interface1::Distributed< step3Local, algorithmFPType, method >
Trains the implicit ALS model in the third step of the distributed processing mode.
Definition: implicit_als_training_distributed.h:438
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::algorithms::implicit_als::training::interface1::Distributed< step3Local, algorithmFPType, method >::getPartialResult
DistributedPartialResultStep3Ptr getPartialResult()
Definition: implicit_als_training_distributed.h:492
daal::step1Local
Definition: daal_defines.h:117
daal::algorithms::implicit_als::training::interface1::Distributed< step4Local, algorithmFPType, method >::getPartialResult
DistributedPartialResultStep4Ptr getPartialResult()
Definition: implicit_als_training_distributed.h:608
daal::step2Master
Definition: daal_defines.h:118
daal::algorithms::implicit_als::training::interface1::Distributed< step1Local, algorithmFPType, method >::parameter
ParameterType parameter
Definition: implicit_als_training_distributed.h:214
daal::algorithms::implicit_als::training::interface1::Distributed< step1Local, algorithmFPType, method >::Distributed
Distributed(const Distributed< step1Local, algorithmFPType, method > &other)
Definition: implicit_als_training_distributed.h:228
daal::algorithms::implicit_als::training::interface1::Distributed< step3Local, algorithmFPType, method >::parameter
ParameterType parameter
Definition: implicit_als_training_distributed.h:447
daal::step3Local
Definition: daal_defines.h:119
daal::algorithms::implicit_als::training::interface1::Distributed< step2Master, algorithmFPType, method >::getPartialResult
DistributedPartialResultStep2Ptr getPartialResult()
Definition: implicit_als_training_distributed.h:375
daal::algorithms::implicit_als::training::interface1::Distributed< step2Master, algorithmFPType, method >::setPartialResult
services::Status setPartialResult(const DistributedPartialResultStep2Ptr &partialResult)
Definition: implicit_als_training_distributed.h:361
daal::algorithms::TrainingContainerIface
Abstract interface class that provides virtual methods to access and run implementations of the model...
Definition: training.h:50
daal::algorithms::Training
Provides methods to train models that depend on the data provided. For example, these methods enable ...
Definition: training.h:60
daal::algorithms::implicit_als::training::interface1::Distributed< step4Local, algorithmFPType, method >::getMethod
virtual int getMethod() const DAAL_C11_OVERRIDE
Definition: implicit_als_training_distributed.h:586
daal::algorithms::implicit_als::training::interface1::Distributed< step4Local, algorithmFPType, method >::parameter
ParameterType parameter
Definition: implicit_als_training_distributed.h:563