InfiniOps
Operator Library for Accelerators
Loading...
Searching...
No Matches
linalg_matrix_rank.h
Go to the documentation of this file.
1#ifndef INFINI_OPS_BASE_LINALG_MATRIX_RANK_H_
2#define INFINI_OPS_BASE_LINALG_MATRIX_RANK_H_
3
4#include <optional>
5
6#include "operator.h"
7
8namespace infini::ops::linalg {
9
10class MatrixRank : public Operator<MatrixRank> {
11 public:
12 MatrixRank(const Tensor input, const double tol, const bool hermitian,
13 Tensor out)
14 : input_shape_{input.shape()},
15 input_strides_{input.strides()},
16 input_type_{input.dtype()},
17 out_shape_{out.shape()},
18 out_strides_{out.strides()},
19 out_type_{out.dtype()},
20 tol_{tol},
21 hermitian_{hermitian},
22 device_index_{out.device().index()} {}
23
24 MatrixRank(const Tensor input, const std::optional<Tensor> atol,
25 const std::optional<Tensor> rtol, const bool hermitian, Tensor out)
26 : input_shape_{input.shape()},
27 input_strides_{input.strides()},
28 input_type_{input.dtype()},
29 out_shape_{out.shape()},
30 out_strides_{out.strides()},
31 out_type_{out.dtype()},
32 has_atol_{atol.has_value()},
33 atol_shape_{atol ? Tensor::Shape{atol->shape()} : Tensor::Shape{}},
34 atol_strides_{atol ? Tensor::Strides{atol->strides()}
35 : Tensor::Strides{}},
36 atol_type_{atol ? atol->dtype() : DataType::kFloat32},
37 has_rtol_{rtol.has_value()},
38 rtol_shape_{rtol ? Tensor::Shape{rtol->shape()} : Tensor::Shape{}},
39 rtol_strides_{rtol ? Tensor::Strides{rtol->strides()}
40 : Tensor::Strides{}},
41 rtol_type_{rtol ? rtol->dtype() : DataType::kFloat32},
42 hermitian_{hermitian},
43 device_index_{out.device().index()} {}
44
45 MatrixRank(const Tensor input, const std::optional<double> atol,
46 const std::optional<double> rtol, const bool hermitian, Tensor out)
47 : input_shape_{input.shape()},
48 input_strides_{input.strides()},
49 input_type_{input.dtype()},
50 out_shape_{out.shape()},
51 out_strides_{out.strides()},
52 out_type_{out.dtype()},
53 hermitian_{hermitian},
54 atol_{atol},
55 rtol_{rtol},
56 device_index_{out.device().index()} {}
57
58 MatrixRank(const Tensor input, const Tensor tol, const bool hermitian,
59 Tensor out)
60 : input_shape_{input.shape()},
61 input_strides_{input.strides()},
62 input_type_{input.dtype()},
63 out_shape_{out.shape()},
64 out_strides_{out.strides()},
65 out_type_{out.dtype()},
66 tol_shape_{tol.shape()},
67 tol_strides_{tol.strides()},
68 tol_type_{tol.dtype()},
69 hermitian_{hermitian},
70 device_index_{out.device().index()} {}
71
72 virtual void operator()(const Tensor input, const double tol,
73 const bool hermitian, Tensor out) const = 0;
74
75 virtual void operator()(const Tensor input, const std::optional<Tensor> atol,
76 const std::optional<Tensor> rtol,
77 const bool hermitian, Tensor out) const = 0;
78
79 virtual void operator()(const Tensor input, const std::optional<double> atol,
80 const std::optional<double> rtol,
81 const bool hermitian, Tensor out) const = 0;
82
83 virtual void operator()(const Tensor input, const Tensor tol,
84 const bool hermitian, Tensor out) const = 0;
85
86 protected:
87 Tensor::Shape input_shape_;
88
89 Tensor::Strides input_strides_;
90
91 DataType input_type_;
92
93 Tensor::Shape out_shape_;
94
95 Tensor::Strides out_strides_;
96
97 DataType out_type_;
98
99 double tol_{};
100
102
103 bool has_atol_{false};
104
105 Tensor::Shape atol_shape_;
106
107 Tensor::Strides atol_strides_;
108
109 DataType atol_type_{DataType::kFloat32};
110
111 bool has_rtol_{false};
112
113 Tensor::Shape rtol_shape_;
114
115 Tensor::Strides rtol_strides_;
116
117 DataType rtol_type_{DataType::kFloat32};
118
119 std::optional<double> atol_{};
120
121 std::optional<double> rtol_{};
122
123 Tensor::Shape tol_shape_;
124
125 Tensor::Strides tol_strides_;
126
127 DataType tol_type_;
128
130};
131
132} // namespace infini::ops::linalg
133
134#endif
Definition generated/include/operator.h:282
Definition linalg_matrix_rank.h:10
MatrixRank(const Tensor input, const std::optional< Tensor > atol, const std::optional< Tensor > rtol, const bool hermitian, Tensor out)
Definition linalg_matrix_rank.h:24
Tensor::Shape rtol_shape_
Definition linalg_matrix_rank.h:113
MatrixRank(const Tensor input, const std::optional< double > atol, const std::optional< double > rtol, const bool hermitian, Tensor out)
Definition linalg_matrix_rank.h:45
bool has_rtol_
Definition linalg_matrix_rank.h:111
MatrixRank(const Tensor input, const Tensor tol, const bool hermitian, Tensor out)
Definition linalg_matrix_rank.h:58
Tensor::Strides rtol_strides_
Definition linalg_matrix_rank.h:115
DataType input_type_
Definition linalg_matrix_rank.h:91
Tensor::Shape input_shape_
Definition linalg_matrix_rank.h:87
virtual void operator()(const Tensor input, const std::optional< double > atol, const std::optional< double > rtol, const bool hermitian, Tensor out) const =0
DataType rtol_type_
Definition linalg_matrix_rank.h:117
DataType tol_type_
Definition linalg_matrix_rank.h:127
Tensor::Strides tol_strides_
Definition linalg_matrix_rank.h:125
virtual void operator()(const Tensor input, const Tensor tol, const bool hermitian, Tensor out) const =0
virtual void operator()(const Tensor input, const std::optional< Tensor > atol, const std::optional< Tensor > rtol, const bool hermitian, Tensor out) const =0
DataType out_type_
Definition linalg_matrix_rank.h:97
int device_index_
Definition linalg_matrix_rank.h:129
Tensor::Shape atol_shape_
Definition linalg_matrix_rank.h:105
double tol_
Definition linalg_matrix_rank.h:99
Tensor::Strides input_strides_
Definition linalg_matrix_rank.h:89
Tensor::Shape out_shape_
Definition linalg_matrix_rank.h:93
Tensor::Strides atol_strides_
Definition linalg_matrix_rank.h:107
DataType atol_type_
Definition linalg_matrix_rank.h:109
bool has_atol_
Definition linalg_matrix_rank.h:103
Tensor::Strides out_strides_
Definition linalg_matrix_rank.h:95
std::optional< double > rtol_
Definition linalg_matrix_rank.h:121
virtual void operator()(const Tensor input, const double tol, const bool hermitian, Tensor out) const =0
Tensor::Shape tol_shape_
Definition linalg_matrix_rank.h:123
MatrixRank(const Tensor input, const double tol, const bool hermitian, Tensor out)
Definition linalg_matrix_rank.h:12
std::optional< double > atol_
Definition linalg_matrix_rank.h:119
bool hermitian_
Definition linalg_matrix_rank.h:101
Definition linalg_cholesky.h:6
infini::rt::TensorView Tensor
Definition tensor.h:8