InfiniOps
Operator Library for Accelerators
Loading...
Searching...
No Matches
infini::ops::detail Namespace Reference

Classes

struct  ActiveImplementationsHelper
 
struct  ActiveImplementationsHelper< Key, kDev, std::index_sequence< ns... > >
 
struct  CacheKey
 
struct  DataTypeAdapter
 
struct  DataTypeMultiAdapter
 
struct  DeviceAdapter
 
struct  DeviceMultiAdapter
 
struct  DispatchFuncUnwrap
 
struct  DispatchFuncUnwrap< ValueType, Functor, List< head, tail... >, std::tuple< Args... > >
 
struct  DispatchFuncUnwrap< ValueType, Functor, List<>, std::tuple< Args... > >
 
class  HasMakeReturnValue
 
class  HasMakeReturnValueImpl
 
class  HasMakeReturnValueImpl< Key, Tensor, std::tuple< Args... > >
 
class  HasMakeReturnValueImpl< Key, TensorLike, std::tuple< Args... >, std::void_t< decltype(Key::MakeReturnValue(std::declval< const TensorLike & >(), std::declval< const Args & >()...))> >
 
class  IsTensorLike
 
class  IsTensorLike< TensorLike, std::void_t< decltype(std::declval< const TensorLike & >().data()), decltype(std::declval< const TensorLike & >().shape()), decltype(std::declval< const TensorLike & >().strides()), decltype(std::declval< const TensorLike & >().dtype()), decltype(std::declval< const TensorLike & >().device())> >
 

Functions

template<typename Functor , typename... Args, auto... implementation_indices>
auto DispatchImplementation (std::size_t implementation_index, Functor &&func, std::string_view context_str, List< implementation_indices... >, Args &&... args)
 
template<auto... values>
std::vector< std::size_t > ListToVector (List< values... >)
 
template<typename ValueType , auto... values>
bool ListContains (ValueType value, List< values... >)
 
void SyncDevice (Device::Type dev_type)
 
Device::Type FirstDeviceType ()
 
template<typename First , typename... Rest>
Device::Type FirstDeviceType (const First &first, const Rest &... rest)
 
template<typename T , typename std::enable_if_t< IsTensorLike< std::decay_t< T > >::value, int > = 0>
Tensor AsCallArg (const T &tensor)
 
template<typename T , typename std::enable_if_t< !IsTensorLike< std::decay_t< T > >::value, int > = 0>
const T & AsCallArg (const T &value)
 
bool TraceOperatorCallsEnabled ()
 
template<typename Key >
constexpr std::string_view OperatorName ()
 
template<typename Key >
void TraceOperatorCall (const CacheKey &key, const Config &config)
 
template<typename Key , typename... Args>
std::size_t ResolveImplementationIndex (const Config &config, Device::Type dev_type, const Args &... args)
 
template<typename Key , typename... Args>
std::size_t ResolveImplementationIndexOnline (const Handle &handle, const Config &config, Device::Type dev_type, const Args &... args)
 
template<typename Key , typename... Args>
double BenchmarkImplementation (const Handle &handle, Device::Type dev_type, std::size_t impl_index, const Args &... args)
 
template<typename ValueType , typename Functor , typename... Args, auto head, auto... tail>
auto DispatchFuncImpl (ValueType value, Functor &&func, std::string_view context_str, List< head, tail... >, Args &&... args)
 

Function Documentation

◆ AsCallArg() [1/2]

template<typename T , typename std::enable_if_t< IsTensorLike< std::decay_t< T > >::value, int > = 0>
Tensor infini::ops::detail::AsCallArg ( const T &  tensor)

◆ AsCallArg() [2/2]

template<typename T , typename std::enable_if_t< !IsTensorLike< std::decay_t< T > >::value, int > = 0>
const T & infini::ops::detail::AsCallArg ( const T &  value)

◆ BenchmarkImplementation()

template<typename Key , typename... Args>
double infini::ops::detail::BenchmarkImplementation ( const Handle &  handle,
Device::Type  dev_type,
std::size_t  impl_index,
const Args &...  args 
)

◆ DispatchFuncImpl()

template<typename ValueType , typename Functor , typename... Args, auto head, auto... tail>
auto infini::ops::detail::DispatchFuncImpl ( ValueType  value,
Functor &&  func,
std::string_view  context_str,
List< head, tail... >  ,
Args &&...  args 
)

◆ DispatchImplementation()

template<typename Functor , typename... Args, auto... implementation_indices>
auto infini::ops::detail::DispatchImplementation ( std::size_t  implementation_index,
Functor &&  func,
std::string_view  context_str,
List< implementation_indices... >  ,
Args &&...  args 
)

◆ FirstDeviceType() [1/2]

Device::Type infini::ops::detail::FirstDeviceType ( )
inline

◆ FirstDeviceType() [2/2]

template<typename First , typename... Rest>
Device::Type infini::ops::detail::FirstDeviceType ( const First &  first,
const Rest &...  rest 
)

◆ ListContains()

template<typename ValueType , auto... values>
bool infini::ops::detail::ListContains ( ValueType  value,
List< values... >   
)

◆ ListToVector()

template<auto... values>
std::vector< std::size_t > infini::ops::detail::ListToVector ( List< values... >  )

◆ OperatorName()

template<typename Key >
constexpr std::string_view infini::ops::detail::OperatorName ( )
constexpr

◆ ResolveImplementationIndex()

template<typename Key , typename... Args>
std::size_t infini::ops::detail::ResolveImplementationIndex ( const Config &  config,
Device::Type  dev_type,
const Args &...  args 
)

◆ ResolveImplementationIndexOnline()

template<typename Key , typename... Args>
std::size_t infini::ops::detail::ResolveImplementationIndexOnline ( const Handle &  handle,
const Config &  config,
Device::Type  dev_type,
const Args &...  args 
)

◆ SyncDevice()

void infini::ops::detail::SyncDevice ( Device::Type  dev_type)
inline

◆ TraceOperatorCall()

template<typename Key >
void infini::ops::detail::TraceOperatorCall ( const CacheKey &  key,
const Config &  config 
)

◆ TraceOperatorCallsEnabled()

bool infini::ops::detail::TraceOperatorCallsEnabled ( )
inline