C++ API Reference for Intel® Data Analytics Acceleration Library 2020 Update 1

implicit_als_training_init_types.h
1 /* file: implicit_als_training_init_types.h */
2 /*******************************************************************************
3 * Copyright 2014-2020 Intel Corporation
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 *******************************************************************************/
17 
18 /*
19 //++
20 // Implementation of the implicit ALS algorithm interface
21 //--
22 */
23 
24 #ifndef __IMPLICIT_ALS_TRAINING_INIT_TYPES_H__
25 #define __IMPLICIT_ALS_TRAINING_INIT_TYPES_H__
26 
27 #include "algorithms/implicit_als/implicit_als_model.h"
28 #include "algorithms/implicit_als/implicit_als_training_types.h"
29 #include "data_management/data/csr_numeric_table.h"
30 #include "algorithms/engines/mt19937/mt19937.h"
31 
32 namespace daal
33 {
34 namespace algorithms
35 {
36 namespace implicit_als
37 {
38 namespace training
39 {
49 namespace init
50 {
51 
56 enum Method
57 {
58  defaultDense = 0,
59  fastCSR = 1
60 };
61 
66 enum InputId
67 {
68  data,
69  lastInputId = data
70 };
71 
77 enum Step2LocalInputId
78 {
79  inputOfStep2FromStep1,
81  lastStep2LocalInputId = inputOfStep2FromStep1
82 };
83 
89 enum PartialResultBaseId
90 {
91  outputOfInitForComputeStep3,
93  offsets,
95  lastPartialResultBaseId = offsets
96 };
97 
103 enum PartialResultId
104 {
105  partialModel = lastPartialResultBaseId + 1,
106  lastPartialResultId = partialModel
107 };
108 
114 enum PartialResultCollectionId
115 {
116  outputOfStep1ForStep2 = lastPartialResultId + 1,
118  lastPartialResultCollectionId = outputOfStep1ForStep2
119 };
120 
126 enum DistributedPartialResultStep2Id
127 {
128  transposedData = lastPartialResultBaseId + 1,
129  lastDistributedPartialResultStep2Id = transposedData
130 };
131 
136 enum ResultId
137 {
138  model,
139  lastResultId = model
140 };
141 
145 namespace interface1
146 {
153 /* [Parameter source code] */
154 struct DAAL_EXPORT Parameter : public daal::algorithms::Parameter
155 {
162  Parameter(size_t nFactors = 10, size_t fullNUsers = 0, size_t seed = 777777);
163 
164  size_t nFactors;
165  size_t fullNUsers;
166  size_t seed;
167  engines::EnginePtr engine;
169  services::Status check() const DAAL_C11_OVERRIDE;
170 };
171 /* [Parameter source code] */
172 
179 /* [Distributed parameter source code] */
180 struct DAAL_EXPORT DistributedParameter : public Parameter
181 {
188  DistributedParameter(size_t nFactors = 10, size_t fullNUsers = 0, size_t seed = 777777);
189 
190  data_management::NumericTablePtr partition;
196  services::Status check() const DAAL_C11_OVERRIDE;
197 };
198 /* [Distributed parameter source code] */
199 
204 class DAAL_EXPORT Input : public daal::algorithms::Input
205 {
206 public:
207  Input(size_t nElements = lastInputId + 1);
208  Input(const Input& other) : daal::algorithms::Input(other){}
209 
210  virtual ~Input() {}
211 
217  data_management::NumericTablePtr get(InputId id) const;
218 
224  void set(InputId id, const data_management::NumericTablePtr &ptr);
225 
230  size_t getNumberOfItems() const;
231 
237  services::Status check(const daal::algorithms::Parameter *parameter, int method) const DAAL_C11_OVERRIDE;
238 };
239 
244 template<ComputeStep step>
245 class DistributedInput
246 {};
247 
253 template <>
254 class DAAL_EXPORT DistributedInput<step1Local> : public Input
255 {
256 public:
258  DistributedInput();
259 
261  DistributedInput(const DistributedInput& other) : Input(other){}
262 
263  virtual ~DistributedInput() {}
264 
265  using Input::get;
266  using Input::set;
267 };
268 
274 template <>
275 class DAAL_EXPORT DistributedInput<step2Local> : public daal::algorithms::Input
276 {
277 public:
279  DistributedInput();
280 
282  DistributedInput(const DistributedInput& other) : daal::algorithms::Input(other){}
283 
284  virtual ~DistributedInput() {}
285 
291  data_management::KeyValueDataCollectionPtr get(Step2LocalInputId id) const;
292 
298  void set(Step2LocalInputId id, const data_management::KeyValueDataCollectionPtr &ptr);
299 
305  services::Status check(const daal::algorithms::Parameter *parameter, int method) const DAAL_C11_OVERRIDE;
306 };
307 
313 class DAAL_EXPORT PartialResultBase : public daal::algorithms::PartialResult
314 {
315 public:
316  DECLARE_SERIALIZABLE_CAST(PartialResultBase);
317 
323  PartialResultBase(size_t nElements = 0);
324 
330  data_management::KeyValueDataCollectionPtr get(PartialResultBaseId id) const;
331 
338  data_management::NumericTablePtr get(PartialResultBaseId id, size_t key) const;
339 
345  void set(PartialResultBaseId id, const data_management::KeyValueDataCollectionPtr &ptr);
346 
353  services::Status check(const daal::algorithms::Input *input, const daal::algorithms::Parameter *parameter, int method) const DAAL_C11_OVERRIDE;
354 
355 protected:
356  template <typename algorithmFPType>
357  DAAL_EXPORT services::Status allocate(size_t nParts);
358 
360  template<typename Archive, bool onDeserialize>
361  services::Status serialImpl(Archive *arch)
362  {
363  return daal::algorithms::PartialResult::serialImpl<Archive, onDeserialize>(arch);
364  }
365 
366  services::Status checkImpl(size_t nParts) const;
367 };
368 
374 class DAAL_EXPORT PartialResult : public PartialResultBase
375 {
376 public:
377  DECLARE_SERIALIZABLE_CAST(PartialResult);
379  PartialResult();
380 
381  using PartialResultBase::get;
382  using PartialResultBase::set;
383 
390  template <typename algorithmFPType>
391  DAAL_EXPORT services::Status allocate(const daal::algorithms::Input *input, const daal::algorithms::Parameter *parameter, const int method);
392 
398  PartialModelPtr get(PartialResultId id) const;
399 
405  void set(PartialResultId id, const PartialModelPtr &ptr);
406 
412  data_management::KeyValueDataCollectionPtr get(PartialResultCollectionId id) const;
413 
420  data_management::NumericTablePtr get(PartialResultCollectionId id, size_t key) const;
421 
427  void set(PartialResultCollectionId id, const data_management::KeyValueDataCollectionPtr &ptr);
428 
435  services::Status check(const daal::algorithms::Input *input, const daal::algorithms::Parameter *parameter, int method) const DAAL_C11_OVERRIDE;
436 
437 protected:
439  template<typename Archive, bool onDeserialize>
440  services::Status serialImpl(Archive *arch)
441  {
442  return daal::algorithms::PartialResult::serialImpl<Archive, onDeserialize>(arch);
443  }
444 };
445 
451 class DAAL_EXPORT DistributedPartialResultStep2 : public PartialResultBase
452 {
453 public:
454  DECLARE_SERIALIZABLE_CAST(DistributedPartialResultStep2);
456  DistributedPartialResultStep2();
457 
458  using PartialResultBase::get;
459  using PartialResultBase::set;
460 
467  template <typename algorithmFPType>
468  DAAL_EXPORT services::Status allocate(const daal::algorithms::Input *input, const daal::algorithms::Parameter *parameter, const int method);
469 
475  data_management::NumericTablePtr get(DistributedPartialResultStep2Id id) const;
476 
482  void set(DistributedPartialResultStep2Id id, const data_management::NumericTablePtr &ptr);
483 
490  services::Status check(const daal::algorithms::Input *input, const daal::algorithms::Parameter *parameter, int method) const DAAL_C11_OVERRIDE;
491 
492 protected:
494  template<typename Archive, bool onDeserialize>
495  services::Status serialImpl(Archive *arch)
496  {
497  return daal::algorithms::PartialResult::serialImpl<Archive, onDeserialize>(arch);
498  }
499 };
500 
506 class DAAL_EXPORT Result : public daal::algorithms::implicit_als::training::Result
507 {
508 public:
509  DECLARE_SERIALIZABLE_CAST(Result);
510 
516  daal::algorithms::implicit_als::ModelPtr get(ResultId id) const;
517 
523  void set(ResultId id, const daal::algorithms::implicit_als::ModelPtr &ptr);
524 
525 protected:
527  template<typename Archive, bool onDeserialize>
528  services::Status serialImpl(Archive *arch)
529  {
530  return training::Result::serialImpl<Archive, onDeserialize>(arch);
531  }
532 };
533 typedef services::SharedPtr<Result> ResultPtr;
534 typedef services::SharedPtr<PartialResult> PartialResultPtr;
535 typedef services::SharedPtr<DistributedPartialResultStep2> DistributedPartialResultStep2Ptr;
536 
537 } // namespace interface1
538 using interface1::Parameter;
539 using interface1::DistributedParameter;
540 using interface1::Input;
541 using interface1::DistributedInput;
542 using interface1::PartialResultBase;
543 using interface1::PartialResult;
544 using interface1::PartialResultPtr;
545 using interface1::DistributedPartialResultStep2;
546 using interface1::DistributedPartialResultStep2Ptr;
547 using interface1::Result;
548 using interface1::ResultPtr;
549 
550 }
552 }
553 }
554 }
555 }
556 
557 #endif
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:154
daal::step1Local
Definition: daal_defines.h:123
daal::algorithms::implicit_als::training::init::Step2LocalInputId
Step2LocalInputId
Definition: implicit_als_training_init_types.h:77
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:313
daal::algorithms::implicit_als::training::init::interface1::Parameter::seed
size_t seed
Definition: implicit_als_training_init_types.h:166
daal::algorithms::implicit_als::training::init::inputOfStep2FromStep1
Definition: implicit_als_training_init_types.h:79
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:114
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:103
daal::algorithms::implicit_als::training::init::fastCSR
Definition: implicit_als_training_init_types.h:59
daal::algorithms::implicit_als::training::init::interface1::DistributedInput< step2Local >::DistributedInput
DistributedInput(const DistributedInput &other)
Definition: implicit_als_training_init_types.h:282
daal::algorithms::implicit_als::training::init::interface1::DistributedInput< step1Local >::DistributedInput
DistributedInput(const DistributedInput &other)
Definition: implicit_als_training_init_types.h:261
daal::algorithms::implicit_als::training::init::outputOfInitForComputeStep3
Definition: implicit_als_training_init_types.h:91
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:245
daal::algorithms::implicit_als::training::init::interface1::DistributedParameter::partition
data_management::NumericTablePtr partition
Definition: implicit_als_training_init_types.h:190
daal::algorithms::implicit_als::training::init::interface1::Input::get
data_management::NumericTablePtr get(InputId id) const
daal::algorithms::implicit_als::training::init::data
Definition: implicit_als_training_init_types.h:68
daal::algorithms::implicit_als::training::init::outputOfStep1ForStep2
Definition: implicit_als_training_init_types.h:116
daal::algorithms::implicit_als::training::init::interface1::Parameter::fullNUsers
size_t fullNUsers
Definition: implicit_als_training_init_types.h:165
daal::algorithms::implicit_als::training::init::interface1::PartialResultBase::set
void set(PartialResultBaseId id, const data_management::KeyValueDataCollectionPtr &ptr)
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:89
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:374
daal::algorithms::implicit_als::training::init::partialModel
Definition: implicit_als_training_init_types.h:105
daal::algorithms::implicit_als::training::init::interface1::Parameter::engine
engines::EnginePtr engine
Definition: implicit_als_training_init_types.h:167
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:451
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:136
daal::algorithms::implicit_als::training::init::Method
Method
Available methods for initializing the implicit ALS algorithm.
Definition: implicit_als_training_init_types.h:56
daal::algorithms::implicit_als::training::init::interface1::PartialResultBase::get
data_management::KeyValueDataCollectionPtr get(PartialResultBaseId id) const
daal::algorithms::implicit_als::training::init::offsets
Definition: implicit_als_training_init_types.h:93
daal::algorithms::implicit_als::training::init::interface1::Input::set
void set(InputId id, const data_management::NumericTablePtr &ptr)
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:506
daal::algorithms::implicit_als::training::init::interface1::Parameter::nFactors
size_t nFactors
Definition: implicit_als_training_init_types.h:164
daal::algorithms::implicit_als::training::init::transposedData
Definition: implicit_als_training_init_types.h:128
daal::algorithms::implicit_als::training::init::defaultDense
Definition: implicit_als_training_init_types.h:58
daal::algorithms::implicit_als::training::init::interface1::Input
Input objects for the implicit ALS initialization algorithm
Definition: implicit_als_training_init_types.h:204
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:180
daal::algorithms::implicit_als::training::init::DistributedPartialResultStep2Id
DistributedPartialResultStep2Id
Definition: implicit_als_training_init_types.h:126
daal::algorithms::implicit_als::training::init::model
Definition: implicit_als_training_init_types.h:138
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:66
daal::step2Local
Definition: daal_defines.h:128

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