rmuir commented on PR #12311:
URL: https://github.com/apache/lucene/pull/12311#issuecomment-1560207056
This isn't a theoretical issue, I really think its a openjdk problem?
To reproduce it, i simply emulate a Nehalem cpu (the one right before AVX):
```
processor : 3
vendor_id : GenuineIntel
cpu family : 6
model : 26
model name : Intel Core i7 9xx (Nehalem Class Core i7)
stepping : 3
microcode : 0x1
cpu MHz : 2496.002
cache size : 16384 KB
physical id : 0
siblings : 4
core id : 1
cpu cores : 2
apicid : 3
initial apicid : 3
fpu : yes
fpu_exception : yes
cpuid level : 11
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge
mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx lm constant_tsc
rep_good nopl xtopology cpuid tsc_known_freq pni ssse3 cx16 sse4_1 sse4_2
x2apic popcnt hypervisor lahf_lm cpuid_fault
bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds
swapgs itlb_multihit mmio_unknown
bogomips : 4994.00
clflush size : 64
cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
power management:
```
Here's my QEMU command:
```
qemu-system-x86_64 \
-name "Arch Linux" \
-machine q35,vmport=off \
-accel kvm,kernel-irqchip=on \
-cpu Nehalem-v1 \
-smp 4,cores=2,threads=2 \
-m 8192 \
-boot menu=on \
-nodefaults \
-no-user-config \
-object rng-random,id=rng0,filename=/dev/urandom -device
virtio-rng-pci,rng=rng0 \
-nic user,ipv6=off,model=virtio-net-pci,hostfwd=tcp::10022-:22 \
-device virtio-scsi-pci,id=scsi0 \
-device scsi-hd,bus=scsi0.0,drive=drive-scsi0 \
-drive file=disk.qcow2,if=none,id=drive-scsi0,discard=on \
-nographic \
-vga none \
-device virtio-serial-pci \
-device virtserialport \
-device virtconsole \
-serial mon:stdio \
-parallel none
```
Here are benchmark results. It behaves the same as passing `-XX:UseAVX=0` on
the host machine.
```
Benchmark (size) Mode Cnt Score Error
Units
BinaryCosineBenchmark.cosineDistanceNew 1024 thrpt 5 0.010 ± 0.003
ops/us
BinaryCosineBenchmark.cosineDistanceOld 1024 thrpt 5 0.776 ± 0.107
ops/us
BinaryDotProductBenchmark.dotProductNew 1024 thrpt 5 0.023 ± 0.006
ops/us
BinaryDotProductBenchmark.dotProductOld 1024 thrpt 5 1.861 ± 0.087
ops/us
BinarySquareBenchmark.squareDistanceNew 1024 thrpt 5 0.025 ± 0.001
ops/us
BinarySquareBenchmark.squareDistanceOld 1024 thrpt 5 1.555 ± 0.048
ops/us
FloatCosineBenchmark.cosineNew 1024 thrpt 5 3.416 ± 0.256
ops/us
FloatCosineBenchmark.cosineOld 1024 thrpt 5 0.694 ± 0.117
ops/us
FloatDotProductBenchmark.dotProductNew 1024 thrpt 5 8.968 ± 0.125
ops/us
FloatDotProductBenchmark.dotProductOld 1024 thrpt 5 1.835 ± 0.162
ops/us
FloatSquareBenchmark.squareNew 1024 thrpt 5 6.665 ± 0.068
ops/us
FloatSquareBenchmark.squareOld 1024 thrpt 5 1.224 ± 0.151
ops/us
```
```
dev0:vectorbench[main]$ /usr/lib/jvm/java-20-openjdk/bin/jshell
--add-modules jdk.incubator.vector
May 23, 2023 6:24:14 PM java.util.prefs.FileSystemPreferences$1 run
INFO: Created user preferences directory.
| Welcome to JShell -- Version 20.0.1
| For an introduction type: /help intro
jshell> jdk.incubator.vector.IntVector.SPECIES_PREFERRED
$1 ==> Species[int, 4, S_128_BIT]
```
128-bit vectors are claimed but don't work. This is not good.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]