template<typename T = float>
liarsdice::performance::SimdOperations class

SIMD-accelerated operations using xsimd.

Provides vectorized implementations of common operations for maximum performance on modern CPUs with SIMD support. Uses xsimd for vectorized operations with automatic dispatch to the best available instruction set (SSE, AVX, AVX2, etc.)

Public types

using value_type = T
using batch_type = xsimd::batch<T>

Public static variables

static std::size_t simd_size constexpr

Public static functions

static auto dot_product(std::span<const T> a, std::span<const T> b) -> T
SIMD-accelerated dot product.
static void vector_add(std::span<const T> a, std::span<const T> b, std::span<T> result)
SIMD vector addition.
static void scalar_multiply(T scalar, std::span<const T> vec, std::span<T> result)
SIMD scalar multiplication.
static auto mean_variance(std::span<const T> data) -> std::pair<double, double>
SIMD mean and variance calculation.
static auto minmax(std::span<const T> data) -> std::pair<T, T>
SIMD min/max finding.
static void abs(std::span<const T> data, std::span<T> result)
SIMD element-wise absolute value.
static auto manhattan_distance(std::span<const T> a, std::span<const T> b) -> T
SIMD Manhattan distance.
static auto fast_histogram(std::span<const T> data, std::size_t bins, T min, T max) -> std::vector<std::size_t>
SIMD-accelerated histogram computation.
static void matrix_vector_multiply(const T* matrix, const T* vec, T* result, std::size_t rows, std::size_t cols)
SIMD matrix-vector multiplication.
static void exponential_moving_average(std::span<T> data, T alpha)
SIMD exponential moving average.

Function documentation

template<typename T>
static T liarsdice::performance::SimdOperations<T>::dot_product(std::span<const T> a, std::span<const T> b)

SIMD-accelerated dot product.

Parameters
a First vector
b Second vector
Returns Dot product result

template<typename T>
static void liarsdice::performance::SimdOperations<T>::vector_add(std::span<const T> a, std::span<const T> b, std::span<T> result)

SIMD vector addition.

Parameters
a First vector
b Second vector
result Output vector

template<typename T>
static void liarsdice::performance::SimdOperations<T>::scalar_multiply(T scalar, std::span<const T> vec, std::span<T> result)

SIMD scalar multiplication.

Parameters
scalar Scalar value
vec Input vector
result Output vector

template<typename T>
static std::pair<double, double> liarsdice::performance::SimdOperations<T>::mean_variance(std::span<const T> data)

SIMD mean and variance calculation.

Parameters
data Input data
Returns Pair of (mean, variance)

template<typename T>
static std::pair<T, T> liarsdice::performance::SimdOperations<T>::minmax(std::span<const T> data)

SIMD min/max finding.

Parameters
data Input data
Returns Pair of (min, max)

template<typename T>
static void liarsdice::performance::SimdOperations<T>::abs(std::span<const T> data, std::span<T> result)

SIMD element-wise absolute value.

Parameters
data Input data
result Output vector

template<typename T>
static T liarsdice::performance::SimdOperations<T>::manhattan_distance(std::span<const T> a, std::span<const T> b)

SIMD Manhattan distance.

Parameters
a First vector
b Second vector
Returns L1 distance

template<typename T>
static std::vector<std::size_t> liarsdice::performance::SimdOperations<T>::fast_histogram(std::span<const T> data, std::size_t bins, T min, T max)

SIMD-accelerated histogram computation.

Parameters
data Input data
bins Number of bins
min Minimum value
max Maximum value
Returns Histogram counts

template<typename T>
static void liarsdice::performance::SimdOperations<T>::matrix_vector_multiply(const T* matrix, const T* vec, T* result, std::size_t rows, std::size_t cols)

SIMD matrix-vector multiplication.

Parameters
matrix Row-major matrix
vec Input vector
result Output vector
rows Number of rows
cols Number of columns

template<typename T>
static void liarsdice::performance::SimdOperations<T>::exponential_moving_average(std::span<T> data, T alpha)

SIMD exponential moving average.

Parameters
data Input/output data
alpha Smoothing factor (0 < alpha < 1)