weaviate icon indicating copy to clipboard operation
weaviate copied to clipboard

Add Dot Byte SIMD implementation for ARM64

Open ajit283 opened this issue 1 year ago • 1 comments

What's being changed:

Review checklist

  • [ ] Documentation has been updated, if necessary. Link to changed documentation:
  • [ ] Chaos pipeline run or not necessary. Link to pipeline:
  • [x] All new code is covered by tests where it is reasonable.
  • [ ] Performance tests have been run or not necessary.

ajit283 avatar Apr 24 '24 11:04 ajit283

Benchmark

goos: darwin
goarch: arm64
pkg: github.com/weaviate/weaviate/adapters/repos/db/vector/hnsw/distancer
                          │ pure_go.txt  │              neon.txt              │
                          │    sec/op    │   sec/op     vs base               │
DotByte/2_dimensions-8       2.869n ± 1%   2.319n ± 3%  -19.20% (p=0.002 n=6)
DotByte/4_dimensions-8       3.493n ± 1%   2.511n ± 4%  -28.10% (p=0.002 n=6)
DotByte/6_dimensions-8       4.159n ± 2%   3.252n ± 1%  -21.80% (p=0.002 n=6)
DotByte/8_dimensions-8       4.779n ± 2%   4.139n ± 1%  -13.38% (p=0.002 n=6)
DotByte/10_dimensions-8      5.345n ± 3%   4.415n ± 1%  -17.42% (p=0.002 n=6)
DotByte/12_dimensions-8      5.971n ± 1%   6.066n ± 1%   +1.60% (p=0.002 n=6)
DotByte/16_dimensions-8      7.231n ± 1%   3.560n ± 3%  -50.77% (p=0.002 n=6)
DotByte/24_dimensions-8      9.806n ± 0%   6.295n ± 1%  -35.81% (p=0.002 n=6)
DotByte/30_dimensions-8     11.620n ± 1%   8.152n ± 2%  -29.85% (p=0.002 n=6)
DotByte/32_dimensions-8     12.255n ± 1%   3.884n ± 1%  -68.30% (p=0.002 n=6)
DotByte/128_dimensions-8    49.640n ± 1%   5.998n ± 1%  -87.92% (p=0.002 n=6)
DotByte/256_dimensions-8    95.520n ± 1%   9.183n ± 5%  -90.39% (p=0.002 n=6)
DotByte/300_dimensions-8    105.00n ± 1%   12.96n ± 1%  -87.65% (p=0.002 n=6)
DotByte/384_dimensions-8    131.80n ± 1%   12.34n ± 1%  -90.64% (p=0.002 n=6)
DotByte/512_dimensions-8    176.45n ± 1%   15.42n ± 1%  -91.26% (p=0.002 n=6)
DotByte/768_dimensions-8    255.10n ± 1%   21.78n ± 1%  -91.46% (p=0.002 n=6)
DotByte/1024_dimensions-8   336.55n ± 1%   27.99n ± 0%  -91.68% (p=0.002 n=6)
DotByte/1536_dimensions-8   498.25n ± 2%   40.88n ± 1%  -91.80% (p=0.002 n=6)
geomean                      26.11n        7.454n       -71.45%

ajit283 avatar May 28 '24 18:05 ajit283