Speclib  0.1.2
The library for writing better CUDA libraries
sp::TensorSpecialiser Struct Reference

Attempt to increase the strictness of the optimisation flags of all Tensor arguments. More...

#include <Tensor.hpp>

Inheritance diagram for sp::TensorSpecialiser:
[legend]

Public Types

template<typename TargetType , typename T , int Rank, typename Opts >
using FinalT = typename TargetType::template UsefulTensorType< T, Rank, Opts >
 

Static Public Member Functions

template<typename T >
static constexpr bool test ()
 
template<typename T , int Rank, typename O >
static PackMode findTruePackmode (const Tensor< T, Rank, O > &t)
 
template<typename T , int Rank, typename O >
static bool findTruePitchedness (const Tensor< T, Rank, O > &t)
 
template<typename T , int Rank, typename Opts , typename Fn , typename... Stuff>
static auto selectPitchedness (const Tensor< T, Rank, Opts > &t, Fn &fn, Stuff &&... stuff)
 
template<typename T , int Rank, typename Opts , typename Fn , typename... Stuff>
static auto run (const Tensor< T, Rank, Opts > &t, Fn &fn, Stuff &&... stuff)
 
- Static Public Member Functions inherited from sp::Specialiser
template<typename T >
static constexpr bool test ()
 Return true iff the specialiser is able to specialise arguments of type T. More...
 
template<typename... O, typename ArgType , typename... Stuff>
static auto run (const ArgType &thisArg, Stuff &&... stuff)
 Specialise an argument. More...
 

Detailed Description

Attempt to increase the strictness of the optimisation flags of all Tensor arguments.

Checks the underlying buffer for packedness, alignment, and aliasing, before replacing it with an sp::Tensor with the most optimised sp::TensorProperties that fit.