InfiniOps
Operator Library for Accelerators
Loading...
Searching...
No Matches
infini::ops::Gemm Class Referenceabstract

#include <gemm.h>

Inheritance diagram for infini::ops::Gemm:
infini::ops::Operator< Gemm > infini::ops::OperatorBase infini::ops::OperatorBase

Public Member Functions

 Gemm (const Tensor a, const Tensor b, const std::optional< Tensor > c, std::optional< float > alpha, std::optional< float > beta, std::optional< int > trans_a, std::optional< int > trans_b, Tensor y)
 
 Gemm (const Tensor a, const Tensor b, Tensor y)
 
virtual void operator() (const Tensor a, const Tensor b, const std::optional< Tensor > c, std::optional< float > alpha, std::optional< float > beta, std::optional< int > trans_a, std::optional< int > trans_b, Tensor y) const =0
 
virtual void operator() (const Tensor a, const Tensor b, Tensor y) const
 
- Public Member Functions inherited from infini::ops::Operator< Gemm >
void operator() (const Handle &handle, const Args &... args)
 
void operator() (const Args &... args) const
 
void operator() (const Handle &handle, const Args &... args)
 
void operator() (const Args &... args) const
 
- Public Member Functions inherited from infini::ops::OperatorBase
virtual ~OperatorBase ()=default
 
virtual std::size_t workspace_size_in_bytes () const
 
void set_handle (const Handle &handle)
 
void set_config (const Config &config)
 
void set_stream (void *stream)
 
void set_workspace (void *workspace)
 
void set_workspace_size_in_bytes (std::size_t workspace_size_in_bytes)
 
virtual ~OperatorBase ()=default
 
virtual std::size_t workspace_size_in_bytes () const
 
void set_handle (const Handle &handle)
 
void set_config (const Config &config)
 
void set_stream (void *stream)
 
void set_workspace (void *workspace)
 
void set_workspace_size_in_bytes (std::size_t workspace_size_in_bytes)
 

Static Public Member Functions

template<typename TensorLike >
static auto MakeReturnValue (const TensorLike &a, const TensorLike &b)
 
- Static Public Member Functions inherited from infini::ops::Operator< Gemm >
static void clear_cache ()
 
static void clear_cache ()
 
static std::unique_ptr< Operator > Make (const Config &config, const Tensor tensor, Args &&... args)
 
static std::unique_ptr< Operator > Make (const Tensor tensor, Args &&... args)
 
static std::unique_ptr< Operator > Make (const Config &config, const std::vector< Tensor > tensors, Args &&... args)
 
static std::unique_ptr< Operator > Make (const std::vector< Tensor > tensors, Args &&... args)
 
static std::unique_ptr< Operator > Make (const Config &config, const Tensor tensor, Args &&... args)
 
static std::unique_ptr< Operator > Make (const Tensor tensor, Args &&... args)
 
static std::unique_ptr< Operator > Make (const Config &config, const std::vector< Tensor > tensors, Args &&... args)
 
static std::unique_ptr< Operator > Make (const std::vector< Tensor > tensors, Args &&... args)
 
static void Call (const Handle &handle, const Config &config, const Args &... args)
 
static void Call (const Tensor tensor, const Args &... args)
 
static auto Call (const TensorLike &tensor, const Args &... args)
 
static void Call (const Handle &handle, const Config &config, const Args &... args)
 
static void Call (const Tensor tensor, const Args &... args)
 
static auto Call (const TensorLike &tensor, const Args &... args)
 
static std::vector< std::size_t > active_implementation_indices (Device::Type dev_type)
 
static std::vector< std::size_t > active_implementation_indices (Device::Type dev_type)
 

Static Protected Member Functions

static float EffectiveBeta (const std::optional< Tensor > &c, std::optional< float > beta)
 

Protected Attributes

float alpha_ {1.0}
 
float beta_ {1.0}
 
bool trans_a_ {false}
 
bool trans_b_ {false}
 
Tensor::Size m_ {0}
 
Tensor::Size n_ {0}
 
Tensor::Size k_ {0}
 
const DataType a_type_
 
const DataType b_type_
 
const DataType y_type_
 
Tensor::Strides a_strides_
 
Tensor::Strides b_strides_
 
Tensor::Strides y_strides_
 
