TVM  0.9.4
GenericCalculator.h
Go to the documentation of this file.
1 
3 #pragma once
4 
5 #include <tvm/api.h>
6 #include <tvm/defs.h>
7 
11 
12 #include <Eigen/QR>
13 
14 #include <vector>
15 
16 namespace tvm
17 {
18 
19 namespace hint
20 {
21 
22 namespace internal
23 {
33 {
34 public:
36  {
37  public:
38  Impl(const std::vector<LinearConstraintPtr> & cstr, const std::vector<VariablePtr> & x, int rank);
39 
40  virtual void update_() override;
42  MatrixRef outS,
43  const MatrixConstRef & in,
44  bool minus) const override;
45 
46  private:
47  Eigen::ColPivHouseholderQR<Eigen::MatrixXd> qr_;
48  Eigen::MatrixXd invR1R2_; // inv(R1)*R2
49  mutable utils::internal::BufferedMatrix tmp_; // temporary for the premultiplication by Asharp and S^T
50  };
51 
52 protected:
53  std::unique_ptr<abstract::SubstitutionCalculatorImpl> impl_(const std::vector<LinearConstraintPtr> & cstr,
54  const std::vector<VariablePtr> & x,
55  int rank) const override;
56 };
57 
58 } // namespace internal
59 
60 } // namespace hint
61 
62 } // namespace tvm
#define TVM_DLLAPI
Definition: api.h:35
Definition: SubstitutionCalculatorImpl.h:33
Definition: SubstitutionCalculator.h:27
Definition: GenericCalculator.h:36
Impl(const std::vector< LinearConstraintPtr > &cstr, const std::vector< VariablePtr > &x, int rank)
virtual void premultiplyByASharpAndSTranspose_(MatrixRef outA, MatrixRef outS, const MatrixConstRef &in, bool minus) const override
Definition: GenericCalculator.h:33
std::unique_ptr< abstract::SubstitutionCalculatorImpl > impl_(const std::vector< LinearConstraintPtr > &cstr, const std::vector< VariablePtr > &x, int rank) const override
Definition: BufferedMatrix.h:20
Definition: Clock.h:12
Eigen::Ref< Eigen::MatrixXd > MatrixRef
Definition: defs.h:49
Eigen::Ref< const Eigen::MatrixXd > MatrixConstRef
Definition: defs.h:48