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

iterative_solver_types.h
1 /* file: iterative_solver_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 iterative solver algorithm types.
21 //--
22 */
23 
24 #ifndef __ITERATIVE_SOLVER_TYPES_H__
25 #define __ITERATIVE_SOLVER_TYPES_H__
26 
27 #include "algorithms/algorithm.h"
28 #include "data_management/data/numeric_table.h"
29 #include "data_management/data/homogen_numeric_table.h"
30 #include "services/daal_defines.h"
31 #include "algorithms/optimization_solver/objective_function/sum_of_functions_batch.h"
32 
33 namespace daal
34 {
35 namespace algorithms
36 {
37 namespace optimization_solver
38 {
48 namespace iterative_solver
49 {
50 
55 enum InputId
56 {
57  inputArgument,
58  lastInputId = inputArgument
59 };
60 
65 enum OptionalInputId
66 {
67  optionalArgument = lastInputId + 1,
68  lastOptionalInputId = optionalArgument
69 };
70 
75 enum ResultId
76 {
77  minimum,
78  nIterations,
79  lastResultId = nIterations
80 };
81 
86 enum OptionalResultId
87 {
88  optionalResult = lastResultId + 1,
89  lastOptionalResultId = optionalResult
90 };
91 
96 enum OptionalDataId
97 {
98  lastIteration,
99  lastOptionalData = lastIteration
100 };
101 
105 namespace interface1
106 {
107 
114 /* [interface1::Parameter source code] */
115 struct DAAL_EXPORT Parameter : public daal::algorithms::Parameter
116 {
125  Parameter(const sum_of_functions::interface1::BatchPtr &function_, size_t nIterations_ = 100,
126  double accuracyThreshold_ = 1.0e-05, bool optionalResultReq_ = false, size_t batchSize_ = 1);
127 
132  Parameter(const Parameter &other);
133 
134  virtual ~Parameter() {}
135 
141  virtual services::Status check() const;
142 
143  sum_of_functions::interface1::BatchPtr function;
144  size_t nIterations;
145  double accuracyThreshold;
147  bool optionalResultRequired;
148  size_t batchSize;
153 };
154 /* [interface1::Parameter source code] */
155 
160 class DAAL_EXPORT Input : public daal::algorithms::Input
161 {
162 public:
163  Input();
164  Input(const Input& other);
165 
166  virtual ~Input() {}
167 
173  data_management::NumericTablePtr get(InputId id) const;
174 
180  algorithms::OptionalArgumentPtr get(OptionalInputId id) const;
181 
187  data_management::NumericTablePtr get(OptionalDataId id) const;
188 
194  void set(InputId id, const data_management::NumericTablePtr &ptr);
195 
201  void set(OptionalInputId id, const algorithms::OptionalArgumentPtr &ptr);
202 
208  void set(OptionalDataId id, const data_management::NumericTablePtr &ptr);
216  services::Status check(const daal::algorithms::Parameter *par, int method) const DAAL_C11_OVERRIDE;
217 };
218 
223 class DAAL_EXPORT Result : public daal::algorithms::Result
224 {
225 public:
226  DECLARE_SERIALIZABLE_CAST(Result);
227  Result() : daal::algorithms::Result(lastOptionalResultId + 1)
228  {}
229 
230  virtual ~Result() {};
231 
240  template <typename algorithmFPType>
241  DAAL_EXPORT services::Status allocate(const daal::algorithms::Input *input, const daal::algorithms::Parameter *par, const int method);
242 
248  data_management::NumericTablePtr get(ResultId id) const;
249 
255  algorithms::OptionalArgumentPtr get(OptionalResultId id) const;
256 
262  data_management::NumericTablePtr get(OptionalDataId id) const;
263 
269  void set(ResultId id, const data_management::NumericTablePtr &ptr);
270 
276  void set(OptionalResultId id, const algorithms::OptionalArgumentPtr &ptr);
277 
283  void set(OptionalDataId id, const data_management::NumericTablePtr &ptr);
284 
293  services::Status check(const daal::algorithms::Input *input, const daal::algorithms::Parameter *par,
294  int method) const DAAL_C11_OVERRIDE;
295 
296 protected:
298  template<typename Archive, bool onDeserialize>
299  services::Status serialImpl(Archive *arch)
300  {
301  return daal::algorithms::Result::serialImpl<Archive, onDeserialize>(arch);
302  }
303 };
304 typedef services::SharedPtr<Result> ResultPtr;
305 
307 } // namespace interface1
308 
312 namespace interface2
313 {
314 
321 /* [Parameter source code] */
322 struct DAAL_EXPORT Parameter : public daal::algorithms::Parameter
323 {
332  Parameter(const sum_of_functions::BatchPtr &function_, size_t nIterations_ = 100,
333  double accuracyThreshold_ = 1.0e-05, bool optionalResultReq_ = false, size_t batchSize_ = 1);
334 
339  Parameter(const Parameter &other);
340 
341  virtual ~Parameter() {}
342 
348  virtual services::Status check() const;
349 
350  sum_of_functions::BatchPtr function;
351  size_t nIterations;
352  double accuracyThreshold;
354  bool optionalResultRequired;
355  size_t batchSize;
360 };
361 /* [Parameter source code] */
362 
367 class DAAL_EXPORT Input : public daal::algorithms::Input
368 {
369 public:
370  Input();
371  Input(const Input& other);
372 
373  virtual ~Input() {}
374 
380  data_management::NumericTablePtr get(InputId id) const;
381 
387  algorithms::OptionalArgumentPtr get(OptionalInputId id) const;
388 
394  data_management::NumericTablePtr get(OptionalDataId id) const;
395 
401  void set(InputId id, const data_management::NumericTablePtr &ptr);
402 
408  void set(OptionalInputId id, const algorithms::OptionalArgumentPtr &ptr);
409 
415  void set(OptionalDataId id, const data_management::NumericTablePtr &ptr);
423  services::Status check(const daal::algorithms::Parameter *par, int method) const DAAL_C11_OVERRIDE;
424 };
425 
430 class DAAL_EXPORT Result : public daal::algorithms::Result
431 {
432 public:
433  DECLARE_SERIALIZABLE_CAST(Result);
434  Result() : daal::algorithms::Result(lastOptionalResultId + 1)
435  {}
436 
437  virtual ~Result() {};
438 
447  template <typename algorithmFPType>
448  DAAL_EXPORT services::Status allocate(const daal::algorithms::Input *input, const daal::algorithms::Parameter *par, const int method);
449 
455  data_management::NumericTablePtr get(ResultId id) const;
456 
462  algorithms::OptionalArgumentPtr get(OptionalResultId id) const;
463 
469  data_management::NumericTablePtr get(OptionalDataId id) const;
470 
476  void set(ResultId id, const data_management::NumericTablePtr &ptr);
477 
483  void set(OptionalResultId id, const algorithms::OptionalArgumentPtr &ptr);
484 
490  void set(OptionalDataId id, const data_management::NumericTablePtr &ptr);
491 
500  services::Status check(const daal::algorithms::Input *input, const daal::algorithms::Parameter *par,
501  int method) const DAAL_C11_OVERRIDE;
502 
503 protected:
505  template<typename Archive, bool onDeserialize>
506  services::Status serialImpl(Archive *arch)
507  {
508  return daal::algorithms::Result::serialImpl<Archive, onDeserialize>(arch);
509  }
510 };
511 typedef services::SharedPtr<Result> ResultPtr;
512 
514 } // namespace interface2
515 using interface2::Parameter;
516 using interface2::Input;
517 using interface2::Result;
518 using interface2::ResultPtr;
519 
520 } // namespace iterative_solver
521 } // namespace optimization_solver
522 } // namespace algorithm
523 } // namespace daal
524 #endif
daal::algorithms::optimization_solver::iterative_solver::lastIteration
Definition: iterative_solver_types.h:98
daal::algorithms::optimization_solver::iterative_solver::interface2::Input
Input parameters for the iterative solver algorithm
Definition: iterative_solver_types.h:367
daal::algorithms::optimization_solver::iterative_solver::OptionalResultId
OptionalResultId
Definition: iterative_solver_types.h:86
daal::algorithms::optimization_solver::iterative_solver::interface2::Parameter::accuracyThreshold
double accuracyThreshold
Definition: iterative_solver_types.h:352
daal::algorithms::optimization_solver::iterative_solver::InputId
InputId
Definition: iterative_solver_types.h:55
daal::algorithms::optimization_solver::iterative_solver::interface2::Parameter::nIterations
size_t nIterations
Definition: iterative_solver_types.h:351
daal::algorithms::optimization_solver::iterative_solver::interface1::Parameter::batchSize
size_t batchSize
Definition: iterative_solver_types.h:148
daal_defines.h
daal::algorithms::optimization_solver::iterative_solver::interface2::Parameter
Parameter base class for the iterative solver algorithm
Definition: iterative_solver_types.h:322
daal::algorithms::optimization_solver::iterative_solver::optionalArgument
Definition: iterative_solver_types.h:67
daal::algorithms::optimization_solver::iterative_solver::interface2::Parameter::batchSize
size_t batchSize
Definition: iterative_solver_types.h:355
daal::algorithms::optimization_solver::iterative_solver::ResultId
ResultId
Definition: iterative_solver_types.h:75
daal::algorithms::optimization_solver::iterative_solver::OptionalInputId
OptionalInputId
Definition: iterative_solver_types.h:65
daal::algorithms::optimization_solver::iterative_solver::interface1::Input
Input parameters for the iterative solver algorithm
Definition: iterative_solver_types.h:160
daal::algorithms::optimization_solver::iterative_solver::minimum
Definition: iterative_solver_types.h:77
daal::algorithms::optimization_solver::iterative_solver::optionalResult
Definition: iterative_solver_types.h:88
daal::algorithms::optimization_solver::iterative_solver::interface2::Result
Results obtained with the compute() method of the iterative solver algorithm in the batch processing ...
Definition: iterative_solver_types.h:430
daal::algorithms::optimization_solver::iterative_solver::nIterations
Definition: iterative_solver_types.h:78
daal::algorithms::optimization_solver::iterative_solver::interface2::Parameter::optionalResultRequired
bool optionalResultRequired
Definition: iterative_solver_types.h:354
daal::algorithms::optimization_solver::iterative_solver::OptionalDataId
OptionalDataId
Definition: iterative_solver_types.h:96
daal::algorithms::optimization_solver::iterative_solver::interface1::Result
Results obtained with the compute() method of the iterative solver algorithm in the batch processing ...
Definition: iterative_solver_types.h:223
daal::algorithms::optimization_solver::iterative_solver::interface1::Parameter::accuracyThreshold
double accuracyThreshold
Definition: iterative_solver_types.h:145
daal::algorithms::optimization_solver::iterative_solver::interface1::Parameter
Parameter base class for the iterative solver algorithm
Definition: iterative_solver_types.h:115
daal::algorithms::optimization_solver::iterative_solver::inputArgument
Definition: iterative_solver_types.h:57
daal::algorithms::optimization_solver::iterative_solver::interface1::Parameter::optionalResultRequired
bool optionalResultRequired
Definition: iterative_solver_types.h:147
daal::algorithms::optimization_solver::iterative_solver::interface1::Parameter::nIterations
size_t nIterations
Definition: iterative_solver_types.h:144

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