diff options
author | Clint Herron <hanclinto@gmail.com> | 2024-04-11 21:44:50 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-11 21:44:50 -0400 |
commit | 04a5ac211ef40936295980b7cdf0ba6e97093146 (patch) | |
tree | 75d9d953c3292f55dfc1b50c447fa42a74129972 | |
parent | f7001ccc5aa359fcf41bba19d1c99c3d25c9bcc7 (diff) |
Optimization: eliminate addition of redundant stacks when advancing grammar. (#6616)
-rw-r--r-- | llama.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
@@ -11861,7 +11861,9 @@ static void llama_grammar_advance_stack( std::vector<std::vector<const llama_grammar_element *>> & new_stacks) { if (stack.empty()) { - new_stacks.emplace_back(stack); + if (std::find(new_stacks.begin(), new_stacks.end(), stack) == new_stacks.end()) { + new_stacks.emplace_back(stack); + } return; } @@ -11898,7 +11900,10 @@ static void llama_grammar_advance_stack( } case LLAMA_GRETYPE_CHAR: case LLAMA_GRETYPE_CHAR_NOT: - new_stacks.emplace_back(stack); + if (std::find(new_stacks.begin(), new_stacks.end(), stack) == new_stacks.end()) { + // only add the stack if it's not a duplicate of one we already have + new_stacks.emplace_back(stack); + } break; default: // end of alternate (LLAMA_GRETYPE_END, LLAMA_GRETYPE_ALT) or middle of char range |