From 6772c988acfaaece53e0139e66fb15d94f641ae7 Mon Sep 17 00:00:00 2001 From: Steve Dohrmann Date: Mon, 18 Sep 2023 23:52:15 -0700 Subject: [PATCH] Test all supported vector widths (#25) * test both vector species if on 512-bit-capable platform * test both species on all platforms --- build.gradle | 24 +++++++++++++++++-- gradle.properties | 1 + .../java/org/simdjson/StructuralIndexer.java | 8 ++++++- 3 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 gradle.properties diff --git a/build.gradle b/build.gradle index b45863e..c88fd88 100644 --- a/build.gradle +++ b/build.gradle @@ -2,6 +2,7 @@ import me.champeau.jmh.JmhBytecodeGeneratorTask import org.gradle.internal.os.OperatingSystem import org.ajoberstar.grgit.Grgit import java.time.Duration +import jdk.incubator.vector.ByteVector plugins { id 'java' @@ -69,18 +70,37 @@ tasks.register('downloadTestData') { } } -test { +tasks.register('test256', Test) { + dependsOn downloadTestData + useJUnitPlatform() + jvmArgs += [ + '--add-modules', 'jdk.incubator.vector', + '-Xmx2g', + '-Dorg.simdjson.species=256' + ] + testLogging { + events 'PASSED', 'SKIPPED', 'FAILED', 'STANDARD_OUT', 'STANDARD_ERROR' + } +} + +tasks.register('test512', Test) { dependsOn downloadTestData useJUnitPlatform() jvmArgs += [ '--add-modules', 'jdk.incubator.vector', - '-Xmx2g' + '-Xmx2g', + '-Dorg.simdjson.species=512' ] testLogging { events 'PASSED', 'SKIPPED', 'FAILED', 'STANDARD_OUT', 'STANDARD_ERROR' } } +test { + dependsOn 'test256' + dependsOn 'test512' +} + tasks.withType(JmhBytecodeGeneratorTask).configureEach { jvmArgs.set(["--add-modules=jdk.incubator.vector"]) } diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..272a338 --- /dev/null +++ b/gradle.properties @@ -0,0 +1 @@ +org.gradle.jvmargs="--add-modules=jdk.incubator.vector" diff --git a/src/main/java/org/simdjson/StructuralIndexer.java b/src/main/java/org/simdjson/StructuralIndexer.java index cb0201e..c0eb4b0 100644 --- a/src/main/java/org/simdjson/StructuralIndexer.java +++ b/src/main/java/org/simdjson/StructuralIndexer.java @@ -12,7 +12,13 @@ class StructuralIndexer { static final int N_CHUNKS; static { - SPECIES = ByteVector.SPECIES_PREFERRED; + String species = System.getProperty("org.simdjson.species", "preferred"); + SPECIES = switch(species) { + case "preferred" -> ByteVector.SPECIES_PREFERRED; + case "512" -> ByteVector.SPECIES_512; + case "256" -> ByteVector.SPECIES_256; + default -> throw new IllegalArgumentException("Unsupported vector species: " + species); + }; N_CHUNKS = 64 / SPECIES.vectorByteSize(); if (SPECIES != ByteVector.SPECIES_256 && SPECIES != ByteVector.SPECIES_512) { throw new IllegalArgumentException("Unsupported vector species: " + SPECIES);