rust / expert
Snippet
Datenparallelität mit Portable SIMD
Portable SIMD (Single Instruction, Multiple Data) ermöglicht es, Operationen auf mehreren Werten gleichzeitig mittels CPU-Vektorinstruktionen auszuführen. Durch das Packen von vier f32-Werten in ein einzelnes f32x4-Register können Additionen parallel ausgeführt werden, was die Leistung bei numerischen Berechnungen erheblich steigert.
snippet.rs
1
2
3
4
5
6
7
8
9
10
11
#![feature(portable_simd)]use std::simd::f32x4;fn fast_add(a: [f32; 4], b: [f32; 4]) -> [f32; 4] {let va = f32x4::from_array(a);let vb = f32x4::from_array(b);let sum = va + vb; // Executes a single SIMD instruction (e.g., ADDPS)sum.to_array()}
Erklärung
1
use std::simd::f32x4;
Importiert einen 128-Bit-Vektortyp, der vier 32-Bit-Floats enthält.
2
va + vb
Der Operator ist überladen, um parallele Hardware-Instruktionen auszulühren.
3
sum.to_array()
Konvertiert den Hardware-Vektor zurück in ein standardmäßiges Rust-Array.