Skip to content

Commit 0f56de1

Browse files
committed
prefetch only next
1 parent 97f167f commit 0f56de1

File tree

1 file changed

+6
-13
lines changed
  • server/src/main/java/org/elasticsearch/index/codec/vectors/cluster

1 file changed

+6
-13
lines changed

server/src/main/java/org/elasticsearch/index/codec/vectors/cluster/KMeansLocal.java

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,6 @@ static float[][] pickInitialCentroids(PrefetchingFloatVectorValues vectors, int
5353
Random random = new Random(42L);
5454
int centroidsSize = Math.min(vectors.size(), centroidCount);
5555
float[][] centroids = new float[centroidsSize][vectors.dimension()];
56-
vectors.prefetch(0, centroidsSize - 1);
5756
for (int i = 0; i < vectors.size(); i++) {
5857
float[] vector;
5958
if (i < centroidCount) {
@@ -81,13 +80,10 @@ private static boolean stepLloyd(
8180
int dim = vectors.dimension();
8281
centroidChanged.clear();
8382
final float[] distances = new float[4];
84-
// prefetch the first 4 and then we prefetch in batches of 4
85-
// prefetching everything seems like overkill
86-
vectors.prefetch(0, 3);
83+
vectors.prefetch(0);
8784
for (int idx = 0; idx < vectors.size(); idx++) {
88-
if (idx % 3 == 0 && idx < vectors.size() - 1) {
89-
// prefetch the next 4 vectors
90-
vectors.prefetch(idx + 1, Math.min(idx + 4, vectors.size() - 1));
85+
if (idx < vectors.size() - 1) {
86+
vectors.prefetch(idx + 1);
9187
}
9288
float[] vector = vectors.vectorValue(idx);
9389
int vectorOrd = translateOrd.apply(idx);
@@ -288,13 +284,10 @@ private void assignSpilled(
288284

289285
float[] diffs = new float[vectors.dimension()];
290286
final float[] distances = new float[4];
291-
// prefetch the first 4 and then we prefetch in batches of 4
292-
// prefetching everything seems like overkill
293-
vectors.prefetch(0, 3);
287+
vectors.prefetch(0);
294288
for (int i = 0; i < vectors.size(); i++) {
295-
if (i % 3 == 0 && i < vectors.size() - 1) {
296-
// prefetch the next 4 vectors
297-
vectors.prefetch(i + 1, Math.min(i + 4, vectors.size() - 1));
289+
if (i < vectors.size() - 1) {
290+
vectors.prefetch(i + 1);
298291
}
299292
float[] vector = vectors.vectorValue(i);
300293
int currAssignment = assignments[i];

0 commit comments

Comments
 (0)