Uni20
Asynchronous tensor and runtime library.
Loading...
Searching...
No Matches
operation_tags.hpp
Go to the documentation of this file.
1#pragma once
2
11
12#include <cstddef>
13#include <string_view>
14#include <type_traits>
15
16namespace uni20::linalg
17{
18
21{
22 static constexpr std::string_view name = "least_squares";
23};
24
27{
28 static constexpr std::string_view name = "svd_least_squares";
29};
30
32struct copy_op
33{
34 static constexpr std::string_view name = "copy";
35};
36
39{
40 static constexpr std::string_view name = "conjugate_inplace";
41};
42
47template <class Function> struct transform_op
48{
49 static constexpr std::string_view name = "transform";
50 [[no_unique_address]] Function function;
51};
52
54template <class Function> transform_op(Function) -> transform_op<std::decay_t<Function>>;
55
60template <class Function> struct transform_inplace_op
61{
62 static constexpr std::string_view name = "transform_inplace";
63 [[no_unique_address]] Function function;
64};
65
68
75{
76 static constexpr std::string_view name = "assign_product";
77};
78
83struct gemm_op
84{
85 static constexpr std::string_view name = "gemm";
86};
87
89struct gemv_op
90{
91 static constexpr std::string_view name = "gemv";
92};
93
97template <std::size_t LhsRank, std::size_t RhsRank, std::size_t ContractedRank> struct contract_op
98{
99 static constexpr std::string_view name = "contract";
101};
102
105{
106 static constexpr std::string_view name = "inner_product";
107};
108
111{
112 static constexpr std::string_view name = "norm";
113};
114
118enum class MatrixNorm
119{
121 MaxAbs,
123 One,
125 Infinity,
128};
129
135{
136 static constexpr std::string_view name = "matrix_norm";
138};
139
142{
143 static constexpr std::string_view name = "lu_rcond";
145};
146
155{
156 static constexpr std::string_view name = "linear_solve";
157};
158
165{
166 static constexpr std::string_view name = "lu_factor";
167};
168
171{
172 static constexpr std::string_view name = "lu_solve";
173};
174
178struct qr_op
179{
180 static constexpr std::string_view name = "qr";
181};
182
186struct lq_op
187{
188 static constexpr std::string_view name = "lq";
189};
190
194template <std::size_t InputRank, std::size_t ReducedRank> struct sum_reduction_op
195{
196 static constexpr std::string_view name = "sum";
198};
199
202{
203 static constexpr std::string_view name = "matrix_exponential";
204};
205
207enum class MatrixRegion
208{
210 All,
212 Upper,
214 Lower
215};
216
219{
220 static constexpr std::string_view name = "matrix_set";
222};
223
226{
227 Upper,
228 Lower
229};
230
237
240{
241 static constexpr std::string_view name = "self_adjoint_eigh";
242 bool compute_vectors = true;
244};
245
248{
249 Reduced,
250 Full
251};
252
259
261enum class SvdOverwrite
262{
263 None,
264 Left,
265 Right
266};
267
270{
271 static constexpr std::string_view name = "singular_values";
272};
273
276{
277 static constexpr std::string_view name = "svd_left";
279 bool overwrite_input = false;
280};
281
284{
285 static constexpr std::string_view name = "svd_right";
287 bool overwrite_input = false;
288};
289
298
301{
302 static constexpr std::string_view name = "symmetric_tridiagonal_eigen";
303 bool compute_vectors = true;
304};
305
308{
309 static constexpr std::string_view name = "nonsymmetric_eigen";
311};
312
315{
316 static constexpr std::string_view name = "schur";
317 bool compute_vectors = true;
318};
319
322{
323 static constexpr std::string_view name = "hessenberg_schur";
324 bool compute_vectors = true;
325};
326
329{
330 static constexpr std::string_view name = "reorder_schur";
331 std::size_t from = 0;
332 std::size_t to = 0;
333 bool update_vectors = true;
334};
335
336} // namespace uni20::linalg
Normalized axis metadata for fixed-rank pairwise tensor contractions.
Definition linalg/async.hpp:28
MatrixTriangle
Triangle of a symmetric or Hermitian matrix supplied to an operation.
Definition operation_tags.hpp:226
SvdOverwrite
Input allocation overwritten by a singular-vector factor.
Definition operation_tags.hpp:262
SvdVectorExtent
Extent policy for one side of an exact singular value decomposition.
Definition operation_tags.hpp:248
MatrixNorm
Matrix norm selected by matrix_norm_op.
Definition operation_tags.hpp:119
@ One
Induced one-norm: largest column sum of entry magnitudes.
@ MaxAbs
Largest entry magnitude, max_ij abs(A[i,j]).
@ Frobenius
Frobenius norm: square root of the sum of squared entry magnitudes.
@ Infinity
Induced infinity-norm: largest row sum of entry magnitudes.
MatrixRegion
Matrix region selected by structured initialization operations.
Definition operation_tags.hpp:208
@ Upper
Entries with row <= column, including the diagonal.
@ All
All entries, including rectangular portions of the matrix.
@ Lower
Entries with row >= column, including the diagonal.
Normalized input and surviving axes for fixed-rank tensor reductions.
Canonical contracted and surviving axes for two fixed-rank operands.
Definition contraction_axes.hpp:26
Normalized axes for reducing a fixed-rank input.
Definition reduction_axes.hpp:30
Options for a dense symmetric or Hermitian eigensystem.
Definition operation_tags.hpp:233
bool compute_vectors
Definition operation_tags.hpp:234
MatrixTriangle triangle
Definition operation_tags.hpp:235
Output-shape options for an exact singular value decomposition.
Definition operation_tags.hpp:255
SvdVectorExtent right
Definition operation_tags.hpp:257
SvdVectorExtent left
Definition operation_tags.hpp:256
Replaceable-output dense matrix product operation tag.
Definition operation_tags.hpp:75
static constexpr std::string_view name
Definition operation_tags.hpp:76
Accessor-respecting in-place scalar conjugation operation tag.
Definition operation_tags.hpp:39
static constexpr std::string_view name
Definition operation_tags.hpp:40
Fixed-output pairwise tensor contraction operation.
Definition operation_tags.hpp:98
static constexpr std::string_view name
Definition operation_tags.hpp:99
ContractionAxes< LhsRank, RhsRank, ContractedRank > axes
Definition operation_tags.hpp:100
Accessor-respecting element copy operation tag.
Definition operation_tags.hpp:33
static constexpr std::string_view name
Definition operation_tags.hpp:34
Fixed-output dense matrix multiplication operation tag.
Definition operation_tags.hpp:84
static constexpr std::string_view name
Definition operation_tags.hpp:85
Dense matrix-vector multiplication operation tag.
Definition operation_tags.hpp:90
static constexpr std::string_view name
Definition operation_tags.hpp:91
Schur decomposition of an already upper-Hessenberg real matrix.
Definition operation_tags.hpp:322
static constexpr std::string_view name
Definition operation_tags.hpp:323
bool compute_vectors
Definition operation_tags.hpp:324
Conjugate-linear-left tensor inner-product operation tag.
Definition operation_tags.hpp:105
static constexpr std::string_view name
Definition operation_tags.hpp:106
Preserving full-column-rank least squares with fixed solution and diagnostic outputs.
Definition operation_tags.hpp:21
static constexpr std::string_view name
Definition operation_tags.hpp:22
Destructive dense general linear-system solve operation tag.
Definition operation_tags.hpp:155
static constexpr std::string_view name
Definition operation_tags.hpp:156
Reduced dense real LQ factorization operation tag.
Definition operation_tags.hpp:187
static constexpr std::string_view name
Definition operation_tags.hpp:188
Fixed-output packed LU factorization with zero-based row-swap pivots.
Definition operation_tags.hpp:165
static constexpr std::string_view name
Definition operation_tags.hpp:166
Reciprocal condition estimate from successful packed LU and an original matrix norm.
Definition operation_tags.hpp:142
static constexpr std::string_view name
Definition operation_tags.hpp:143
MatrixNorm norm
Definition operation_tags.hpp:144
Solve using read-only packed LU factors, overwriting an existing RHS.
Definition operation_tags.hpp:171
static constexpr std::string_view name
Definition operation_tags.hpp:172
Dense matrix exponential operation tag.
Definition operation_tags.hpp:202
static constexpr std::string_view name
Definition operation_tags.hpp:203
Dense rank-two matrix norm operation tag.
Definition operation_tags.hpp:135
static constexpr std::string_view name
Definition operation_tags.hpp:136
MatrixNorm kind
Definition operation_tags.hpp:137
Structured dense matrix initialization operation tag.
Definition operation_tags.hpp:219
MatrixRegion region
Definition operation_tags.hpp:221
static constexpr std::string_view name
Definition operation_tags.hpp:220
Dense nonsymmetric eigensystem operation tag.
Definition operation_tags.hpp:308
static constexpr std::string_view name
Definition operation_tags.hpp:309
bool compute_right_vectors
Definition operation_tags.hpp:310
Euclidean tensor norm operation tag.
Definition operation_tags.hpp:111
static constexpr std::string_view name
Definition operation_tags.hpp:112
Reduced dense real QR factorization operation tag.
Definition operation_tags.hpp:179
static constexpr std::string_view name
Definition operation_tags.hpp:180
Dense Schur decomposition operation tag.
Definition operation_tags.hpp:315
bool compute_vectors
Definition operation_tags.hpp:317
static constexpr std::string_view name
Definition operation_tags.hpp:316
Move one Schur block or entry to a requested position.
Definition operation_tags.hpp:329
static constexpr std::string_view name
Definition operation_tags.hpp:330
std::size_t to
Definition operation_tags.hpp:332
bool update_vectors
Definition operation_tags.hpp:333
std::size_t from
Definition operation_tags.hpp:331
Dense symmetric or Hermitian eigensystem operation tag.
Definition operation_tags.hpp:240
bool compute_vectors
Definition operation_tags.hpp:242
MatrixTriangle triangle
Definition operation_tags.hpp:243
static constexpr std::string_view name
Definition operation_tags.hpp:241
Exact dense singular-values-only operation tag.
Definition operation_tags.hpp:270
static constexpr std::string_view name
Definition operation_tags.hpp:271
Sum reduction over one or more fixed-rank input axes.
Definition operation_tags.hpp:195
ReductionAxes< InputRank, ReducedRank > axes
Definition operation_tags.hpp:197
static constexpr std::string_view name
Definition operation_tags.hpp:196
Preserving minimum-norm SVD least squares with explicit rank diagnostics.
Definition operation_tags.hpp:27
static constexpr std::string_view name
Definition operation_tags.hpp:28
Exact dense left singular-vector operation tag.
Definition operation_tags.hpp:276
SvdVectorExtent left
Definition operation_tags.hpp:278
static constexpr std::string_view name
Definition operation_tags.hpp:277
bool overwrite_input
Definition operation_tags.hpp:279
Exact dense singular value decomposition operation tag.
Definition operation_tags.hpp:292
SvdVectorExtent left
Definition operation_tags.hpp:294
SvdVectorExtent right
Definition operation_tags.hpp:295
SvdOverwrite overwrite
Definition operation_tags.hpp:296
static constexpr std::string_view name
Definition operation_tags.hpp:293
Exact dense right singular-vector operation tag.
Definition operation_tags.hpp:284
SvdVectorExtent right
Definition operation_tags.hpp:286
static constexpr std::string_view name
Definition operation_tags.hpp:285
bool overwrite_input
Definition operation_tags.hpp:287
Symmetric tridiagonal eigensystem operation tag.
Definition operation_tags.hpp:301
static constexpr std::string_view name
Definition operation_tags.hpp:302
bool compute_vectors
Definition operation_tags.hpp:303
Callable-carrying elementwise update operation.
Definition operation_tags.hpp:61
Function function
Definition operation_tags.hpp:63
static constexpr std::string_view name
Definition operation_tags.hpp:62
Callable-carrying elementwise overwrite operation.
Definition operation_tags.hpp:48
static constexpr std::string_view name
Definition operation_tags.hpp:49
Function function
Definition operation_tags.hpp:50