From: Clint Herron Date: Fri, 12 Apr 2024 01:44:50 +0000 (-0400) Subject: Optimization: eliminate addition of redundant stacks when advancing grammar. (#6616) X-Git-Tag: upstream/0.0.4488~1833 X-Git-Url: https://git.djapps.eu/?a=commitdiff_plain;h=04a5ac211ef40936295980b7cdf0ba6e97093146;p=pkg%2Fggml%2Fsources%2Fllama.cpp Optimization: eliminate addition of redundant stacks when advancing grammar. (#6616) --- diff --git a/llama.cpp b/llama.cpp index ad07059c..73ff6070 100644 --- a/llama.cpp +++ b/llama.cpp @@ -11861,7 +11861,9 @@ static void llama_grammar_advance_stack( std::vector> & 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