Skip to content

Commit 84017e2

Browse files
liuzequnrhdong
authored andcommitted
[Fix] Correct RECLAIM_KEY digest in remove_kernel
Set `RECLAIM_KEY` digest to `reclaim_digest` instead of `empty_digest`. This prevents probing kernels from mistakenly identifying reclaimed slots as empty candidates, reducing unnecessary memory accesses and improving performance.
1 parent 9c197a9 commit 84017e2

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

include/merlin/core_kernels.cuh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -758,7 +758,7 @@ __global__ void remove_kernel(const Table<K, V, S>* __restrict table,
758758
if (pred(current_key, current_score, pattern, threshold)) {
759759
atomicAdd(count, 1);
760760
key_pos = key_offset;
761-
bucket->digests(key_pos)[0] = empty_digest<K>();
761+
bucket->digests(key_pos)[0] = reclaim_digest<K>();
762762
(bucket->keys(key_pos))
763763
->store(static_cast<K>(RECLAIM_KEY),
764764
cuda::std::memory_order_relaxed);
@@ -815,7 +815,7 @@ __global__ void remove_kernel_v2(const uint64_t search_length,
815815
}
816816
// Only matched threads need to erase.
817817
if (match) {
818-
bucket->digests(key_idx)[0] = empty_digest<K>();
818+
bucket->digests(key_idx)[0] = reclaim_digest<K>();
819819
bucket->keys(key_idx)->store(static_cast<K>(RECLAIM_KEY),
820820
cuda::std::memory_order_relaxed);
821821
bucket->scores(key_idx)->store(static_cast<S>(EMPTY_SCORE),

0 commit comments

Comments
 (0)