Tensor::Stride lda_ {0}
 
Tensor::Stride ldb_ {0}
 
Tensor::Stride ldy_ {0}
 
Tensor::Size batch_count_ {1}
 
Tensor::Stride batch_stride_a_ {0}
 
Tensor::Stride batch_stride_b_ {0}
 
Tensor::Stride batch_stride_y_ {0}
 
- Protected Attributes inherited from infini::ops::OperatorBase
std::unique_ptr< Handle > handle_ptr_
 
std::unique_ptr< Config > config_ptr_
 
void * stream_ {nullptr}
 
void * workspace_ {nullptr}
 
std::size_t workspace_size_in_bytes_ {0}
 

Additional Inherited Members

- Static Protected Attributes inherited from infini::ops::Operator< Gemm >
static constexpr Device::Type device_type_
 
static constexpr std::size_t implementation_index_
 

Constructor & Destructor Documentation

◆ Gemm() [1/2]

infini::ops::Gemm::Gemm ( const Tensor  a,
const Tensor  b,
const std::optional< Tensor >  c,
std::optional< float >  alpha,
std::optional< float >  beta,
std::optional< int >  trans_a,
std::optional< int >  trans_b,
Tensor  y 
)
inline

◆ Gemm() [2/2]

infini::ops::Gemm::Gemm ( const Tensor  a,
const Tensor  b,
Tensor  y 
)
inline

Member Function Documentation

◆ EffectiveBeta()

static float infini::ops::Gemm::EffectiveBeta ( const std::optional< Tensor > &  c,
std::optional< float >  beta 
)
inlinestaticprotected

◆ MakeReturnValue()

template<typename TensorLike >
static auto infini::ops::Gemm::MakeReturnValue ( const TensorLike &  a,
const TensorLike &  b 
)
inlinestatic

◆ operator()() [1/2]

virtual void infini::ops::Gemm::operator() ( const Tensor  a,
const Tensor  b,
const std::optional< Tensor >  c,
std::optional< float >  alpha,
std::optional< float >  beta,
std::optional< int >  trans_a,
std::optional< int >  trans_b,
Tensor  y 
) const
pure virtual

◆ operator()() [2/2]

virtual void infini::ops::Gemm::operator() ( const Tensor  a,
const Tensor  b,
Tensor  y 
) const
inlinevirtual

Member Data Documentation

◆ a_strides_

Tensor::Strides infini::ops::Gemm::a_strides_
protected

◆ a_type_

const DataType infini::ops::Gemm::a_type_
protected

◆ alpha_

float infini::ops::Gemm::alpha_ {1.0}
protected

◆ b_strides_

Tensor::Strides infini::ops::Gemm::b_strides_
protected

◆ b_type_

const DataType infini::ops::Gemm::b_type_
protected

◆ batch_count_

Tensor::Size infini::ops::Gemm::batch_count_ {1}
protected

◆ batch_stride_a_

Tensor::Stride infini::ops::Gemm::batch_stride_a_ {0}
protected

◆ batch_stride_b_

Tensor::Stride infini::ops::Gemm::batch_stride_b_ {0}
protected

◆ batch_stride_y_

Tensor::Stride infini::ops::Gemm::batch_stride_y_ {0}
protected

◆ beta_

float infini::ops::Gemm::beta_ {1.0}
protected

◆ k_

Tensor::Size infini::ops::Gemm::k_ {0}
protected

◆ lda_

Tensor::Stride infini::ops::Gemm::lda_ {0}
protected

◆ ldb_

Tensor::Stride infini::ops::Gemm::ldb_ {0}
protected

◆ ldy_

Tensor::Stride infini::ops::Gemm::ldy_ {0}
protected

◆ m_

Tensor::Size infini::ops::Gemm::m_ {0}
protected

◆ n_

Tensor::Size infini::ops::Gemm::n_ {0}
protected

◆ trans_a_

bool infini::ops::Gemm::trans_a_ {false}
protected

◆ trans_b_

bool infini::ops::Gemm::trans_b_ {false}
protected

◆ y_strides_

Tensor::Strides infini::ops::Gemm::y_strides_
protected

◆ y_type_

const DataType infini::ops::Gemm::y_type_
protected

The documentation for this class was generated from the following file: