49 #ifndef __IMPLICIT_ALS_TRAINING_DISTRIBUTED_H__
50 #define __IMPLICIT_ALS_TRAINING_DISTRIBUTED_H__
52 #include "algorithms/algorithm.h"
53 #include "algorithms/implicit_als/implicit_als_training_types.h"
59 namespace implicit_als
76 template<ComputeStep step,
typename algorithmFPType, Method method, CpuType cpu>
77 class DAAL_EXPORT DistributedContainer
84 template<
typename algorithmFPType, Method method, CpuType cpu>
85 class DAAL_EXPORT DistributedContainer<step1Local, algorithmFPType, method, cpu> :
public
86 TrainingContainerIface<distributed>
94 DistributedContainer(daal::services::Environment::env *daalEnv);
96 ~DistributedContainer();
102 services::Status compute() DAAL_C11_OVERRIDE;
107 services::Status finalizeCompute() DAAL_C11_OVERRIDE;
114 template<
typename algorithmFPType, Method method, CpuType cpu>
115 class DAAL_EXPORT DistributedContainer<step2Master, algorithmFPType, method, cpu> :
public
116 TrainingContainerIface<distributed>
124 DistributedContainer(daal::services::Environment::env *daalEnv);
126 ~DistributedContainer();
132 services::Status compute() DAAL_C11_OVERRIDE;
137 services::Status finalizeCompute() DAAL_C11_OVERRIDE;
144 template<
typename algorithmFPType, Method method, CpuType cpu>
145 class DAAL_EXPORT DistributedContainer<step3Local, algorithmFPType, method, cpu> :
public
146 TrainingContainerIface<distributed>
154 DistributedContainer(daal::services::Environment::env *daalEnv);
156 ~DistributedContainer();
162 services::Status compute() DAAL_C11_OVERRIDE;
167 services::Status finalizeCompute() DAAL_C11_OVERRIDE;
174 template<
typename algorithmFPType, Method method, CpuType cpu>
175 class DAAL_EXPORT DistributedContainer<step4Local, algorithmFPType, method, cpu> :
public
176 TrainingContainerIface<distributed>
184 DistributedContainer(daal::services::Environment::env *daalEnv);
186 ~DistributedContainer();
192 services::Status compute() DAAL_C11_OVERRIDE;
197 services::Status finalizeCompute() DAAL_C11_OVERRIDE;
212 template<ComputeStep step,
typename algorithmFPType = DAAL_ALGORITHM_FP_TYPE, Method method = fastCSR>
213 class DAAL_EXPORT Distributed :
public Training<distributed> {};
230 template<
typename algorithmFPType, Method method>
231 class DAAL_EXPORT Distributed<step1Local, algorithmFPType, method> :
public Training<distributed>
234 DistributedInput<step1Local> input;
249 Distributed(
const Distributed<step1Local, algorithmFPType, method> &other) : input(other.input), parameter(other.parameter)
258 virtual int getMethod() const DAAL_C11_OVERRIDE {
return(
int)method; }
266 services::Status setPartialResult(
const DistributedPartialResultStep1Ptr& partialResult)
268 DAAL_CHECK(partialResult, services::ErrorNullPartialResult);
269 _partialResult = partialResult;
270 _pres = _partialResult.get();
271 return services::Status();
280 DistributedPartialResultStep1Ptr getPartialResult() {
return _partialResult; }
287 services::SharedPtr<Distributed<step1Local, algorithmFPType, method> > clone()
const
289 return services::SharedPtr<Distributed<step1Local, algorithmFPType, method> >(cloneImpl());
293 DistributedPartialResultStep1Ptr _partialResult;
295 virtual Distributed<step1Local, algorithmFPType, method> * cloneImpl() const DAAL_C11_OVERRIDE
297 return new Distributed<step1Local, algorithmFPType, method>(*this);
300 services::Status allocateResult() DAAL_C11_OVERRIDE
302 return services::Status();
305 services::Status allocatePartialResult() DAAL_C11_OVERRIDE
307 services::Status s = _partialResult->allocate<algorithmFPType>(&input, ¶meter, method);
308 _pres = _partialResult.get();
312 services::Status initializePartialResult() DAAL_C11_OVERRIDE
314 return services::Status();
319 _ac =
new __DAAL_ALGORITHM_CONTAINER(distributed, DistributedContainer, step1Local, algorithmFPType, method)(&_env);
322 _partialResult.reset(
new DistributedPartialResultStep1());
341 template<
typename algorithmFPType, Method method>
342 class DAAL_EXPORT Distributed<step2Master, algorithmFPType, method> :
public Training<distributed>
345 DistributedInput<step2Master> input;
360 Distributed(
const Distributed<step2Master, algorithmFPType, method> &other) : input(other.input), parameter(other.parameter)
369 virtual int getMethod() const DAAL_C11_OVERRIDE {
return(
int)method; }
377 services::Status setPartialResult(
const DistributedPartialResultStep2Ptr& partialResult)
379 DAAL_CHECK(partialResult, services::ErrorNullPartialResult);
380 _partialResult = partialResult;
381 _pres = _partialResult.get();
382 return services::Status();
391 DistributedPartialResultStep2Ptr getPartialResult() {
return _partialResult; }
398 services::SharedPtr<Distributed<step2Master, algorithmFPType, method> > clone()
const
400 return services::SharedPtr<Distributed<step2Master, algorithmFPType, method> >(cloneImpl());
404 DistributedPartialResultStep2Ptr _partialResult;
406 virtual Distributed<step2Master, algorithmFPType, method> * cloneImpl() const DAAL_C11_OVERRIDE
408 return new Distributed<step2Master, algorithmFPType, method>(*this);
411 services::Status allocateResult() DAAL_C11_OVERRIDE
413 return services::Status();
416 services::Status allocatePartialResult() DAAL_C11_OVERRIDE
418 services::Status s = _partialResult->allocate<algorithmFPType>(&input, ¶meter, method);
419 _pres = _partialResult.get();
423 services::Status initializePartialResult() DAAL_C11_OVERRIDE
425 return services::Status();
430 _ac =
new __DAAL_ALGORITHM_CONTAINER(distributed, DistributedContainer, step2Master, algorithmFPType, method)(&_env);
433 _partialResult.reset(
new DistributedPartialResultStep2());
453 template<
typename algorithmFPType, Method method>
454 class DAAL_EXPORT Distributed<step3Local, algorithmFPType, method> :
public Training<distributed>
457 DistributedInput<step3Local> input;
472 Distributed(
const Distributed<step3Local, algorithmFPType, method> &other) : input(other.input), parameter(other.parameter)
481 virtual int getMethod() const DAAL_C11_OVERRIDE {
return(
int)method; }
489 services::Status setPartialResult(
const DistributedPartialResultStep3Ptr& partialResult)
491 DAAL_CHECK(partialResult, services::ErrorNullPartialResult);
492 _partialResult = partialResult;
493 _pres = _partialResult.get();
494 return services::Status();
503 DistributedPartialResultStep3Ptr getPartialResult() {
return _partialResult; }
510 services::SharedPtr<Distributed<step3Local, algorithmFPType, method> > clone()
const
512 return services::SharedPtr<Distributed<step3Local, algorithmFPType, method> >(cloneImpl());
516 DistributedPartialResultStep3Ptr _partialResult;
518 virtual Distributed<step3Local, algorithmFPType, method> * cloneImpl() const DAAL_C11_OVERRIDE
520 return new Distributed<step3Local, algorithmFPType, method>(*this);
523 services::Status allocateResult() DAAL_C11_OVERRIDE
525 return services::Status();
528 services::Status allocatePartialResult() DAAL_C11_OVERRIDE
530 services::Status s = _partialResult->allocate<algorithmFPType>(&input, ¶meter, method);
531 _pres = _partialResult.get();
535 services::Status initializePartialResult() DAAL_C11_OVERRIDE
537 return services::Status();
542 _ac =
new __DAAL_ALGORITHM_CONTAINER(distributed, DistributedContainer, step3Local, algorithmFPType, method)(&_env);
545 _partialResult.reset(
new DistributedPartialResultStep3());
564 template<
typename algorithmFPType, Method method>
565 class DAAL_EXPORT Distributed<step4Local, algorithmFPType, method> :
public Training<distributed>
568 DistributedInput<step4Local> input;
583 Distributed(
const Distributed<step4Local, algorithmFPType, method> &other) : input(other.input), parameter(other.parameter)
592 virtual int getMethod() const DAAL_C11_OVERRIDE {
return(
int)method; }
600 services::Status setPartialResult(
const DistributedPartialResultStep4Ptr& partialResult)
602 DAAL_CHECK(partialResult, services::ErrorNullPartialResult);
603 _partialResult = partialResult;
604 _pres = _partialResult.get();
605 return services::Status();
614 DistributedPartialResultStep4Ptr getPartialResult() {
return _partialResult; }
621 services::SharedPtr<Distributed<step4Local, algorithmFPType, method> > clone()
const
623 return services::SharedPtr<Distributed<step4Local, algorithmFPType, method> >(cloneImpl());
627 DistributedPartialResultStep4Ptr _partialResult;
629 virtual Distributed<step4Local, algorithmFPType, method> * cloneImpl() const DAAL_C11_OVERRIDE
631 return new Distributed<step4Local, algorithmFPType, method>(*this);
634 services::Status allocateResult() DAAL_C11_OVERRIDE
636 return services::Status();
639 services::Status allocatePartialResult() DAAL_C11_OVERRIDE
641 services::Status s = _partialResult->allocate<algorithmFPType>(&input, ¶meter, method);
642 _pres = _partialResult.get();
646 services::Status initializePartialResult() DAAL_C11_OVERRIDE
648 return services::Status();
653 _ac =
new __DAAL_ALGORITHM_CONTAINER(distributed, DistributedContainer, step4Local, algorithmFPType, method)(&_env);
656 _partialResult.reset(
new DistributedPartialResultStep4());
661 using interface1::DistributedContainer;
662 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:266
daal::algorithms::implicit_als::training::interface1::Distributed< step1Local, algorithmFPType, method >::input
DistributedInput< step1Local > input
Definition: implicit_als_training_distributed.h:234
daal::algorithms::implicit_als::training::interface1::Distributed< step4Local, algorithmFPType, method >::input
DistributedInput< step4Local > input
Definition: implicit_als_training_distributed.h:568
daal::algorithms::implicit_als::training::interface1::Distributed< step2Master, algorithmFPType, method >::Distributed
Distributed()
Definition: implicit_als_training_distributed.h:349
daal
Definition: algorithm_base_common.h:57
daal::algorithms::implicit_als::training::interface1::Distributed< step3Local, algorithmFPType, method >::setPartialResult
services::Status setPartialResult(const DistributedPartialResultStep3Ptr &partialResult)
Definition: implicit_als_training_distributed.h:489
daal::algorithms::implicit_als::training::interface1::Distributed< step1Local, algorithmFPType, method >::getMethod
virtual int getMethod() const DAAL_C11_OVERRIDE
Definition: implicit_als_training_distributed.h:258
daal::algorithms::implicit_als::training::interface1::Distributed< step4Local, algorithmFPType, method >::Distributed
Distributed(const Distributed< step4Local, algorithmFPType, method > &other)
Definition: implicit_als_training_distributed.h:583
daal::algorithms::implicit_als::training::interface1::Distributed< step4Local, algorithmFPType, method >::Distributed
Distributed()
Definition: implicit_als_training_distributed.h:572
daal::services::ErrorNullPartialResult
Definition: error_indexes.h:131
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:510
daal::algorithms::implicit_als::training::interface1::Distributed< step3Local, algorithmFPType, method >::Distributed
Distributed()
Definition: implicit_als_training_distributed.h:461
daal::algorithms::implicit_als::training::interface1::Distributed< step2Master, algorithmFPType, method >::getMethod
virtual int getMethod() const DAAL_C11_OVERRIDE
Definition: implicit_als_training_distributed.h:369
daal::algorithms::implicit_als::training::interface1::Distributed< step3Local, algorithmFPType, method >::input
DistributedInput< step3Local > input
Definition: implicit_als_training_distributed.h:457
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:77
daal::algorithms::implicit_als::training::interface1::Distributed< step4Local, algorithmFPType, method >::setPartialResult
services::Status setPartialResult(const DistributedPartialResultStep4Ptr &partialResult)
Definition: implicit_als_training_distributed.h:600
daal::algorithms::implicit_als::training::interface1::Distributed< step2Master, algorithmFPType, method >::input
DistributedInput< step2Master > input
Definition: implicit_als_training_distributed.h:345
daal::algorithms::implicit_als::training::interface1::Distributed< step3Local, algorithmFPType, method >::Distributed
Distributed(const Distributed< step3Local, algorithmFPType, method > &other)
Definition: implicit_als_training_distributed.h:472
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:398
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:281
daal::distributed
Definition: daal_defines.h:132
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:231
daal::algorithms::implicit_als::training::interface1::Distributed< step3Local, algorithmFPType, method >::getMethod
virtual int getMethod() const DAAL_C11_OVERRIDE
Definition: implicit_als_training_distributed.h:481
daal::algorithms::implicit_als::training::interface1::Distributed< step1Local, algorithmFPType, method >::Distributed
Distributed()
Definition: implicit_als_training_distributed.h:238
daal::algorithms::implicit_als::training::interface1::Distributed< step1Local, algorithmFPType, method >::parameter
Parameter parameter
Definition: implicit_als_training_distributed.h:235
daal::algorithms::implicit_als::training::interface1::Distributed
Trains the implicit ALS model in the distributed processing mode.
Definition: implicit_als_training_distributed.h:213
daal::algorithms::implicit_als::training::interface1::Distributed< step1Local, algorithmFPType, method >::getPartialResult
DistributedPartialResultStep1Ptr getPartialResult()
Definition: implicit_als_training_distributed.h:280
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:565
daal::algorithms::implicit_als::training::interface1::Distributed< step2Master, algorithmFPType, method >::Distributed
Distributed(const Distributed< step2Master, algorithmFPType, method > &other)
Definition: implicit_als_training_distributed.h:360
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:287
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:342
daal::step4Local
Definition: daal_defines.h:145
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:621
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:454
daal::algorithms::implicit_als::training::interface1::Distributed< step3Local, algorithmFPType, method >::parameter
Parameter parameter
Definition: implicit_als_training_distributed.h:458
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:81
daal::algorithms::implicit_als::training::interface1::Distributed< step3Local, algorithmFPType, method >::getPartialResult
DistributedPartialResultStep3Ptr getPartialResult()
Definition: implicit_als_training_distributed.h:503
daal::step1Local
Definition: daal_defines.h:142
daal::algorithms::implicit_als::training::interface1::Distributed< step4Local, algorithmFPType, method >::getPartialResult
DistributedPartialResultStep4Ptr getPartialResult()
Definition: implicit_als_training_distributed.h:614
daal::step2Master
Definition: daal_defines.h:143
daal::algorithms::implicit_als::training::interface1::Distributed< step1Local, algorithmFPType, method >::Distributed
Distributed(const Distributed< step1Local, algorithmFPType, method > &other)
Definition: implicit_als_training_distributed.h:249
daal::algorithms::implicit_als::training::interface1::Distributed< step4Local, algorithmFPType, method >::parameter
Parameter parameter
Definition: implicit_als_training_distributed.h:569
daal::step3Local
Definition: daal_defines.h:144
daal::algorithms::implicit_als::training::interface1::Distributed< step2Master, algorithmFPType, method >::getPartialResult
DistributedPartialResultStep2Ptr getPartialResult()
Definition: implicit_als_training_distributed.h:391
daal::algorithms::implicit_als::training::interface1::Distributed< step2Master, algorithmFPType, method >::setPartialResult
services::Status setPartialResult(const DistributedPartialResultStep2Ptr &partialResult)
Definition: implicit_als_training_distributed.h:377
daal::algorithms::TrainingContainerIface
Abstract interface class that provides virtual methods to access and run implementations of the model...
Definition: training.h:76
daal::algorithms::implicit_als::training::interface1::Distributed< step2Master, algorithmFPType, method >::parameter
Parameter parameter
Definition: implicit_als_training_distributed.h:346
daal::algorithms::Training
Provides methods to train models that depend on the data provided. For example, these methods enable ...
Definition: training.h:86
daal::algorithms::implicit_als::training::interface1::Distributed< step4Local, algorithmFPType, method >::getMethod
virtual int getMethod() const DAAL_C11_OVERRIDE
Definition: implicit_als_training_distributed.h:592