C++ API Reference for Intel® Data Analytics Acceleration Library 2019 Update 4

covariance_online.h
1 /* file: covariance_online.h */
2 /*******************************************************************************
3 * Copyright 2014-2019 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 interface for the correlation or variance-covariance
19 // matrix algorithm in the online processing mode
20 //--
21 */
22 
23 #ifndef __COVARIANCE_ONLINE_H__
24 #define __COVARIANCE_ONLINE_H__
25 
26 #include "algorithms/algorithm.h"
27 #include "data_management/data/numeric_table.h"
28 #include "services/daal_defines.h"
29 #include "algorithms/covariance/covariance_types.h"
30 
31 namespace daal
32 {
33 namespace algorithms
34 {
35 namespace covariance
36 {
37 
38 namespace interface1
39 {
53 class OnlineContainerIface : public daal::algorithms::AnalysisContainerIface<online>
54 {
55 public:
56  OnlineContainerIface() {};
57  virtual ~OnlineContainerIface() {}
58 
63  virtual services::Status compute() = 0;
64 
69  virtual services::Status finalizeCompute() = 0;
70 };
71 
80 template<typename algorithmFPType, Method method, CpuType cpu>
81 class DAAL_EXPORT OnlineContainer
82 {};
83 
92 template<typename algorithmFPType, CpuType cpu>
93 class DAAL_EXPORT OnlineContainer<algorithmFPType, defaultDense, cpu> : public OnlineContainerIface
94 {
95 public:
101  OnlineContainer(daal::services::Environment::env *daalEnv);
103  virtual ~OnlineContainer();
104 
109  virtual services::Status compute() DAAL_C11_OVERRIDE;
114  virtual services::Status finalizeCompute() DAAL_C11_OVERRIDE;
115 };
116 
125 template<typename algorithmFPType, CpuType cpu>
126 class DAAL_EXPORT OnlineContainer<algorithmFPType, singlePassDense, cpu> : public OnlineContainerIface
127 {
128 public:
134  OnlineContainer(daal::services::Environment::env *daalEnv);
136  virtual ~OnlineContainer();
137 
142  virtual services::Status compute() DAAL_C11_OVERRIDE;
147  virtual services::Status finalizeCompute() DAAL_C11_OVERRIDE;
148 };
149 
158 template<typename algorithmFPType, CpuType cpu>
159 class DAAL_EXPORT OnlineContainer<algorithmFPType, sumDense, cpu> : public OnlineContainerIface
160 {
161 public:
167  OnlineContainer(daal::services::Environment::env *daalEnv);
169  virtual ~OnlineContainer();
170 
175  virtual services::Status compute() DAAL_C11_OVERRIDE;
180  virtual services::Status finalizeCompute() DAAL_C11_OVERRIDE;
181 };
182 
191 template<typename algorithmFPType, CpuType cpu>
192 class DAAL_EXPORT OnlineContainer<algorithmFPType, fastCSR, cpu> : public OnlineContainerIface
193 {
194 public:
200  OnlineContainer(daal::services::Environment::env *daalEnv);
202  virtual ~OnlineContainer();
203 
208  virtual services::Status compute() DAAL_C11_OVERRIDE;
213  virtual services::Status finalizeCompute() DAAL_C11_OVERRIDE;
214 };
215 
224 template<typename algorithmFPType, CpuType cpu>
225 class DAAL_EXPORT OnlineContainer<algorithmFPType, singlePassCSR, cpu> : public OnlineContainerIface
226 {
227 public:
233  OnlineContainer(daal::services::Environment::env *daalEnv);
235  virtual ~OnlineContainer();
236 
241  virtual services::Status compute() DAAL_C11_OVERRIDE;
246  virtual services::Status finalizeCompute() DAAL_C11_OVERRIDE;
247 };
248 
257 template<typename algorithmFPType, CpuType cpu>
258 class DAAL_EXPORT OnlineContainer<algorithmFPType, sumCSR, cpu> : public OnlineContainerIface
259 {
260 public:
266  OnlineContainer(daal::services::Environment::env *daalEnv);
268  virtual ~OnlineContainer();
269 
274  virtual services::Status compute() DAAL_C11_OVERRIDE;
279  virtual services::Status finalizeCompute() DAAL_C11_OVERRIDE;
280 };
281 
287 class DAAL_EXPORT OnlineImpl : public daal::algorithms::Analysis<online>
288 {
289 public:
290  typedef algorithms::covariance::Input InputType;
291  typedef algorithms::covariance::OnlineParameter ParameterType;
292  typedef algorithms::covariance::Result ResultType;
293  typedef algorithms::covariance::PartialResult PartialResultType;
294 
296  OnlineImpl()
297  {
298  initialize();
299  }
300 
308  OnlineImpl(const OnlineImpl &other) : input(other.input), parameter(other.parameter)
309  {
310  initialize();
311  }
312 
313  virtual ~OnlineImpl() {}
314 
319  ResultPtr getResult()
320  {
321  return _result;
322  }
323 
328  virtual services::Status setResult(const ResultPtr &result)
329  {
330  DAAL_CHECK(result, services::ErrorNullResult)
331  _result = result;
332  _res = _result.get();
333  return services::Status();
334  }
335 
340  PartialResultPtr getPartialResult()
341  {
342  return _partialResult;
343  }
344 
350  virtual services::Status setPartialResult(const PartialResultPtr &partialResult, bool initFlag = false)
351  {
352  DAAL_CHECK(partialResult, services::ErrorNullPartialResult);
353  _partialResult = partialResult;
354  _pres = _partialResult.get();
355  setInitFlag(initFlag);
356  return services::Status();
357  }
358 
365  services::SharedPtr<OnlineImpl> clone() const
366  {
367  return services::SharedPtr<OnlineImpl>(cloneImpl());
368  }
369 
370  InputType input;
371  ParameterType parameter;
373 protected:
374  void initialize()
375  {
376  _in = &input;
377  _par = &parameter;
378  _result.reset(new ResultType());
379  _partialResult.reset(new PartialResult());
380  }
381 
382  virtual OnlineImpl * cloneImpl() const DAAL_C11_OVERRIDE = 0;
383 
384  PartialResultPtr _partialResult;
385  ResultPtr _result;
386 };
387 
388 
409 template<typename algorithmFPType = DAAL_ALGORITHM_FP_TYPE, Method method = defaultDense>
410 class DAAL_EXPORT Online : public OnlineImpl
411 {
412 public:
413  typedef OnlineImpl super;
414 
415  typedef typename super::InputType InputType;
416  typedef typename super::ParameterType ParameterType;
417  typedef typename super::ResultType ResultType;
418  typedef typename super::PartialResultType PartialResultType;
419 
421  Online()
422  {
423  initialize();
424  }
425 
433  Online(const Online<algorithmFPType, method> &other) : OnlineImpl(other)
434  {
435  initialize();
436  }
437 
438  virtual ~Online() {}
439 
444  virtual int getMethod() const DAAL_C11_OVERRIDE { return (int)method; }
445 
452  services::SharedPtr<Online<algorithmFPType, method> > clone() const
453  {
454  return services::SharedPtr<Online<algorithmFPType, method> >(cloneImpl());
455  }
456 
457 protected:
458  virtual Online<algorithmFPType, method> * cloneImpl() const DAAL_C11_OVERRIDE
459  {
460  return new Online<algorithmFPType, method>(*this);
461  }
462 
463  virtual services::Status allocateResult() DAAL_C11_OVERRIDE
464  {
465  services::Status s = _result->allocate<algorithmFPType>(_partialResult.get(), _par, (int)method);
466  _res = _result.get();
467  _pres = _partialResult.get();
468  return services::Status();
469  }
470 
471  virtual services::Status allocatePartialResult() DAAL_C11_OVERRIDE
472  {
473  services::Status s = _partialResult->allocate<algorithmFPType>(&input, _par, (int)method);
474  _pres = _partialResult.get();
475  return s;
476  }
477 
478  virtual services::Status initializePartialResult() DAAL_C11_OVERRIDE
479  {
480  services::Status s = _partialResult->initialize<algorithmFPType>(&input, _par, (int)method);
481  _pres = _partialResult.get();
482  return services::Status();
483  }
484 
485  void initialize()
486  {
487  this->_ac = new __DAAL_ALGORITHM_CONTAINER(online, OnlineContainer, algorithmFPType, method)(&_env);
488  }
489 };
491 } // namespace interface1
492 using interface1::OnlineContainerIface;
493 using interface1::OnlineContainer;
494 using interface1::OnlineImpl;
495 using interface1::Online;
496 
497 } // namespace daal::algorithms::covariance
498 } // namespace daal::algorithms
499 } // namespace daal
500 #endif
daal::algorithms::covariance::singlePassCSR
Definition: covariance_types.h:54
daal
Definition: algorithm_base_common.h:31
daal::algorithms::AnalysisContainerIface
Abstract interface class that provides virtual methods to access and run implementations of the analy...
Definition: analysis.h:53
daal::algorithms::covariance::interface1::OnlineContainer
Provides methods to run implementations of the correlation or variance-covariance matrix algorithm...
Definition: covariance_online.h:81
daal::algorithms::covariance::interface1::OnlineImpl::setPartialResult
virtual services::Status setPartialResult(const PartialResultPtr &partialResult, bool initFlag=false)
Definition: covariance_online.h:350
daal::services::ErrorNullPartialResult
Definition: error_indexes.h:105
daal::algorithms::covariance::interface1::OnlineImpl::setResult
virtual services::Status setResult(const ResultPtr &result)
Definition: covariance_online.h:328
daal::algorithms::covariance::interface1::OnlineImpl::OnlineImpl
OnlineImpl(const OnlineImpl &other)
Definition: covariance_online.h:308
daal::algorithms::covariance::interface1::OnlineContainerIface
Class that spcifies interfaces of implementations of the correlation or variance-covariance matrix al...
Definition: covariance_online.h:53
daal::algorithms::covariance::interface1::OnlineImpl
Abstract class that specifies interface of the algorithms for computing correlation or variance-covar...
Definition: covariance_online.h:287
daal::algorithms::covariance::interface1::Online::Online
Online(const Online< algorithmFPType, method > &other)
Definition: covariance_online.h:433
daal::algorithms::covariance::interface1::OnlineImpl::parameter
ParameterType parameter
Definition: covariance_online.h:371
daal::algorithms::covariance::Method
Method
Definition: covariance_types.h:46
daal::algorithms::covariance::interface1::Online::getMethod
virtual int getMethod() const DAAL_C11_OVERRIDE
Definition: covariance_online.h:444
daal::algorithms::covariance::interface1::Online
Computes correlation or variance-covariance matrix in the online processing mode. ...
Definition: covariance_online.h:410
daal::algorithms::covariance::interface1::OnlineContainerIface::compute
virtual services::Status compute()=0
daal_defines.h
daal::algorithms::covariance::sumDense
Definition: covariance_types.h:51
daal::algorithms::covariance::interface1::OnlineImpl::input
InputType input
Definition: covariance_online.h:370
daal::algorithms::covariance::fastCSR
Definition: covariance_types.h:53
daal::algorithms::covariance::sumCSR
Definition: covariance_types.h:56
daal::algorithms::covariance::interface1::PartialResult
Provides methods to access partial results obtained with the compute() method of the correlation or v...
Definition: covariance_types.h:178
daal::algorithms::covariance::interface1::Online::Online
Online()
Definition: covariance_online.h:421
daal::algorithms::covariance::interface1::OnlineImpl::OnlineImpl
OnlineImpl()
Definition: covariance_online.h:296
daal::algorithms::covariance::interface1::OnlineImpl::getPartialResult
PartialResultPtr getPartialResult()
Definition: covariance_online.h:340
daal::algorithms::covariance::interface1::OnlineContainerIface::finalizeCompute
virtual services::Status finalizeCompute()=0
daal::algorithms::covariance::interface1::OnlineImpl::clone
services::SharedPtr< OnlineImpl > clone() const
Definition: covariance_online.h:365
daal::algorithms::Analysis
Provides methods for execution of operations over data, such as computation of Summary Statistics est...
Definition: analysis.h:68
daal::algorithms::covariance::covariance
Definition: covariance_types.h:88
daal::online
Definition: daal_defines.h:112
daal::algorithms::covariance::defaultDense
Definition: covariance_types.h:48
daal::algorithms::covariance::interface1::Online::clone
services::SharedPtr< Online< algorithmFPType, method > > clone() const
Definition: covariance_online.h:452
daal::services::ErrorNullResult
Definition: error_indexes.h:96
daal::algorithms::covariance::singlePassDense
Definition: covariance_types.h:49
daal::algorithms::covariance::interface1::OnlineImpl::getResult
ResultPtr getResult()
Definition: covariance_online.h:319

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