tesseract++ 0.0.1
N-dimensional tensor library for embedded systems
Loading...
Searching...
No Matches
Public Types | Static Public Member Functions | Static Public Attributes | List of all members
detail::KernelDot< T, Bits, Arch > Struct Template Reference

#include <kernel_dot.h>

Public Types

using K = Microkernel< T, Bits, Arch >
 
using Helpers = KernelHelpers< T, Bits, Arch >
 

Static Public Member Functions

template<typename Expr1 , typename Expr2 >
static FORCE_INLINEdot (const Expr1 &expr1, my_size_t base1, my_size_t stride1, const Expr2 &expr2, my_size_t base2, my_size_t stride2, my_size_t len) noexcept
 Dispatch dot product based on stride values.
 
template<typename Expr1 , typename Expr2 >
static FORCE_INLINEnaive_dot_physical (const Expr1 &expr1, my_size_t base1, my_size_t stride1, const Expr2 &expr2, my_size_t base2, my_size_t stride2, my_size_t len) noexcept
 Naive scalar dot product for testing/validation.
 

Static Public Attributes

static constexpr my_size_t simdWidth = K::simdWidth
 

Member Typedef Documentation

◆ Helpers

template<typename T , my_size_t Bits, typename Arch >
using detail::KernelDot< T, Bits, Arch >::Helpers = KernelHelpers<T, Bits, Arch>

◆ K

template<typename T , my_size_t Bits, typename Arch >
using detail::KernelDot< T, Bits, Arch >::K = Microkernel<T, Bits, Arch>

Member Function Documentation

◆ dot()

template<typename T , my_size_t Bits, typename Arch >
template<typename Expr1 , typename Expr2 >
static FORCE_INLINE T detail::KernelDot< T, Bits, Arch >::dot ( const Expr1 &  expr1,
my_size_t  base1,
my_size_t  stride1,
const Expr2 &  expr2,
my_size_t  base2,
my_size_t  stride2,
my_size_t  len 
)
inlinestaticnoexcept

Dispatch dot product based on stride values.

Parameters
base1Physical offset of first fiber's start
stride1Physical stride along contraction axis (1 = contiguous)
base2Physical offset of second fiber's start
stride2Physical stride along contraction axis (1 = contiguous)
lenNumber of elements along contraction axis (logical dim)

◆ naive_dot_physical()

template<typename T , my_size_t Bits, typename Arch >
template<typename Expr1 , typename Expr2 >
static FORCE_INLINE T detail::KernelDot< T, Bits, Arch >::naive_dot_physical ( const Expr1 &  expr1,
my_size_t  base1,
my_size_t  stride1,
const Expr2 &  expr2,
my_size_t  base2,
my_size_t  stride2,
my_size_t  len 
)
inlinestaticnoexcept

Naive scalar dot product for testing/validation.

Accesses physical memory directly via data_.data(). Only used in tests to verify SIMD dot results.

Here is the call graph for this function:

Member Data Documentation

◆ simdWidth

template<typename T , my_size_t Bits, typename Arch >
constexpr my_size_t detail::KernelDot< T, Bits, Arch >::simdWidth = K::simdWidth
staticconstexpr

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