capypad
0 Tage Serie
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
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.