InfiniOps
Operator Library for Accelerators
Loading...
Searching...
No Matches
operator.h File Reference
#include <algorithm>
#include <atomic>
#include <cassert>
#include <chrono>
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <limits>
#include <memory>
#include <optional>
#include <string_view>
#include <tuple>
#include <type_traits>
#include <unordered_map>
#include <utility>
#include <vector>
#include "config.h"
#include "dispatcher.h"
#include "handle.h"
#include "runtime.h"
#include "tensor.h"
#include "tuning.h"

Go to the source code of this file.

Classes

struct  infini::ops::CacheKeyBuilder< Key >
 
class  infini::ops::OperatorBase
 
class  infini::ops::Operator< Key, device_type, implementation_index >
 
struct  infini::ops::ActiveImplementationsImpl< Key, kDev, N, bool >
 
struct  infini::ops::ActiveImplementationsImpl< Key, kDev, N, true >
 
struct  infini::ops::ActiveImplementations< Key, kDev >
 

Namespaces

namespace  infini
 
namespace  infini::ops
 
namespace  infini::ops::detail
 

Functions

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)
 
template<auto... values>
std::vector< std::size_t > infini::ops::detail::ListToVector (List< values... >)
 
template<typename ValueType , auto... values>
bool infini::ops::detail::ListContains (ValueType value, List< values... >)
 
void infini::ops::detail::SyncDevice (Device::Type dev_type)
 
Device::Type infini::ops::detail::FirstDeviceType ()
 
template<typename First , typename... Rest>
Device::Type infini::ops::detail::FirstDeviceType (const First &first, const Rest &... rest)
 
template<typename T , typename std::enable_if_t< IsTensorLike< std::decay_t< T > >::value, int > = 0>
Tensor infini::ops::detail::AsCallArg (const T &tensor)
 
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)
 
bool infini::ops::detail::TraceOperatorCallsEnabled ()
 
template<typename Key >
constexpr std::string_view infini::ops::detail::OperatorName ()
 
template<typename Key >
void infini::ops::detail::TraceOperatorCall (const CacheKey &key, const Config &config)
 
template<typename Key , typename... Args>
std::size_t infini::ops::detail::ResolveImplementationIndex (const Config &config, Device::Type dev_type, const Args &... args)
 
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)
 
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)
 

Variables

constexpr std::size_t infini::ops::kMaxImplementations = 32