docc 0.8.3 (0d44999b)
C++ API Reference
Loading...
Searching...
No Matches
tensor.h
Go to the documentation of this file.
1#pragma once
2
3#include <memory>
6#include "sdfg/types/type.h"
7
8namespace sdfg {
9namespace types {
10
11class Scalar;
12
13class Tensor : public IType {
14private:
15 std::unique_ptr<Scalar> element_type_;
17
18public:
22 [[deprecated("Use TensorLayout")]] Tensor(const Scalar& element_type, const symbolic::MultiExpression& shape);
23
25
29 [[deprecated("Use TensorLayout")]] Tensor(
30 const Scalar& element_type,
34 );
35
38 size_t alignment,
39 const std::string& initializer,
40 const Scalar& element_type,
42 );
43
47 [[deprecated("Use TensorLayout")]] Tensor(
49 size_t alignment,
50 const std::string& initializer,
51 const Scalar& element_type,
55 );
56
57 virtual PrimitiveType primitive_type() const override;
58
59 virtual TypeID type_id() const override;
60
61 virtual bool is_symbol() const override;
62
63 bool is_pointer_like() const override {
64 return true;
65 }
66
67 const Scalar& element_type() const;
68
70
75
80
85
87
89
90 bool is_scalar() const;
91
95 bool is_contiguous() const;
96
100 bool is_tight() const;
101
102 virtual bool operator==(const IType& other) const override;
103
104 virtual std::unique_ptr<IType> clone() const override;
105
106 virtual std::string print() const override;
107
109
110 std::unique_ptr<Tensor> newaxis(size_t axis) const;
111
112 std::unique_ptr<Tensor> flip(size_t axis) const;
113
114 std::unique_ptr<Tensor> unsqueeze(size_t axis) const;
115
116 std::unique_ptr<Tensor> squeeze(size_t axis) const;
117
118 std::unique_ptr<Tensor> squeeze() const;
119
120 std::unique_ptr<Tensor> reshape(const symbolic::MultiExpression& new_shape) const;
121
125 std::unique_ptr<Tensor> broadcast(const symbolic::MultiExpression& ref_shape) const;
126
134 virtual void
135 replace_symbols(const symbolic::Expression old_expression, const symbolic::Expression new_expression) override;
136 virtual void replace_symbols(const symbolic::ExpressionMapping& replacements) override;
137};
138
139} // namespace types
140} // namespace sdfg
The metadata associated with a addressing a tensor in elements Meant to be used with TensorNodes to d...
Definition tensor_layout.h:20
IType(StorageType storage_type=StorageType::CPU_Stack(), size_t alignment=0, const std::string &initializer="")
Constructs an IType with optional storage, alignment, and initializer.
Definition type.h:638
StorageType storage_type() const
Gets the storage type (const version).
Definition type.h:651
std::string initializer() const
Gets the initializer expression.
Definition type.h:683
size_t alignment() const
Gets the alignment requirement in bytes.
Definition type.h:673
Represents a scalar primitive type.
Definition scalar.h:27
Represents the storage location and management characteristics of data.
Definition type.h:64
std::unique_ptr< Tensor > flip(size_t axis) const
const symbolic::MultiExpression & shape() const
std::unique_ptr< Tensor > reshape(const symbolic::MultiExpression &new_shape) const
virtual TypeID type_id() const override
Returns the TypeID for runtime type identification.
std::unique_ptr< Tensor > squeeze(size_t axis) const
symbolic::Expression total_size() const
std::unique_ptr< Tensor > broadcast(const symbolic::MultiExpression &ref_shape) const
Broadcast this tensor to a bigger shape with strides correctly set.
Tensor(const Scalar &element_type, const symbolic::MultiExpression &shape)
virtual bool operator==(const IType &other) const override
Compares two types for equality.
std::unique_ptr< Tensor > squeeze() const
Tensor(StorageType storage_type, size_t alignment, const std::string &initializer, const Scalar &element_type, const math::tensor::TensorLayout &layout)
virtual bool is_symbol() const override
Checks if this type represents a symbolic/integer type.
bool is_tight() const
Tensor(StorageType storage_type, size_t alignment, const std::string &initializer, const Scalar &element_type, const symbolic::MultiExpression &shape, const symbolic::MultiExpression &strides, const symbolic::Expression &offset=symbolic::zero())
const Scalar & element_type() const
Tensor(const Scalar &element_type, const math::tensor::TensorLayout &layout)
std::unique_ptr< Tensor > unsqueeze(size_t axis) const
Tensor(const Scalar &element_type, const symbolic::MultiExpression &shape, const symbolic::MultiExpression &strides, const symbolic::Expression &offset=symbolic::zero())
virtual void replace_symbols(const symbolic::ExpressionMapping &replacements) override
std::unique_ptr< Tensor > newaxis(size_t axis) const
bool is_pointer_like() const override
Checks if this is a pointer or a structure behaves like a pointer.
Definition tensor.h:63
virtual PrimitiveType primitive_type() const override
Returns the primitive type for this type.
const symbolic::Expression & offset() const
virtual void replace_symbols(const symbolic::Expression old_expression, const symbolic::Expression new_expression) override
Replace symbolic expressions on this type.
const symbolic::MultiExpression & strides() const
const math::tensor::TensorLayout & layout() const
symbolic::Expression total_elements() const
bool is_contiguous() const
virtual std::string print() const override
Returns a string representation of this type.
virtual std::unique_ptr< IType > clone() const override
Creates a deep copy of this type.
static symbolic::MultiExpression strides_from_shape(const symbolic::MultiExpression &shape)
bool is_scalar() const
Integer zero()
Creates the integer constant 0.
std::vector< Expression > MultiExpression
Vector of symbolic expressions for multi-dimensional operations.
Definition symbolic.h:89
SymEngine::RCP< const SymEngine::Basic > Expression
Reference-counted pointer to a symbolic expression (SymEngine Basic).
Definition symbolic.h:83
SymEngine::map_basic_basic ExpressionMapping
Definition symbolic.h:109
Definition symbolic.h:57
PrimitiveType
Enumeration of all primitive data types supported by sdfglib.
Definition type.h:35
TypeID
Enumeration of high-level type categories.
Definition type.h:607
Definition analysis.h:7
Symbolic system for integer-based symbol analysis.
Core type system definitions for sdfglib.