java / expert
Snippet
Vector-API für datenparallele Operationen
Die Vector-API ermöglicht der JVM die Ausführung von SIMD-Operationen (Single Instruction, Multiple Data). Dieses Experten-Feature nutzt Parallelität auf Hardware-Ebene moderner CPUs, um mehrere Datenpunkte in einem Zyklus zu verarbeiten, was die Performance für mathematische Berechnungen massiv steigert.
snippet.java
1
2
3
4
5
6
7
8
9
static final VectorSpecies<Float> SPECIES = FloatVector.SPECIES_PREFERRED;void compute(float[] a, float[] b, float[] res) {for (int i = 0; i < a.length; i += SPECIES.length()) {var va = FloatVector.fromArray(SPECIES, a, i);var vb = FloatVector.fromArray(SPECIES, b, i);va.add(vb).intoArray(res, i);}}
Erklärung
1
static final VectorSpecies<Float> SPECIES = FloatVector.SPECIES_PREFERRED;
Bestimmt die optimale Vektorgröße für die aktuelle Hardware-Architektur.
2
va.add(vb).intoArray(res, i);
Führt eine parallele Addition mehrerer Elemente gleichzeitig aus.