Skip to main content

Module vector

Module vector 

Source
Expand description

§Векторные операции для DSP

Этот модуль предоставляет встроенный предметно-ориентированный язык (eDSL) для векторных операций, оптимизированных под SIMD инструкции.

§Основные возможности

  • Базовые векторные типы для f32 и f64 с различной шириной SIMD
  • Арифметические операции (+, -, *, /, %)
  • Математические функции (sin, cos, exp, ln, sqrt, …)
  • Система выражений для ленивых вычислений и оптимизаций
  • Автоматическая детекция SIMD возможностей процессора

§Использование

use rill_core::vector::prelude::*;

let a = ScalarVector4::splat(1.0);
let b = ScalarVector4::splat(2.0);
let c = a + b;
assert_eq!(c, ScalarVector4::splat(3.0));

§Архитектура

Модуль организован следующим образом:

  • traits - основные трейты (Vector, VectorOps, VectorMath)
  • ops - реализации арифметических операций
  • math - математические функции
  • simd - SIMD реализации для разных архитектур
  • expr - система выражений и оптимизации
  • scalar - скалярные fallback реализации

§Поддерживаемые платформы

  • x86/x86_64: SSE2, SSE4.1, AVX, AVX2, AVX512 (через детекцию во время выполнения)
  • ARM: NEON (AArch64)
  • WebAssembly: SIMD128
  • Скалярный fallback для платформ без SIMD

Re-exports§

pub use math::*;
pub use ops::*;
pub use traits::*;
pub use macros::*;
pub use scalar::*;

Modules§

macros
Макросы для удобного построения векторных выражений.
math
Математические функции для векторов
ops
Арифметические операции для векторов
prelude
Prelude для удобного импорта
scalar
Скалярные реализации векторных операций
simdx86 or x86-64
SIMD реализации для векторных операций
traits