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

covariance_online.h
1 /* file: covariance_online.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 interface for the correlation or variance-covariance
21 // matrix algorithm in the online processing mode
22 //--
23 */
24 
25 #ifndef __COVARIANCE_ONLINE_H__
26 #define __COVARIANCE_ONLINE_H__
27 
28 #include "algorithms/algorithm.h"
29 #include "data_management/data/numeric_table.h"
30 #include "services/daal_defines.h"
31 #include "algorithms/covariance/covariance_types.h"
32 
33 namespace daal
34 {
35 namespace algorithms
36 {
37 namespace covariance
38 {
39 
40 namespace interface1
41 {
55 class OnlineContainerIface : public daal::algorithms::AnalysisContainerIface<online>
56 {
57 public:
58  OnlineContainerIface() {}
59  virtual ~OnlineContainerIface() {}
60 
65  virtual services::Status compute() = 0;
66 
71  virtual services::Status finalizeCompute() = 0;
72 };
73 
82 template<typename algorithmFPType, Method method, CpuType cpu>
83 class OnlineContainer
84 {};
85 
94 template<typename algorithmFPType, CpuType cpu>
95 class OnlineContainer<algorithmFPType, defaultDense, cpu> : public OnlineContainerIface
96 {
97 public:
103  OnlineContainer(daal::services::Environment::env *daalEnv);
105  virtual ~OnlineContainer();
106 
111  virtual services::Status compute() DAAL_C11_OVERRIDE;
116  virtual services::Status finalizeCompute() DAAL_C11_OVERRIDE;
117 };
118 
127 template<typename algorithmFPType, CpuType cpu>
128 class OnlineContainer<algorithmFPType, singlePassDense, cpu> : public OnlineContainerIface
129 {
130 public:
136  OnlineContainer(daal::services::Environment::env *daalEnv);
138  virtual ~OnlineContainer();
139 
144  virtual services::Status compute() DAAL_C11_OVERRIDE;
149  virtual services::Status finalizeCompute() DAAL_C11_OVERRIDE;
150 };
151 
160 template<typename algorithmFPType, CpuType cpu>
161 class OnlineContainer<algorithmFPType, sumDense, cpu> : public OnlineContainerIface
162 {
163 public:
169  OnlineContainer(daal::services::Environment::env *daalEnv);
171  virtual ~OnlineContainer();
172 
177  virtual services::Status compute() DAAL_C11_OVERRIDE;
182  virtual services::Status finalizeCompute() DAAL_C11_OVERRIDE;
183 };
184 
193 template<typename algorithmFPType, CpuType cpu>
194 class OnlineContainer<algorithmFPType, fastCSR, cpu> : public OnlineContainerIface
195 {
196 public:
202  OnlineContainer(daal::services::Environment::env *daalEnv);
204  virtual ~OnlineContainer();
205 
210  virtual services::Status compute() DAAL_C11_OVERRIDE;
215  virtual services::Status finalizeCompute() DAAL_C11_OVERRIDE;
216 };
217 
226 template<typename algorithmFPType, CpuType cpu>
227 class OnlineContainer<algorithmFPType, singlePassCSR, cpu> : public OnlineContainerIface
228 {
229 public:
235  OnlineContainer(daal::services::Environment::env *daalEnv);
237  virtual ~OnlineContainer();
238 
243  virtual services::Status compute() DAAL_C11_OVERRIDE;
248  virtual services::Status finalizeCompute() DAAL_C11_OVERRIDE;
249 };
250 
259 template<typename algorithmFPType, CpuType cpu>
260 class OnlineContainer<algorithmFPType, sumCSR, cpu> : public OnlineContainerIface
261 {
262 public:
268  OnlineContainer(daal::services::Environment::env *daalEnv);
270  virtual ~OnlineContainer();
271 
276  virtual services::Status compute() DAAL_C11_OVERRIDE;
281  virtual services::Status finalizeCompute() DAAL_C11_OVERRIDE;
282 };
283 
289 class DAAL_EXPORT OnlineImpl : public daal::algorithms::Analysis<online>
290 {
291 public:
292  typedef algorithms::covariance::Input InputType;
293  typedef algorithms::covariance::OnlineParameter ParameterType;
294  typedef algorithms::covariance::Result ResultType;
295  typedef algorithms::covariance::PartialResult PartialResultType;
296 
298  OnlineImpl()
299  {
300  initialize();
301  }
302 
310  OnlineImpl(const OnlineImpl &other) : input(other.input), parameter(other.parameter)
311  {
312  initialize();
313  }
314 
315  virtual ~OnlineImpl() {}
316 
321  ResultPtr getResult()
322  {
323  return _result;
324  }
325 
330  virtual services::Status setResult(const ResultPtr &result)
331  {
332  DAAL_CHECK(result, services::ErrorNullResult)
333  _result = result;
334  _res = _result.get();
335  return services::Status();
336  }
337 
342  PartialResultPtr getPartialResult()
343  {
344  return _partialResult;
345  }
346 
352  virtual services::Status setPartialResult(const PartialResultPtr &partialResult, bool initFlag = false)
353  {
354  DAAL_CHECK(partialResult, services::ErrorNullPartialResult);
355  _partialResult = partialResult;
356  _pres = _partialResult.get();
357  setInitFlag(initFlag);
358  return services::Status();
359  }
360 
367  services::SharedPtr<OnlineImpl> clone() const
368  {
369  return services::SharedPtr<OnlineImpl>(cloneImpl());
370  }
371 
372  InputType input;
373  ParameterType parameter;
375 protected:
376  void initialize()
377  {
378  _in = &input;
379  _par = &parameter;
380  _result.reset(new ResultType());
381  _partialResult.reset(new PartialResult());
382  }
383 
384  virtual OnlineImpl * cloneImpl() const DAAL_C11_OVERRIDE = 0;
385 
386  PartialResultPtr _partialResult;
387  ResultPtr _result;
388 };
389 
390 
411 template<typename algorithmFPType = DAAL_ALGORITHM_FP_TYPE, Method method = defaultDense>
412 class DAAL_EXPORT Online : public OnlineImpl
413 {
414 public:
415  typedef OnlineImpl super;
416 
417  typedef typename super::InputType InputType;
418  typedef typename super::ParameterType ParameterType;
419  typedef typename super::ResultType ResultType;
420  typedef typename super::PartialResultType PartialResultType;
421 
423  Online()
424  {
425  initialize();
426  }
427 
435  Online(const Online<algorithmFPType, method> &other) : OnlineImpl(other)
436  {
437  initialize();
438  }
439 
440  virtual ~Online() {}
441 
446  virtual int getMethod() const DAAL_C11_OVERRIDE { return (int)method; }
447 
454  services::SharedPtr<Online<algorithmFPType, method> > clone() const
455  {
456  return services::SharedPtr<Online<algorithmFPType, method> >(cloneImpl());
457  }
458 
459 protected:
460  virtual Online<algorithmFPType, method> * cloneImpl() const DAAL_C11_OVERRIDE
461  {
462  return new Online<algorithmFPType, method>(*this);
463  }
464 
465  virtual services::Status allocateResult() DAAL_C11_OVERRIDE
466  {
467  services::Status s = _result->allocate<algorithmFPType>(_partialResult.get(), _par, (int)method);
468  _res = _result.get();
469  _pres = _partialResult.get();
470  return services::Status();
471  }
472 
473  virtual services::Status allocatePartialResult() DAAL_C11_OVERRIDE
474  {
475  services::Status s = _partialResult->allocate<algorithmFPType>(&input, _par, (int)method);
476  _pres = _partialResult.get();
477  return s;
478  }
479 
480  virtual services::Status initializePartialResult() DAAL_C11_OVERRIDE
481  {
482  services::Status s = _partialResult->initialize<algorithmFPType>(&input, _par, (int)method);
483  _pres = _partialResult.get();
484  return services::Status();
485  }
486 
487  void initialize()
488  {
489  this->_ac = new __DAAL_ALGORITHM_CONTAINER(online, OnlineContainer, algorithmFPType, method)(&_env);
490  }
491 };
493 } // namespace interface1
494 using interface1::OnlineContainerIface;
495 using interface1::OnlineContainer;
496 using interface1::OnlineImpl;
497 using interface1::Online;
498 
499 } // namespace daal::algorithms::covariance
500 } // namespace daal::algorithms
501 } // namespace daal
502 #endif
daal::algorithms::covariance::interface1::Online::Online
Online()
Definition: covariance_online.h:423
daal::algorithms::covariance::interface1::OnlineContainerIface
Class that spcifies interfaces of implementations of the correlation or variance-covariance matrix al...
Definition: covariance_online.h:55
daal::algorithms::covariance::interface1::OnlineContainer
Provides methods to run implementations of the correlation or variance-covariance matrix algorithm...
Definition: covariance_online.h:83
daal::algorithms::covariance::interface1::OnlineImpl::parameter
ParameterType parameter
Definition: covariance_online.h:373
daal::algorithms::covariance::interface1::Online::clone
services::SharedPtr< Online< algorithmFPType, method > > clone() const
Definition: covariance_online.h:454
daal::algorithms::covariance::covariance
Definition: covariance_types.h:90
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:180
daal::algorithms::covariance::Method
Method
Definition: covariance_types.h:48
daal::algorithms::covariance::interface1::Online::Online
Online(const Online< algorithmFPType, method > &other)
Definition: covariance_online.h:435
daal::algorithms::covariance::interface1::OnlineImpl::getResult
ResultPtr getResult()
Definition: covariance_online.h:321
daal::algorithms::covariance::defaultDense
Definition: covariance_types.h:50
daal::services::ErrorNullResult
Definition: error_indexes.h:98
daal::algorithms::covariance::interface1::OnlineImpl::OnlineImpl
OnlineImpl(const OnlineImpl &other)
Definition: covariance_online.h:310
daal::algorithms::AnalysisContainerIface
Abstract interface class that provides virtual methods to access and run implementations of the analy...
Definition: analysis.h:55
daal::algorithms::covariance::interface1::OnlineContainerIface::finalizeCompute
virtual services::Status finalizeCompute()=0
daal::algorithms::covariance::sumCSR
Definition: covariance_types.h:58
daal::algorithms::covariance::interface1::OnlineImpl::setPartialResult
virtual services::Status setPartialResult(const PartialResultPtr &partialResult, bool initFlag=false)
Definition: covariance_online.h:352
daal_defines.h
daal::algorithms::covariance::interface1::OnlineContainerIface::compute
virtual services::Status compute()=0
daal::online
Definition: daal_defines.h:114
daal::algorithms::covariance::singlePassCSR
Definition: covariance_types.h:56
daal::algorithms::covariance::interface1::OnlineImpl::clone
services::SharedPtr< OnlineImpl > clone() const
Definition: covariance_online.h:367
daal::algorithms::covariance::fastCSR
Definition: covariance_types.h:55
daal::algorithms::covariance::interface1::OnlineImpl
Abstract class that specifies interface of the algorithms for computing correlation or variance-covar...
Definition: covariance_online.h:289
daal::algorithms::covariance::singlePassDense
Definition: covariance_types.h:51
daal::algorithms::covariance::interface1::Online
Computes correlation or variance-covariance matrix in the online processing mode. ...
Definition: covariance_online.h:412
daal::algorithms::covariance::interface1::OnlineImpl::OnlineImpl
OnlineImpl()
Definition: covariance_online.h:298
daal::algorithms::covariance::sumDense
Definition: covariance_types.h:53
daal::algorithms::covariance::interface1::OnlineImpl::getPartialResult
PartialResultPtr getPartialResult()
Definition: covariance_online.h:342
daal::algorithms::Analysis
Provides methods for execution of operations over data, such as computation of Summary Statistics est...
Definition: analysis.h:70
daal::algorithms::covariance::interface1::OnlineImpl::setResult
virtual services::Status setResult(const ResultPtr &result)
Definition: covariance_online.h:330
daal::algorithms::covariance::interface1::OnlineImpl::input
InputType input
Definition: covariance_online.h:372
daal::services::ErrorNullPartialResult
Definition: error_indexes.h:107
daal::algorithms::covariance::interface1::Online::getMethod
virtual int getMethod() const DAAL_C11_OVERRIDE
Definition: covariance_online.h:446

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