@@ -46,92 +46,68 @@ public VectorScorerOSQBenchmarkTests(
4646 this .similarityFunction = similarityFunction ;
4747 }
4848
49- public void testSingleScalarVsVectorized () throws Exception {
49+ public void testSingle () throws Exception {
5050 for (int i = 0 ; i < REPETITIONS ; i ++) {
5151 var seed = randomLong ();
5252
53- var scalar = new VectorScorerOSQBenchmark ();
54- var vectorized = new VectorScorerOSQBenchmark ();
55- try {
56- var data = VectorScorerOSQBenchmark .generateRandomVectorData (
57- new Random (seed ),
58- dims ,
59- bits ,
60- int4Encoding ,
61- similarityFunction
62- );
63-
64- scalar .implementation = VectorScorerOSQBenchmark .VectorImplementation .SCALAR ;
65- scalar .dims = dims ;
66- scalar .bits = bits ;
67- scalar .directoryType = directoryType ;
68- scalar .int4Encoding = int4Encoding ;
69- scalar .similarityFunction = similarityFunction ;
70- scalar .setup (data );
71-
72- float [] expected = scalar .score ();
73-
74- vectorized .implementation = VectorScorerOSQBenchmark .VectorImplementation .VECTORIZED ;
75- vectorized .dims = dims ;
76- vectorized .bits = bits ;
77- vectorized .directoryType = directoryType ;
78- vectorized .int4Encoding = int4Encoding ;
79- vectorized .similarityFunction = similarityFunction ;
80- vectorized .setup (data );
81-
82- float [] result = vectorized .score ();
83-
84- assertArrayEqualsPercent ("single scoring, scalar VS vectorized" , expected , result , deltaPercent , DEFAULT_DELTA );
85- } finally {
86- scalar .teardown ();
87- vectorized .teardown ();
88- IOUtils .rm (scalar .tempDir );
89- IOUtils .rm (vectorized .tempDir );
53+ var data = VectorScorerOSQBenchmark .generateRandomVectorData (new Random (seed ), dims , bits , int4Encoding , similarityFunction );
54+
55+ float [] expected = null ;
56+ for (var impl : VectorScorerOSQBenchmark .VectorImplementation .values ()) {
57+ VectorScorerOSQBenchmark bench = new VectorScorerOSQBenchmark ();
58+ bench .implementation = impl ;
59+ bench .dims = dims ;
60+ bench .bits = bits ;
61+ bench .directoryType = directoryType ;
62+ bench .int4Encoding = int4Encoding ;
63+ bench .similarityFunction = similarityFunction ;
64+ bench .setup (data );
65+
66+ try {
67+ float [] result = bench .score ();
68+ // just check against the first one - they should all be identical to each other
69+ if (expected == null ) {
70+ expected = result ;
71+ continue ;
72+ }
73+ assertArrayEqualsPercent (impl .toString (), expected , result , deltaPercent , DEFAULT_DELTA );
74+ } finally {
75+ bench .teardown ();
76+ IOUtils .rm (bench .tempDir );
77+ }
9078 }
9179 }
9280 }
9381
94- public void testBulkScalarVsVectorized () throws Exception {
82+ public void testBulk () throws Exception {
9583 for (int i = 0 ; i < REPETITIONS ; i ++) {
9684 var seed = randomLong ();
9785
98- var scalar = new VectorScorerOSQBenchmark ();
99- var vectorized = new VectorScorerOSQBenchmark ();
100- try {
101- var data = VectorScorerOSQBenchmark .generateRandomVectorData (
102- new Random (seed ),
103- dims ,
104- bits ,
105- int4Encoding ,
106- similarityFunction
107- );
108-
109- scalar .implementation = VectorScorerOSQBenchmark .VectorImplementation .SCALAR ;
110- scalar .dims = dims ;
111- scalar .bits = bits ;
112- scalar .directoryType = directoryType ;
113- scalar .int4Encoding = int4Encoding ;
114- scalar .similarityFunction = similarityFunction ;
115- scalar .setup (data );
116-
117- float [] expected = scalar .bulkScore ();
118-
119- vectorized .implementation = VectorScorerOSQBenchmark .VectorImplementation .VECTORIZED ;
120- vectorized .dims = dims ;
121- vectorized .bits = bits ;
122- vectorized .directoryType = directoryType ;
123- vectorized .int4Encoding = int4Encoding ;
124- vectorized .similarityFunction = similarityFunction ;
125- vectorized .setup (data );
126-
127- float [] result = vectorized .bulkScore ();
128-
129- assertArrayEqualsPercent ("bulk scoring, scalar VS vectorized" , expected , result , deltaPercent , DEFAULT_DELTA );
130- } finally {
131- scalar .teardown ();
132- vectorized .teardown ();
133- IOUtils .rm (scalar .tempDir );
134- IOUtils .rm (vectorized .tempDir );
86+ var data = VectorScorerOSQBenchmark .generateRandomVectorData (new Random (seed ), dims , bits , int4Encoding , similarityFunction );
87+
88+ float [] expected = null ;
89+ for (var impl : VectorScorerOSQBenchmark .VectorImplementation .values ()) {
90+ VectorScorerOSQBenchmark bench = new VectorScorerOSQBenchmark ();
91+ bench .implementation = impl ;
92+ bench .dims = dims ;
93+ bench .bits = bits ;
94+ bench .directoryType = directoryType ;
95+ bench .int4Encoding = int4Encoding ;
96+ bench .similarityFunction = similarityFunction ;
97+ bench .setup (data );
98+
99+ try {
100+ float [] result = bench .bulkScore ();
101+ // just check against the first one - they should all be identical to each other
102+ if (expected == null ) {
103+ expected = result ;
104+ continue ;
105+ }
106+ assertArrayEqualsPercent (impl .toString (), expected , result , deltaPercent , DEFAULT_DELTA );
107+ } finally {
108+ bench .teardown ();
109+ IOUtils .rm (bench .tempDir );
110+ }
135111 }
136112 }
137113 }
0 commit comments