template<typename T = float>
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) |