diff --git a/src/llama-kv-cache.cpp b/src/llama-kv-cache.cpp index 3df5cedd082e..d406353d564c 100644 --- a/src/llama-kv-cache.cpp +++ b/src/llama-kv-cache.cpp @@ -403,7 +403,8 @@ bool llama_kv_cache::seq_rm(llama_seq_id seq_id, llama_pos p0, llama_pos p1) { uint32_t new_head = cells.size(); - for (uint32_t i = 0; i < cells.size(); ++i) { + // cells outside the used range are empty + for (uint32_t i = cells.used_min(), i_end = cells.used_max_p1(); i < i_end; ++i) { if (!cells.pos_in(i, p0, p1)) { continue; } @@ -427,7 +428,7 @@ bool llama_kv_cache::seq_rm(llama_seq_id seq_id, llama_pos p0, llama_pos p1) { uint32_t new_head = cells.size(); - for (uint32_t i = 0; i < cells.size(); ++i) { + for (uint32_t i = cells.used_min(), i_end = cells.used_max_p1(); i < i_end; ++i) { if (!cells.pos_in(i, p0, p1)) { continue; }