cpp / expert
Snippet
Vektorisierte Pufferausrichtung mit explizitem Padding
Erzwingen der Speicherausrichtung auf Hardware-Ebene, um SIMD-Optimierungen (Single Instruction, Multiple Data) zu ermöglichen und Strafen für nicht ausgerichtete Zugriffe zu vermeiden.
snippet.cpp
cpp
1
2
3
4
5
6
7
8
9
10
11
struct alignas(32) SIMDBlock {float data[8];};void processBlock(SIMDBlock& block) {for(int i = 0; i < 8; ++i) {block.data[i] *= 1.5f;}}static_assert(sizeof(SIMDBlock) == 32, "Alignment mismatch");
Erklärung
1
struct alignas(32) SIMDBlock
Weist den Compiler an, die Struktur an einer 32-Byte-Grenze auszurichten (AVX-Anforderung).
2
float data[8];
Ein Array aus 8 Floats, das perfekt in ein 256-Bit-SIMD-Register passt.
3
static_assert(sizeof(SIMDBlock) == 32
Kompilierzeit-Validierung, dass die Strukturgröße der Ausrichtung entspricht.