C++ API Reference for Intel® Data Analytics Acceleration Library 2018 Update 3

implicit_als_training_init_types.h
1 /* file: implicit_als_training_init_types.h */
2 /*******************************************************************************
3 * Copyright 2014-2018 Intel Corporation.
4 *
5 * This software and the related documents are Intel copyrighted materials, and
6 * your use of them is governed by the express license under which they were
7 * provided to you (License). Unless the License provides otherwise, you may not
8 * use, modify, copy, publish, distribute, disclose or transmit this software or
9 * the related documents without Intel's prior written permission.
10 *
11 * This software and the related documents are provided as is, with no express
12 * or implied warranties, other than those that are expressly stated in the
13 * License.
14 *******************************************************************************/
15 
16 /*
17 //++
18 // Implementation of the implicit ALS algorithm interface
19 //--
20 */
21 
22 #ifndef __IMPLICIT_ALS_TRAINING_INIT_TYPES_H__
23 #define __IMPLICIT_ALS_TRAINING_INIT_TYPES_H__
24 
25 #include "algorithms/implicit_als/implicit_als_model.h"
26 #include "algorithms/implicit_als/implicit_als_training_types.h"
27 #include "data_management/data/csr_numeric_table.h"
28 #include "algorithms/engines/mt19937/mt19937.h"
29 
30 namespace daal
31 {
32 namespace algorithms
33 {
34 namespace implicit_als
35 {
36 namespace training
37 {
47 namespace init
48 {
49 
54 enum Method
55 {
56  defaultDense = 0,
57  fastCSR = 1
58 };
59 
64 enum InputId
65 {
66  data,
67  lastInputId = data
68 };
69 
75 enum Step2LocalInputId
76 {
77  inputOfStep2FromStep1,
79  lastStep2LocalInputId = inputOfStep2FromStep1
80 };
81 
87 enum PartialResultBaseId
88 {
89  outputOfInitForComputeStep3,
91  offsets,
93  lastPartialResultBaseId = offsets
94 };
95 
101 enum PartialResultId
102 {
103  partialModel = lastPartialResultBaseId + 1,
104  lastPartialResultId = partialModel
105 };
106 
112 enum PartialResultCollectionId
113 {
114  outputOfStep1ForStep2 = lastPartialResultId + 1,
116  lastPartialResultCollectionId = outputOfStep1ForStep2
117 };
118 
124 enum DistributedPartialResultStep2Id
125 {
126  transposedData = lastPartialResultBaseId + 1,
127  lastDistributedPartialResultStep2Id = transposedData
128 };
129 
134 enum ResultId
135 {
136  model,
137  lastResultId = model
138 };
139 
143 namespace interface1
144 {
151 /* [Parameter source code] */
152 struct DAAL_EXPORT Parameter : public daal::algorithms::Parameter
153 {
160  Parameter(size_t nFactors = 10, size_t fullNUsers = 0, size_t seed = 777777);
161 
162  size_t nFactors;
163  size_t fullNUsers;
164  size_t seed;
165  engines::EnginePtr engine;
167  services::Status check() const DAAL_C11_OVERRIDE;
168 };
169 /* [Parameter source code] */
170 
177 /* [Distributed parameter source code] */
178 struct DAAL_EXPORT DistributedParameter : public Parameter
179 {
186  DistributedParameter(size_t nFactors = 10, size_t fullNUsers = 0, size_t seed = 777777);
187 
188  data_management::NumericTablePtr partition;
194  services::Status check() const DAAL_C11_OVERRIDE;
195 };
196 /* [Distributed parameter source code] */
197 
202 class DAAL_EXPORT Input : public daal::algorithms::Input
203 {
204 public:
205  Input(size_t nElements = lastInputId + 1);
206  Input(const Input& other) : daal::algorithms::Input(other){}
207 
208  virtual ~Input() {}
209 
215  data_management::NumericTablePtr get(InputId id) const;
216 
222  void set(InputId id, const data_management::NumericTablePtr &ptr);
223 
228  size_t getNumberOfItems() const;
229 
235  services::Status check(const daal::algorithms::Parameter *parameter, int method) const DAAL_C11_OVERRIDE;
236 };
237 
242 template<ComputeStep step>
243 class DistributedInput
244 {};
245 
251 template <>
252 class DAAL_EXPORT DistributedInput<step1Local> : public Input
253 {
254 public:
256  DistributedInput();
257 
259  DistributedInput(const DistributedInput& other) : Input(other){}
260 
261  virtual ~DistributedInput() {}
262 
263  using Input::get;
264  using Input::set;
265 };
266 
272 template <>
273 class DAAL_EXPORT DistributedInput<step2Local> : public daal::algorithms::Input
274 {
275 public:
277  DistributedInput();
278 
280  DistributedInput(const DistributedInput& other) : daal::algorithms::Input(other){}
281 
282  virtual ~DistributedInput() {}
283 
289  data_management::KeyValueDataCollectionPtr get(Step2LocalInputId id) const;
290 
296  void set(Step2LocalInputId id, const data_management::KeyValueDataCollectionPtr &ptr);
297 
303  services::Status check(const daal::algorithms::Parameter *parameter, int method) const DAAL_C11_OVERRIDE;
304 };
305 
311 class DAAL_EXPORT PartialResultBase : public daal::algorithms::PartialResult
312 {
313 public:
314  DECLARE_SERIALIZABLE_CAST(PartialResultBase);
315 
321  PartialResultBase(size_t nElements = 0);
322 
328  data_management::KeyValueDataCollectionPtr get(PartialResultBaseId id) const;
329 
336  data_management::NumericTablePtr get(PartialResultBaseId id, size_t key) const;
337 
343  void set(PartialResultBaseId id, const data_management::KeyValueDataCollectionPtr &ptr);
344 
351  services::Status check(const daal::algorithms::Input *input, const daal::algorithms::Parameter *parameter, int method) const DAAL_C11_OVERRIDE;
352 
353 protected:
354  template <typename algorithmFPType>
355  DAAL_EXPORT services::Status allocate(size_t nParts);
356 
358  template<typename Archive, bool onDeserialize>
359  services::Status serialImpl(Archive *arch)
360  {
361  return daal::algorithms::PartialResult::serialImpl<Archive, onDeserialize>(arch);
362  }
363 
364  services::Status checkImpl(size_t nParts) const;
365 };
366 
372 class DAAL_EXPORT PartialResult : public PartialResultBase
373 {
374 public:
375  DECLARE_SERIALIZABLE_CAST(PartialResult);
377  PartialResult();
378 
379  using PartialResultBase::get;
380  using PartialResultBase::set;
381 
388  template <typename algorithmFPType>
389  DAAL_EXPORT services::Status allocate(const daal::algorithms::Input *input, const daal::algorithms::Parameter *parameter, const int method);
390 
396  PartialModelPtr get(PartialResultId id) const;
397 
403  void set(PartialResultId id, const PartialModelPtr &ptr);
404 
410  data_management::KeyValueDataCollectionPtr get(PartialResultCollectionId id) const;
411 
418  data_management::NumericTablePtr get(PartialResultCollectionId id, size_t key) const;
419 
425  void set(PartialResultCollectionId id, const data_management::KeyValueDataCollectionPtr &ptr);
426 
433  services::Status check(const daal::algorithms::Input *input, const daal::algorithms::Parameter *parameter, int method) const DAAL_C11_OVERRIDE;
434 
435 protected:
437  template<typename Archive, bool onDeserialize>
438  services::Status serialImpl(Archive *arch)
439  {
440  return daal::algorithms::PartialResult::serialImpl<Archive, onDeserialize>(arch);
441  }
442 };
443 
449 class DAAL_EXPORT DistributedPartialResultStep2 : public PartialResultBase
450 {
451 public:
452  DECLARE_SERIALIZABLE_CAST(DistributedPartialResultStep2);
454  DistributedPartialResultStep2();
455 
456  using PartialResultBase::get;
457  using PartialResultBase::set;
458 
465  template <typename algorithmFPType>
466  DAAL_EXPORT services::Status allocate(const daal::algorithms::Input *input, const daal::algorithms::Parameter *parameter, const int method);
467 
473  data_management::NumericTablePtr get(DistributedPartialResultStep2Id id) const;
474 
480  void set(DistributedPartialResultStep2Id id, const data_management::NumericTablePtr &ptr);
481 
488  services::Status check(const daal::algorithms::Input *input, const daal::algorithms::Parameter *parameter, int method) const DAAL_C11_OVERRIDE;
489 
490 protected:
492  template<typename Archive, bool onDeserialize>
493  services::Status serialImpl(Archive *arch)
494  {
495  return daal::algorithms::PartialResult::serialImpl<Archive, onDeserialize>(arch);
496  }
497 };
498 
504 class DAAL_EXPORT Result : public daal::algorithms::implicit_als::training::Result
505 {
506 public:
507  DECLARE_SERIALIZABLE_CAST(Result);
508 
514  daal::algorithms::implicit_als::ModelPtr get(ResultId id) const;
515 
521  void set(ResultId id, const daal::algorithms::implicit_als::ModelPtr &ptr);
522 
523 protected:
525  template<typename Archive, bool onDeserialize>
526  services::Status serialImpl(Archive *arch)
527  {
528  return training::Result::serialImpl<Archive, onDeserialize>(arch);
529  }
530 };
531 typedef services::SharedPtr<Result> ResultPtr;
532 typedef services::SharedPtr<PartialResult> PartialResultPtr;
533 typedef services::SharedPtr<DistributedPartialResultStep2> DistributedPartialResultStep2Ptr;
534 
535 } // namespace interface1
536 using interface1::Parameter;
537 using interface1::DistributedParameter;
538 using interface1::Input;
539 using interface1::DistributedInput;
540 using interface1::PartialResultBase;
541 using interface1::PartialResult;
542 using interface1::PartialResultPtr;
543 using interface1::DistributedPartialResultStep2;
544 using interface1::DistributedPartialResultStep2Ptr;
545 using interface1::Result;
546 using interface1::ResultPtr;
547 
548 }
550 }
551 }
552 }
553 }
554 
555 #endif
daal::algorithms::implicit_als::training::init::interface1::DistributedInput< step1Local >::DistributedInput
DistributedInput(const DistributedInput &other)
Definition: implicit_als_training_init_types.h:259
daal::algorithms::implicit_als::training::init::Method
Method
Available methods for initializing the implicit ALS algorithm.
Definition: implicit_als_training_init_types.h:54
daal::algorithms::implicit_als::training::init::interface1::DistributedInput
Input objects for the implicit ALS initialization algorithm in the distributed processing mode ...
Definition: implicit_als_training_init_types.h:243
daal::algorithms::implicit_als::training::init::inputOfStep2FromStep1
Definition: implicit_als_training_init_types.h:77
daal::step2Local
Definition: daal_defines.h:122
daal
Definition: algorithm_base_common.h:31
daal::algorithms::implicit_als::training::init::ResultId
ResultId
Available identifiers of the results of the implicit ALS initialization algorithm.
Definition: implicit_als_training_init_types.h:134
daal::algorithms::implicit_als::training::init::model
Definition: implicit_als_training_init_types.h:136
daal::algorithms::implicit_als::training::init::transposedData
Definition: implicit_als_training_init_types.h:126
daal::algorithms::implicit_als::training::init::interface1::DistributedPartialResultStep2
Provides methods to access partial results obtained with the compute() method of the implicit ALS ini...
Definition: implicit_als_training_init_types.h:449
daal::algorithms::implicit_als::training::init::fastCSR
Definition: implicit_als_training_init_types.h:57
daal::algorithms::implicit_als::training::init::interface1::PartialResult
Provides methods to access partial results obtained with the compute() method of the implicit ALS ini...
Definition: implicit_als_training_init_types.h:372
daal::algorithms::implicit_als::training::init::interface1::Input
Input objects for the implicit ALS initialization algorithm
Definition: implicit_als_training_init_types.h:202
daal::algorithms::implicit_als::training::init::interface1::DistributedParameter::partition
data_management::NumericTablePtr partition
Definition: implicit_als_training_init_types.h:188
daal::algorithms::implicit_als::training::init::Step2LocalInputId
Step2LocalInputId
Definition: implicit_als_training_init_types.h:75
daal::algorithms::implicit_als::training::init::PartialResultBaseId
PartialResultBaseId
Available identifiers of partial results of the implicit ALS initialization algorithm in the first an...
Definition: implicit_als_training_init_types.h:87
daal::algorithms::implicit_als::training::init::interface1::Input::set
void set(InputId id, const data_management::NumericTablePtr &ptr)
daal::algorithms::implicit_als::training::init::PartialResultId
PartialResultId
Available identifiers of partial results of the implicit ALS initialization algorithm in the first st...
Definition: implicit_als_training_init_types.h:101
daal::algorithms::implicit_als::training::init::interface1::PartialResultBase
Provides interface to access partial results obtained with the implicit ALS initialization algorithm ...
Definition: implicit_als_training_init_types.h:311
daal::algorithms::implicit_als::training::init::interface1::DistributedParameter
Parameters of the compute() method of the implicit ALS initialization algorithm in the distributed co...
Definition: implicit_als_training_init_types.h:178
daal::algorithms::implicit_als::training::init::outputOfStep1ForStep2
Definition: implicit_als_training_init_types.h:114
daal::algorithms::implicit_als::training::init::outputOfInitForComputeStep3
Definition: implicit_als_training_init_types.h:89
daal::algorithms::implicit_als::training::init::DistributedPartialResultStep2Id
DistributedPartialResultStep2Id
Definition: implicit_als_training_init_types.h:124
daal::algorithms::implicit_als::training::init::interface1::DistributedInput< step2Local >::DistributedInput
DistributedInput(const DistributedInput &other)
Definition: implicit_als_training_init_types.h:280
daal::algorithms::implicit_als::training::init::interface1::PartialResultBase::set
void set(PartialResultBaseId id, const data_management::KeyValueDataCollectionPtr &ptr)
daal::algorithms::implicit_als::training::init::interface1::Parameter::fullNUsers
size_t fullNUsers
Definition: implicit_als_training_init_types.h:163
daal::algorithms::implicit_als::training::init::interface1::Input::get
data_management::NumericTablePtr get(InputId id) const
daal::algorithms::implicit_als::training::init::interface1::Result
Provides methods to access the results obtained with the compute() method of the implicit ALS initial...
Definition: implicit_als_training_init_types.h:504
daal::algorithms::implicit_als::training::init::data
Definition: implicit_als_training_init_types.h:66
daal::algorithms::implicit_als::training::init::InputId
InputId
Available identifiers of input objects for the implicit ALS initialization algorithm.
Definition: implicit_als_training_init_types.h:64
daal::algorithms::implicit_als::training::init::interface1::Parameter::nFactors
size_t nFactors
Definition: implicit_als_training_init_types.h:162
daal::algorithms::implicit_als::training::init::partialModel
Definition: implicit_als_training_init_types.h:103
daal::algorithms::implicit_als::training::init::interface1::Parameter::engine
engines::EnginePtr engine
Definition: implicit_als_training_init_types.h:165
daal::step1Local
Definition: daal_defines.h:117
daal::algorithms::implicit_als::training::init::interface1::Parameter::seed
size_t seed
Definition: implicit_als_training_init_types.h:164
daal::algorithms::implicit_als::training::init::PartialResultCollectionId
PartialResultCollectionId
Available identifiers of partial results of the implicit ALS initialization algorithm in the first st...
Definition: implicit_als_training_init_types.h:112
daal::algorithms::implicit_als::training::init::interface1::Parameter
Parameters of the compute() method of the implicit ALS initialization algorithm.
Definition: implicit_als_training_init_types.h:152
daal::algorithms::implicit_als::training::init::offsets
Definition: implicit_als_training_init_types.h:91
daal::algorithms::implicit_als::training::init::interface1::PartialResultBase::get
data_management::KeyValueDataCollectionPtr get(PartialResultBaseId id) const
daal::algorithms::implicit_als::training::init::defaultDense
Definition: implicit_als_training_init_types.h:56

For more complete information about compiler optimizations, see our Optimization Notice.