22 #ifndef __IMPLICIT_ALS_TRAINING_TYPES_H__
23 #define __IMPLICIT_ALS_TRAINING_TYPES_H__
25 #include "algorithms/implicit_als/implicit_als_model.h"
26 #include "data_management/data/csr_numeric_table.h"
35 namespace implicit_als
63 enum NumericTableInputId
66 lastNumericTableInputId = data
75 inputModel = lastNumericTableInputId + 1,
76 lastModelInputId = inputModel
83 enum PartialModelInputId
87 lastPartialModelInputId = partialModel
97 inputOfStep2FromStep1,
99 lastMasterInputId = inputOfStep2FromStep1
107 enum DistributedPartialResultStep1Id
109 outputOfStep1ForStep2,
111 lastDistributedPartialResultStep1Id = outputOfStep1ForStep2
119 enum DistributedPartialResultStep2Id
121 outputOfStep2ForStep4 ,
123 lastDistributedPartialResultStep2Id = outputOfStep2ForStep4
131 enum Step3LocalCollectionInputId
133 partialModelBlocksToNode = lastDistributedPartialResultStep2Id + 1,
136 inputOfStep3FromInit = partialModelBlocksToNode,
138 lastStep3LocalCollectionInputId = inputOfStep3FromInit
146 enum Step3LocalNumericTableInputId
148 offset = lastStep3LocalCollectionInputId + 1,
150 lastStep3LocalNumericTableInputId = offset
158 enum DistributedPartialResultStep3Id
160 outputOfStep3ForStep4,
162 lastDistributedPartialResultStep3Id = outputOfStep3ForStep4
170 enum Step4LocalPartialModelsInputId
175 lastStep4LocalPartialModelsInputId = partialModels
183 enum Step4LocalNumericTableInputId
185 partialData = lastStep4LocalPartialModelsInputId + 1,
186 inputOfStep4FromStep2,
188 lastStep4LocalNumericTableInputId = inputOfStep4FromStep2
196 enum DistributedPartialResultStep4Id
198 outputOfStep4ForStep1,
200 outputOfStep4ForStep3 = outputOfStep4ForStep1,
202 outputOfStep4 = outputOfStep4ForStep3,
204 lastDistributedPartialResultStep4Id = outputOfStep4
226 class DAAL_EXPORT Input :
public daal::algorithms::Input
230 Input(
const Input& other) : daal::algorithms::Input(other){}
239 data_management::NumericTablePtr
get(NumericTableInputId id)
const;
246 ModelPtr
get(ModelInputId id)
const;
253 void set(NumericTableInputId
id,
const data_management::NumericTablePtr &ptr);
260 void set(ModelInputId
id,
const ModelPtr &ptr);
266 size_t getNumberOfUsers()
const;
272 size_t getNumberOfItems()
const;
279 services::Status check(
const daal::algorithms::Parameter *parameter,
int method)
const DAAL_C11_OVERRIDE;
286 template<ComputeStep step>
287 class DistributedInput
296 class DAAL_EXPORT DistributedInput<step1Local> :
public daal::algorithms::Input
303 DistributedInput(
const DistributedInput& other) : daal::algorithms::Input(other){}
305 virtual ~DistributedInput() {}
312 PartialModelPtr
get(PartialModelInputId id)
const;
319 void set(PartialModelInputId
id,
const PartialModelPtr &ptr);
327 services::Status check(
const daal::algorithms::Parameter *parameter,
int method)
const DAAL_C11_OVERRIDE;
335 class DAAL_EXPORT DistributedPartialResultStep1 :
public daal::algorithms::PartialResult
338 DECLARE_SERIALIZABLE_CAST(DistributedPartialResultStep1);
340 DistributedPartialResultStep1();
342 virtual ~DistributedPartialResultStep1() {}
349 data_management::NumericTablePtr
get(DistributedPartialResultStep1Id id)
const;
356 void set(DistributedPartialResultStep1Id
id,
const data_management::NumericTablePtr &ptr);
364 template <
typename algorithmFPType>
365 DAAL_EXPORT services::Status allocate(
const daal::algorithms::Input *input,
const daal::algorithms::Parameter *parameter,
const int method);
373 services::Status check(
const daal::algorithms::Input *input,
const daal::algorithms::Parameter *parameter,
374 int method)
const DAAL_C11_OVERRIDE;
378 template<
typename Archive,
bool onDeserialize>
379 services::Status serialImpl(Archive *arch)
381 return daal::algorithms::PartialResult::serialImpl<Archive, onDeserialize>(arch);
384 typedef services::SharedPtr<DistributedPartialResultStep1> DistributedPartialResultStep1Ptr;
392 class DAAL_EXPORT DistributedInput<step2Master> :
public daal::algorithms::Input
399 DistributedInput(
const DistributedInput& other) : daal::algorithms::Input(other){}
401 virtual ~DistributedInput() {}
408 data_management::DataCollectionPtr
get(MasterInputId id)
const;
415 void set(MasterInputId
id,
const data_management::DataCollectionPtr &ptr);
423 void add(MasterInputId
id,
const DistributedPartialResultStep1Ptr &partialResult);
431 services::Status check(
const daal::algorithms::Parameter *parameter,
int method)
const DAAL_C11_OVERRIDE;
439 class DAAL_EXPORT DistributedPartialResultStep2 :
public daal::algorithms::PartialResult
442 DECLARE_SERIALIZABLE_CAST(DistributedPartialResultStep2);
444 DistributedPartialResultStep2();
446 virtual ~DistributedPartialResultStep2() {}
453 data_management::NumericTablePtr
get(DistributedPartialResultStep2Id id)
const;
460 void set(DistributedPartialResultStep2Id
id,
const data_management::NumericTablePtr &ptr);
468 template <
typename algorithmFPType>
469 DAAL_EXPORT services::Status allocate(
const daal::algorithms::Input *input,
const daal::algorithms::Parameter *parameter,
const int method);
477 services::Status check(
const daal::algorithms::Input *input,
const daal::algorithms::Parameter *parameter,
478 int method)
const DAAL_C11_OVERRIDE;
482 template<
typename Archive,
bool onDeserialize>
483 services::Status serialImpl(Archive *arch)
485 return daal::algorithms::PartialResult::serialImpl<Archive, onDeserialize>(arch);
488 typedef services::SharedPtr<DistributedPartialResultStep2> DistributedPartialResultStep2Ptr;
496 class DAAL_EXPORT DistributedInput<step3Local> :
public daal::algorithms::Input
503 DistributedInput(
const DistributedInput& other) : daal::algorithms::Input(other){}
505 virtual ~DistributedInput() {}
512 PartialModelPtr
get(PartialModelInputId id)
const;
519 data_management::KeyValueDataCollectionPtr
get(Step3LocalCollectionInputId id)
const;
526 data_management::NumericTablePtr
get(Step3LocalNumericTableInputId id)
const;
533 void set(PartialModelInputId
id,
const PartialModelPtr &ptr);
540 void set(Step3LocalCollectionInputId
id,
const data_management::KeyValueDataCollectionPtr &ptr);
547 void set(Step3LocalNumericTableInputId
id,
const data_management::NumericTablePtr &ptr);
553 size_t getNumberOfBlocks()
const;
559 size_t getOffset()
const;
566 data_management::NumericTablePtr getOutBlockIndices(
size_t key)
const;
574 services::Status check(
const daal::algorithms::Parameter *parameter,
int method)
const DAAL_C11_OVERRIDE;
582 class DAAL_EXPORT DistributedPartialResultStep3 :
public daal::algorithms::PartialResult
585 DECLARE_SERIALIZABLE_CAST(DistributedPartialResultStep3);
587 DistributedPartialResultStep3();
589 virtual ~DistributedPartialResultStep3() {}
597 template <
typename algorithmFPType>
598 DAAL_EXPORT services::Status allocate(
const daal::algorithms::Input *input,
const daal::algorithms::Parameter *parameter,
const int method);
606 data_management::KeyValueDataCollectionPtr
get(DistributedPartialResultStep3Id id)
const;
616 PartialModelPtr
get(DistributedPartialResultStep3Id id,
size_t key)
const;
623 void set(DistributedPartialResultStep3Id
id,
const data_management::KeyValueDataCollectionPtr &ptr);
631 services::Status check(
const daal::algorithms::Input *input,
const daal::algorithms::Parameter *parameter,
632 int method)
const DAAL_C11_OVERRIDE;
636 template<
typename Archive,
bool onDeserialize>
637 services::Status serialImpl(Archive *arch)
639 return daal::algorithms::PartialResult::serialImpl<Archive, onDeserialize>(arch);
642 typedef services::SharedPtr<DistributedPartialResultStep3> DistributedPartialResultStep3Ptr;
650 class DAAL_EXPORT DistributedInput<step4Local> :
public daal::algorithms::Input
657 DistributedInput(
const DistributedInput& other) : daal::algorithms::Input(other){}
659 virtual ~DistributedInput() {}
669 data_management::KeyValueDataCollectionPtr
get(Step4LocalPartialModelsInputId id)
const;
676 data_management::NumericTablePtr
get(Step4LocalNumericTableInputId id)
const;
683 void set(Step4LocalPartialModelsInputId
id,
const data_management::KeyValueDataCollectionPtr &ptr);
690 void set(Step4LocalNumericTableInputId
id,
const data_management::NumericTablePtr &ptr);
696 size_t getNumberOfRows()
const;
704 services::Status check(
const daal::algorithms::Parameter *parameter,
int method)
const DAAL_C11_OVERRIDE;
713 class DAAL_EXPORT DistributedPartialResultStep4 :
public daal::algorithms::PartialResult
716 DECLARE_SERIALIZABLE_CAST(DistributedPartialResultStep4);
718 DistributedPartialResultStep4();
720 virtual ~DistributedPartialResultStep4() {}
728 template <
typename algorithmFPType>
729 DAAL_EXPORT services::Status allocate(
const daal::algorithms::Input *input,
const daal::algorithms::Parameter *parameter,
const int method);
736 PartialModelPtr
get(DistributedPartialResultStep4Id id)
const;
743 void set(DistributedPartialResultStep4Id
id,
const PartialModelPtr &ptr);
751 services::Status check(
const daal::algorithms::Input *input,
const daal::algorithms::Parameter *parameter,
752 int method)
const DAAL_C11_OVERRIDE;
756 template<
typename Archive,
bool onDeserialize>
757 services::Status serialImpl(Archive *arch)
759 return daal::algorithms::PartialResult::serialImpl<Archive, onDeserialize>(arch);
762 typedef services::SharedPtr<DistributedPartialResultStep4> DistributedPartialResultStep4Ptr;
769 class DAAL_EXPORT Result :
public daal::algorithms::Result
772 DECLARE_SERIALIZABLE_CAST(Result);
782 template <
typename algorithmFPType>
783 DAAL_EXPORT services::Status allocate(
const daal::algorithms::Input *input,
const daal::algorithms::Parameter *parameter,
const int method);
790 daal::algorithms::implicit_als::ModelPtr
get(ResultId id)
const;
797 void set(ResultId
id,
const daal::algorithms::implicit_als::ModelPtr &ptr);
805 services::Status check(
const daal::algorithms::Input *input,
const daal::algorithms::Parameter *parameter,
806 int method)
const DAAL_C11_OVERRIDE;
810 template<
typename Archive,
bool onDeserialize>
811 services::Status serialImpl(Archive *arch)
813 return daal::algorithms::Result::serialImpl<Archive, onDeserialize>(arch);
816 typedef services::SharedPtr<Result> ResultPtr;
818 using interface1::Input;
819 using interface1::DistributedInput;
820 using interface1::DistributedPartialResultStep1;
821 using interface1::DistributedPartialResultStep1Ptr;
822 using interface1::DistributedPartialResultStep2;
823 using interface1::DistributedPartialResultStep2Ptr;
824 using interface1::DistributedPartialResultStep3;
825 using interface1::DistributedPartialResultStep3Ptr;
826 using interface1::DistributedPartialResultStep4;
827 using interface1::DistributedPartialResultStep4Ptr;
828 using interface1::Result;
829 using interface1::ResultPtr;
daal::algorithms::implicit_als::training::data
Definition: implicit_als_training_types.h:65
daal::algorithms::implicit_als::training::inputOfStep3FromInit
Definition: implicit_als_training_types.h:136
daal::algorithms::implicit_als::training::outputOfStep3ForStep4
Definition: implicit_als_training_types.h:160
daal
Definition: algorithm_base_common.h:31
daal::algorithms::implicit_als::training::Step4LocalPartialModelsInputId
Step4LocalPartialModelsInputId
Definition: implicit_als_training_types.h:170
daal::algorithms::implicit_als::training::ModelInputId
ModelInputId
Definition: implicit_als_training_types.h:73
daal::algorithms::implicit_als::training::interface1::DistributedPartialResultStep4
Provides methods to access partial results obtained with the compute() method of the implicit ALS alg...
Definition: implicit_als_training_types.h:713
daal::algorithms::implicit_als::training::Method
Method
Definition: implicit_als_training_types.h:53
daal::algorithms::implicit_als::training::defaultDense
Definition: implicit_als_training_types.h:55
daal::algorithms::implicit_als::training::Step3LocalCollectionInputId
Step3LocalCollectionInputId
Definition: implicit_als_training_types.h:131
daal::algorithms::implicit_als::training::NumericTableInputId
NumericTableInputId
Definition: implicit_als_training_types.h:63
daal::algorithms::implicit_als::training::Step3LocalNumericTableInputId
Step3LocalNumericTableInputId
Definition: implicit_als_training_types.h:146
daal::algorithms::implicit_als::training::model
Definition: implicit_als_training_types.h:213
daal::algorithms::implicit_als::training::inputOfStep4FromStep2
Definition: implicit_als_training_types.h:186
daal::algorithms::implicit_als::training::DistributedPartialResultStep1Id
DistributedPartialResultStep1Id
Definition: implicit_als_training_types.h:107
daal::algorithms::implicit_als::training::DistributedPartialResultStep2Id
DistributedPartialResultStep2Id
Definition: implicit_als_training_types.h:119
daal::algorithms::implicit_als::training::fastCSR
Definition: implicit_als_training_types.h:56
daal::algorithms::implicit_als::training::interface1::DistributedPartialResultStep1
Provides methods to access partial results obtained with the compute() method of the implicit ALS alg...
Definition: implicit_als_training_types.h:335
daal::algorithms::implicit_als::training::outputOfStep4ForStep3
Definition: implicit_als_training_types.h:200
daal::algorithms::implicit_als::training::inputModel
Definition: implicit_als_training_types.h:75
daal::algorithms::implicit_als::training::MasterInputId
MasterInputId
Definition: implicit_als_training_types.h:95
daal::algorithms::implicit_als::training::DistributedPartialResultStep3Id
DistributedPartialResultStep3Id
Definition: implicit_als_training_types.h:158
daal::algorithms::implicit_als::training::partialData
Definition: implicit_als_training_types.h:185
daal::algorithms::implicit_als::training::Step4LocalNumericTableInputId
Step4LocalNumericTableInputId
Definition: implicit_als_training_types.h:183
daal::step4Local
Definition: daal_defines.h:120
daal::algorithms::implicit_als::training::outputOfStep4
Definition: implicit_als_training_types.h:202
daal::algorithms::implicit_als::training::inputOfStep2FromStep1
Definition: implicit_als_training_types.h:97
daal::algorithms::implicit_als::training::interface1::DistributedPartialResultStep3
Provides methods to access partial results obtained with the compute() method of the implicit ALS alg...
Definition: implicit_als_training_types.h:582
daal::algorithms::implicit_als::training::partialModels
Definition: implicit_als_training_types.h:172
daal::algorithms::implicit_als::training::ResultId
ResultId
Available identifiers of the results of the implicit ALS training algorithm.
Definition: implicit_als_training_types.h:211
daal::algorithms::implicit_als::training::PartialModelInputId
PartialModelInputId
Definition: implicit_als_training_types.h:83
daal::algorithms::implicit_als::training::DistributedPartialResultStep4Id
DistributedPartialResultStep4Id
Definition: implicit_als_training_types.h:196
daal::algorithms::implicit_als::training::partialModelBlocksToNode
Definition: implicit_als_training_types.h:133
daal::step1Local
Definition: daal_defines.h:117
daal::step2Master
Definition: daal_defines.h:118
daal::algorithms::implicit_als::training::offset
Definition: implicit_als_training_types.h:148
daal::algorithms::implicit_als::training::partialModel
Definition: implicit_als_training_types.h:85
daal::algorithms::implicit_als::training::interface1::DistributedPartialResultStep2
Provides methods to access partial results obtained with the compute() method of the implicit ALS alg...
Definition: implicit_als_training_types.h:439
daal::step3Local
Definition: daal_defines.h:119
daal::algorithms::implicit_als::training::outputOfStep2ForStep4
Definition: implicit_als_training_types.h:121
daal::algorithms::implicit_als::training::outputOfStep1ForStep2
Definition: implicit_als_training_types.h:109
daal::algorithms::implicit_als::training::interface1::Result
Provides methods to access the results obtained with the compute() method of the implicit ALS trainin...
Definition: implicit_als_training_types.h:769
daal::algorithms::implicit_als::training::outputOfStep4ForStep1
Definition: implicit_als_training_types.h:198