|
|
| EltwiseTensorOp (const Children &... children) |
| |
| template<int L, typename... Args> |
| Vec< ValueType, L > | vectorCalculate (const sp::Vec< Args, L > &... inputs) const |
| |
| template<int L, CacheMode Mode, int... I> |
| Vec< ValueType, L > | reallyVectorRead (sp::int_sequence< I... >, const Vec< int, This::Rank > &dims) const |
| | Target for pattern-matching the sp::int_sequence for the subexpressions. More...
|
| |
| template<int L, CacheMode Mode> |
| Vec< ValueType, L > | vectorReadImpl (const Vec< int, This::Rank > &dims) const |
| | Read L elements, adjacent in the last dimension, from the virtual tensor described by this operator. More...
|
| |
|
| TensorTensorOp (Children... args) |
| |
| auto | dimsImpl () const |
| | Delegate dims() to the first subexpression. A helpful default. More...
|
| |
| int | totalSizeImpl () const |
| | Delegate totalSize() to the first child. More...
|
| |
|
constexpr | TensorOp (Children... args) |
| |
| constexpr auto & | child () |
| | Access children. More...
|
| |
|
constexpr const auto & | child () const |
| |
| constexpr auto & | lhs () |
| | Get the first subexpression if this is a binary operation. More...
|
| |
|
constexpr const auto & | lhs () const |
| |
| constexpr auto & | rhs () |
| | Get the second subexpression if this is a binary operation. More...
|
| |
|
constexpr const auto & | rhs () const |
| |
| constexpr void | forEachChild (F &lambda) |
| | Run a lambda function on each child. More...
|
| |
|
auto | dims () const |
| |
|
bool | boundsCheck (const Vec< int, Rank > &pos) const |
| |
|
auto | vectorRead (const Vec< int, Rank > &pos) const |
| |
|
auto | vectorOffsetRead (const Vec< int, Rank > &base, const Vec< int, Rank > &offset) const |
| |
|
auto | maskedVectorRead (const Vec< int, Rank > &pos) const |
| |
|
void | vectorWrite (const Vec< int, Rank > &pos, const Vec< T, L > &values) |
| |
|
void | maskedVectorWrite (const Vec< int, Rank > &pos, const Vec< T, L > &values) |
| |
|
int | sizeQuantisation () const |
| |
| int | totalSize () const |
| | Get the total memory occupied by the Tensor, in terms of elements. More...
|
| |
| auto | getView (const sp::Vec< int, Rank > &start, const sp::Vec< int, Rank > &size) |
| | Get an object that represents (and aliases) a portion of this object. More...
|
| |
| int | dim (int d) const |
| | Behaviour common to all TensorLikes ///. More...
|
| |
| auto | read (const Vec< int, Rank > &pos) const |
| | Get the element at a given position. More...
|
| |
| void | write (const Vec< int, Rank > &pos, const T &value) |
| | Set a single element. More...
|
| |
|
int | size () const |
| |
| void | boundsCheckAccess (Vec< int, Rank > pos) const |
| | Bounds-check an L-element vector read at pos. More...
|
| |
|
|
static constexpr int | Arity |
| |
|
static constexpr int | MaxVectorSize |
| |
|
static constexpr int | Arity |
| |
|
constexpr static int | Rank |
| |
|
constexpr | Operator (Children... args) |
| |
|
constexpr void | forEachChild (F &lambda, sp::int_sequence< I... > &) |
| |
| auto | dimsImpl () const |
| | Get an sp::Vec<int, X> representing the dimensions of the object. More...
|
| |
| bool | boundsCheckImpl (const sp::Vec< int, Rank > &) const |
| | Return true iff the given coordinates are inside the object (Default implementation below) More...
|
| |
| int | sizeQuantisationImpl () const |
| | The last dimension is rounded up to the next multiple of this value for the purposes of bounds checks. More...
|
| |
| auto | vectorReadImpl (const Vec< int, Rank > &) const |
| | Read L elements, adjacent in the last dimension, starting at the given position. More...
|
| |
| auto | vectorOffsetReadImpl (const Vec< int, Rank > &base, const Vec< int, Rank > &offset) const |
| | Read L elements, adjacent in the last dimension, from position base + offset. More...
|
| |
| auto | maskedVectorReadImpl (const Vec< int, Rank > &pos) const |
| | Do a vectorRead that copes with the possibility of part of the vector being out of bounds. More...
|
| |
| void | maskedVectorWriteImpl (const Vec< int, Rank > &pos, const Vec< T, L > &values) |
| | Do a vectorWrite that copes with the possibility of part of the vector being out of bounds. More...
|
| |
| void | vectorWriteImpl (const Vec< int, Rank > &pos, const Vec< T, L > &values) |
| | Write L elements, adjacent in the last dimension, starting at the given position. More...
|
| |
| auto | getViewImpl (const sp::Vec< int, Rank > &start, const sp::Vec< int, Rank > &size) |
| | The default implementation just makes a TensorView. Not hugely fast, but always works. More...
|
| |
|
std::tuple< Children... > | children |
| |
template<typename Functor, typename... Children>
struct sp::EltwiseTensorOp< Functor, Children >
Extends TensorExpr, allowing the definition of an N-ary tensor operator from any N-ary functor.
The functor may be stateful
In practice, this is very often the thing you want to extend when defining a new tensor operator.
- Template Parameters
-
| Functor | The function type to define the operator with. |
| Children | The types of the subexpressions. |