24 #ifndef __IMPLICIT_ALS_TRAINING_TYPES_H__
25 #define __IMPLICIT_ALS_TRAINING_TYPES_H__
27 #include "algorithms/implicit_als/implicit_als_model.h"
28 #include "data_management/data/csr_numeric_table.h"
37 namespace implicit_als
65 enum NumericTableInputId
68 lastNumericTableInputId = data
77 inputModel = lastNumericTableInputId + 1,
78 lastModelInputId = inputModel
85 enum PartialModelInputId
89 lastPartialModelInputId = partialModel
99 inputOfStep2FromStep1,
101 lastMasterInputId = inputOfStep2FromStep1
109 enum DistributedPartialResultStep1Id
111 outputOfStep1ForStep2,
113 lastDistributedPartialResultStep1Id = outputOfStep1ForStep2
121 enum DistributedPartialResultStep2Id
123 outputOfStep2ForStep4 ,
125 lastDistributedPartialResultStep2Id = outputOfStep2ForStep4
133 enum Step3LocalCollectionInputId
135 partialModelBlocksToNode = lastDistributedPartialResultStep2Id + 1,
138 inputOfStep3FromInit = partialModelBlocksToNode,
140 lastStep3LocalCollectionInputId = inputOfStep3FromInit
148 enum Step3LocalNumericTableInputId
150 offset = lastStep3LocalCollectionInputId + 1,
152 lastStep3LocalNumericTableInputId = offset
160 enum DistributedPartialResultStep3Id
162 outputOfStep3ForStep4,
164 lastDistributedPartialResultStep3Id = outputOfStep3ForStep4
172 enum Step4LocalPartialModelsInputId
177 lastStep4LocalPartialModelsInputId = partialModels
185 enum Step4LocalNumericTableInputId
187 partialData = lastStep4LocalPartialModelsInputId + 1,
188 inputOfStep4FromStep2,
190 lastStep4LocalNumericTableInputId = inputOfStep4FromStep2
198 enum DistributedPartialResultStep4Id
200 outputOfStep4ForStep1,
202 outputOfStep4ForStep3 = outputOfStep4ForStep1,
204 outputOfStep4 = outputOfStep4ForStep3,
206 lastDistributedPartialResultStep4Id = outputOfStep4
228 class DAAL_EXPORT Input :
public daal::algorithms::Input
232 Input(
const Input& other) : daal::algorithms::Input(other){}
241 data_management::NumericTablePtr
get(NumericTableInputId id)
const;
248 ModelPtr
get(ModelInputId id)
const;
255 void set(NumericTableInputId
id,
const data_management::NumericTablePtr &ptr);
262 void set(ModelInputId
id,
const ModelPtr &ptr);
268 size_t getNumberOfUsers()
const;
274 size_t getNumberOfItems()
const;
281 services::Status check(
const daal::algorithms::Parameter *parameter,
int method)
const DAAL_C11_OVERRIDE;
288 template<ComputeStep step>
289 class DistributedInput
298 class DAAL_EXPORT DistributedInput<step1Local> :
public daal::algorithms::Input
305 DistributedInput(
const DistributedInput& other) : daal::algorithms::Input(other){}
307 virtual ~DistributedInput() {}
314 PartialModelPtr
get(PartialModelInputId id)
const;
321 void set(PartialModelInputId
id,
const PartialModelPtr &ptr);
329 services::Status check(
const daal::algorithms::Parameter *parameter,
int method)
const DAAL_C11_OVERRIDE;
337 class DAAL_EXPORT DistributedPartialResultStep1 :
public daal::algorithms::PartialResult
340 DECLARE_SERIALIZABLE_CAST(DistributedPartialResultStep1);
342 DistributedPartialResultStep1();
344 virtual ~DistributedPartialResultStep1() {}
351 data_management::NumericTablePtr
get(DistributedPartialResultStep1Id id)
const;
358 void set(DistributedPartialResultStep1Id
id,
const data_management::NumericTablePtr &ptr);
366 template <
typename algorithmFPType>
367 DAAL_EXPORT services::Status allocate(
const daal::algorithms::Input *input,
const daal::algorithms::Parameter *parameter,
const int method);
375 services::Status check(
const daal::algorithms::Input *input,
const daal::algorithms::Parameter *parameter,
376 int method)
const DAAL_C11_OVERRIDE;
380 template<
typename Archive,
bool onDeserialize>
381 services::Status serialImpl(Archive *arch)
383 return daal::algorithms::PartialResult::serialImpl<Archive, onDeserialize>(arch);
386 typedef services::SharedPtr<DistributedPartialResultStep1> DistributedPartialResultStep1Ptr;
394 class DAAL_EXPORT DistributedInput<step2Master> :
public daal::algorithms::Input
401 DistributedInput(
const DistributedInput& other) : daal::algorithms::Input(other){}
403 virtual ~DistributedInput() {}
410 data_management::DataCollectionPtr
get(MasterInputId id)
const;
417 void set(MasterInputId
id,
const data_management::DataCollectionPtr &ptr);
425 void add(MasterInputId
id,
const DistributedPartialResultStep1Ptr &partialResult);
433 services::Status check(
const daal::algorithms::Parameter *parameter,
int method)
const DAAL_C11_OVERRIDE;
441 class DAAL_EXPORT DistributedPartialResultStep2 :
public daal::algorithms::PartialResult
444 DECLARE_SERIALIZABLE_CAST(DistributedPartialResultStep2);
446 DistributedPartialResultStep2();
448 virtual ~DistributedPartialResultStep2() {}
455 data_management::NumericTablePtr
get(DistributedPartialResultStep2Id id)
const;
462 void set(DistributedPartialResultStep2Id
id,
const data_management::NumericTablePtr &ptr);
470 template <
typename algorithmFPType>
471 DAAL_EXPORT services::Status allocate(
const daal::algorithms::Input *input,
const daal::algorithms::Parameter *parameter,
const int method);
479 services::Status check(
const daal::algorithms::Input *input,
const daal::algorithms::Parameter *parameter,
480 int method)
const DAAL_C11_OVERRIDE;
484 template<
typename Archive,
bool onDeserialize>
485 services::Status serialImpl(Archive *arch)
487 return daal::algorithms::PartialResult::serialImpl<Archive, onDeserialize>(arch);
490 typedef services::SharedPtr<DistributedPartialResultStep2> DistributedPartialResultStep2Ptr;
498 class DAAL_EXPORT DistributedInput<step3Local> :
public daal::algorithms::Input
505 DistributedInput(
const DistributedInput& other) : daal::algorithms::Input(other){}
507 virtual ~DistributedInput() {}
514 PartialModelPtr
get(PartialModelInputId id)
const;
521 data_management::KeyValueDataCollectionPtr
get(Step3LocalCollectionInputId id)
const;
528 data_management::NumericTablePtr
get(Step3LocalNumericTableInputId id)
const;
535 void set(PartialModelInputId
id,
const PartialModelPtr &ptr);
542 void set(Step3LocalCollectionInputId
id,
const data_management::KeyValueDataCollectionPtr &ptr);
549 void set(Step3LocalNumericTableInputId
id,
const data_management::NumericTablePtr &ptr);
555 size_t getNumberOfBlocks()
const;
561 size_t getOffset()
const;
568 data_management::NumericTablePtr getOutBlockIndices(
size_t key)
const;
576 services::Status check(
const daal::algorithms::Parameter *parameter,
int method)
const DAAL_C11_OVERRIDE;
584 class DAAL_EXPORT DistributedPartialResultStep3 :
public daal::algorithms::PartialResult
587 DECLARE_SERIALIZABLE_CAST(DistributedPartialResultStep3);
589 DistributedPartialResultStep3();
591 virtual ~DistributedPartialResultStep3() {}
599 template <
typename algorithmFPType>
600 DAAL_EXPORT services::Status allocate(
const daal::algorithms::Input *input,
const daal::algorithms::Parameter *parameter,
const int method);
608 data_management::KeyValueDataCollectionPtr
get(DistributedPartialResultStep3Id id)
const;
618 PartialModelPtr
get(DistributedPartialResultStep3Id id,
size_t key)
const;
625 void set(DistributedPartialResultStep3Id
id,
const data_management::KeyValueDataCollectionPtr &ptr);
633 services::Status check(
const daal::algorithms::Input *input,
const daal::algorithms::Parameter *parameter,
634 int method)
const DAAL_C11_OVERRIDE;
638 template<
typename Archive,
bool onDeserialize>
639 services::Status serialImpl(Archive *arch)
641 return daal::algorithms::PartialResult::serialImpl<Archive, onDeserialize>(arch);
644 typedef services::SharedPtr<DistributedPartialResultStep3> DistributedPartialResultStep3Ptr;
652 class DAAL_EXPORT DistributedInput<step4Local> :
public daal::algorithms::Input
659 DistributedInput(
const DistributedInput& other) : daal::algorithms::Input(other){}
661 virtual ~DistributedInput() {}
671 data_management::KeyValueDataCollectionPtr
get(Step4LocalPartialModelsInputId id)
const;
678 data_management::NumericTablePtr
get(Step4LocalNumericTableInputId id)
const;
685 void set(Step4LocalPartialModelsInputId
id,
const data_management::KeyValueDataCollectionPtr &ptr);
692 void set(Step4LocalNumericTableInputId
id,
const data_management::NumericTablePtr &ptr);
698 size_t getNumberOfRows()
const;
706 services::Status check(
const daal::algorithms::Parameter *parameter,
int method)
const DAAL_C11_OVERRIDE;
715 class DAAL_EXPORT DistributedPartialResultStep4 :
public daal::algorithms::PartialResult
718 DECLARE_SERIALIZABLE_CAST(DistributedPartialResultStep4);
720 DistributedPartialResultStep4();
722 virtual ~DistributedPartialResultStep4() {}
730 template <
typename algorithmFPType>
731 DAAL_EXPORT services::Status allocate(
const daal::algorithms::Input *input,
const daal::algorithms::Parameter *parameter,
const int method);
738 PartialModelPtr
get(DistributedPartialResultStep4Id id)
const;
745 void set(DistributedPartialResultStep4Id
id,
const PartialModelPtr &ptr);
753 services::Status check(
const daal::algorithms::Input *input,
const daal::algorithms::Parameter *parameter,
754 int method)
const DAAL_C11_OVERRIDE;
758 template<
typename Archive,
bool onDeserialize>
759 services::Status serialImpl(Archive *arch)
761 return daal::algorithms::PartialResult::serialImpl<Archive, onDeserialize>(arch);
764 typedef services::SharedPtr<DistributedPartialResultStep4> DistributedPartialResultStep4Ptr;
771 class DAAL_EXPORT Result :
public daal::algorithms::Result
774 DECLARE_SERIALIZABLE_CAST(Result);
784 template <
typename algorithmFPType>
785 DAAL_EXPORT services::Status allocate(
const daal::algorithms::Input *input,
const daal::algorithms::Parameter *parameter,
const int method);
792 daal::algorithms::implicit_als::ModelPtr
get(ResultId id)
const;
799 void set(ResultId
id,
const daal::algorithms::implicit_als::ModelPtr &ptr);
807 services::Status check(
const daal::algorithms::Input *input,
const daal::algorithms::Parameter *parameter,
808 int method)
const DAAL_C11_OVERRIDE;
812 template<
typename Archive,
bool onDeserialize>
813 services::Status serialImpl(Archive *arch)
815 return daal::algorithms::Result::serialImpl<Archive, onDeserialize>(arch);
818 typedef services::SharedPtr<Result> ResultPtr;
820 using interface1::Input;
821 using interface1::DistributedInput;
822 using interface1::DistributedPartialResultStep1;
823 using interface1::DistributedPartialResultStep1Ptr;
824 using interface1::DistributedPartialResultStep2;
825 using interface1::DistributedPartialResultStep2Ptr;
826 using interface1::DistributedPartialResultStep3;
827 using interface1::DistributedPartialResultStep3Ptr;
828 using interface1::DistributedPartialResultStep4;
829 using interface1::DistributedPartialResultStep4Ptr;
830 using interface1::Result;
831 using interface1::ResultPtr;
daal::step1Local
Definition: daal_defines.h:123
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:337
daal::algorithms::implicit_als::training::Method
Method
Definition: implicit_als_training_types.h:55
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:584
daal::algorithms::implicit_als::training::interface1::DistributedInput< step1Local >::DistributedInput
DistributedInput(const DistributedInput &other)
Definition: implicit_als_training_types.h:305
daal::algorithms::implicit_als::training::ModelInputId
ModelInputId
Definition: implicit_als_training_types.h:75
daal::algorithms::implicit_als::training::model
Definition: implicit_als_training_types.h:215
daal::step2Master
Definition: daal_defines.h:124
daal::algorithms::implicit_als::training::inputModel
Definition: implicit_als_training_types.h:77
daal::algorithms::implicit_als::training::inputOfStep4FromStep2
Definition: implicit_als_training_types.h:188
daal::algorithms::implicit_als::training::interface1::Input
Input objects for the implicit ALS training algorithm
Definition: implicit_als_training_types.h:228
daal::algorithms::implicit_als::training::outputOfStep4ForStep1
Definition: implicit_als_training_types.h:200
daal::algorithms::implicit_als::training::interface1::DistributedInput< step3Local >::DistributedInput
DistributedInput(const DistributedInput &other)
Definition: implicit_als_training_types.h:505
daal::algorithms::implicit_als::training::DistributedPartialResultStep2Id
DistributedPartialResultStep2Id
Definition: implicit_als_training_types.h:121
daal::step3Local
Definition: daal_defines.h:125
daal::algorithms::implicit_als::training::partialData
Definition: implicit_als_training_types.h:187
daal::algorithms::implicit_als::training::outputOfStep4ForStep3
Definition: implicit_als_training_types.h:202
daal::step4Local
Definition: daal_defines.h:126
daal::algorithms::implicit_als::training::Step4LocalPartialModelsInputId
Step4LocalPartialModelsInputId
Definition: implicit_als_training_types.h:172
daal::algorithms::implicit_als::training::Step4LocalNumericTableInputId
Step4LocalNumericTableInputId
Definition: implicit_als_training_types.h:185
daal::algorithms::implicit_als::training::outputOfStep2ForStep4
Definition: implicit_als_training_types.h:123
daal::algorithms::implicit_als::training::interface1::DistributedInput< step4Local >::DistributedInput
DistributedInput(const DistributedInput &other)
Definition: implicit_als_training_types.h:659
daal::algorithms::implicit_als::training::outputOfStep4
Definition: implicit_als_training_types.h:204
daal::algorithms::implicit_als::training::inputOfStep3FromInit
Definition: implicit_als_training_types.h:138
daal::algorithms::implicit_als::training::ResultId
ResultId
Available identifiers of the results of the implicit ALS training algorithm.
Definition: implicit_als_training_types.h:213
daal::algorithms::implicit_als::training::DistributedPartialResultStep1Id
DistributedPartialResultStep1Id
Definition: implicit_als_training_types.h:109
daal::algorithms::implicit_als::training::PartialModelInputId
PartialModelInputId
Definition: implicit_als_training_types.h:85
daal::algorithms::implicit_als::training::partialModelBlocksToNode
Definition: implicit_als_training_types.h:135
daal::algorithms::implicit_als::training::outputOfStep3ForStep4
Definition: implicit_als_training_types.h:162
daal::algorithms::implicit_als::training::partialModels
Definition: implicit_als_training_types.h:174
daal::algorithms::implicit_als::training::DistributedPartialResultStep3Id
DistributedPartialResultStep3Id
Definition: implicit_als_training_types.h:160
daal::algorithms::implicit_als::training::inputOfStep2FromStep1
Definition: implicit_als_training_types.h:99
daal::algorithms::implicit_als::training::partialModel
Definition: implicit_als_training_types.h:87
daal::algorithms::implicit_als::training::data
Definition: implicit_als_training_types.h:67
daal::algorithms::implicit_als::training::outputOfStep1ForStep2
Definition: implicit_als_training_types.h:111
daal::algorithms::implicit_als::training::Step3LocalCollectionInputId
Step3LocalCollectionInputId
Definition: implicit_als_training_types.h:133
daal::algorithms::implicit_als::training::DistributedPartialResultStep4Id
DistributedPartialResultStep4Id
Definition: implicit_als_training_types.h:198
daal::algorithms::implicit_als::training::MasterInputId
MasterInputId
Definition: implicit_als_training_types.h:97
daal::algorithms::implicit_als::training::fastCSR
Definition: implicit_als_training_types.h:58
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:715
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:441
daal::algorithms::implicit_als::training::interface1::DistributedInput< step2Master >::DistributedInput
DistributedInput(const DistributedInput &other)
Definition: implicit_als_training_types.h:401
daal::algorithms::implicit_als::training::offset
Definition: implicit_als_training_types.h:150
daal::algorithms::implicit_als::training::interface1::DistributedInput
Input objects for the implicit ALS training algorithm in the distributed processing mode ...
Definition: implicit_als_training_types.h:289
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:771
daal::algorithms::implicit_als::training::Step3LocalNumericTableInputId
Step3LocalNumericTableInputId
Definition: implicit_als_training_types.h:148
daal::algorithms::implicit_als::training::NumericTableInputId
NumericTableInputId
Definition: implicit_als_training_types.h:65
daal::algorithms::implicit_als::training::defaultDense
Definition: implicit_als_training_types.h:57