aboutsummaryrefslogtreecommitdiffstats
path: root/vespalib
Commit message (Collapse)AuthorAgeFilesLines
* Use __attribute__((noinline)) instead of glibc macro __attribute_noinline__Tor Egge3 days1-1/+1
|
* Prefer 512 vector width for avx512Henning Baldersheim6 days1-1/+1
|
* Generate code for each cpu architecture.Henning Baldersheim7 days5-1/+15
|
* Speed up dotproduct for int8.Henning Baldersheim8 days2-16/+44
|
* Disable valgrind for generation handler stress tests.Arnstein Ressem8 days1-1/+1
|
* Merge pull request #31206 from vespa-engine/aressem/no-valgrind-for-btree-stressHenning Baldersheim8 days1-1/+1
|\ | | | | Dont run the btree-stress test under valgrind.
| * Dont run the btree-stress test under valgrind.Arnstein Ressem8 days1-1/+1
| |
* | Use explicit static_castHenning Baldersheim8 days1-1/+1
| |
* | Speed up bfloat16 to float conversionHenning Baldersheim9 days8-2/+31
|/
* Add benchmark for distance functionsHenning Baldersheim9 days1-1/+0
|
* Merge branch 'master' into balder/add-noexceptHenning Baldersheim2024-04-264-170/+118
|\
| * Merge pull request #31044 from vespa-engine/balder/add-noexcept-4Henning Baldersheim2024-04-262-163/+116
| |\ | | | | | | Add noexcept
| | * Add noexceptHenning Baldersheim2024-04-252-163/+116
| | |
| * | Use std::vectorHenning Baldersheim2024-04-253-8/+3
| |/
* | Add override to destructor.Henning Baldersheim2024-04-251-1/+1
| |
* | Add noexcept and remove outdated commentHenning Baldersheim2024-04-252-24/+23
|/
* Add noexceptHenning Baldersheim2024-04-254-58/+51
|
* Add noexceptHenning Baldersheim2024-04-242-90/+84
|
* Merge pull request #31016 from vespa-engine/balder/use-std-vectorHenning Baldersheim2024-04-2417-159/+146
|\ | | | | Use std::vector instead of vespalib::Array
| * Remove incorrect noexceptHenning Baldersheim2024-04-241-14/+6
| |
| * Add noexceptHenning Baldersheim2024-04-243-29/+29
| |
| * Add noexceptHenning Baldersheim2024-04-244-52/+48
| |
| * Add noexceptHenning Baldersheim2024-04-242-29/+29
| |
| * Use std::vector instead of vespalib::ArrayHenning Baldersheim2024-04-248-36/+35
| |
* | Merge pull request #31020 from ↵Henning Baldersheim2024-04-241-0/+9
|\ \ | |/ |/| | | | | vespa-engine/toregge/disable-thread-sanitizer-instrumentation-for-accelerated-and128-and-or128 Disable thread sanitizer instrumentation for anonymous get function
| * Add comment describing why instrumentation is turned off.Tor Egge2024-04-241-0/+3
| |
| * Disable thread sanitizer instrumentation for anonymous get functionTor Egge2024-04-241-0/+6
| | | | | | | | | | used by accelerated bitwise and/or. Source bitvectors might be modified due to feeding during search.
* | Add noexceptHenning Baldersheim2024-04-242-4/+4
| |
* | Add noexceptHenning Baldersheim2024-04-248-49/+49
|/
* Fix format string in hamming benchmark.Tor Egge2024-04-231-1/+2
|
* Use explicit and do not expose nbostream in headerfile.Henning Baldersheim2024-04-221-4/+4
|
* Wire fuzzy prefix matching support through the query stackTor Brede Vekterli2024-04-194-13/+41
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Adds `prefix:[true|false]` annotation support to the `fuzzy` query operator in the YQL and JSON query languages. Fuzzy prefix matching semantics are wired through to the matcher implementations for both indexed and streaming search. Example usage: {maxEditDistance:1,prefix:true}fuzzy("foo") Will match `foo`, `foobar`, `foxtrot`, `zookeeper` and so on. It can be combined with the existing prefix locking feature: {maxEditDistance:1,prefixLength:2,prefix:true}fuzzy("foo") Which will match `foo`, `foobar`, `foxtrot` etc, but _not_ `zookeeper` since the locked prefix (`fo`) does not match. Due to the complexities involved with extending the legacy binary query stack representation, signalling prefix matching for the fuzzy term is done by pragmatically adding a new, generic "prefix matching" term-level flag. This is currently ignored for everything except fuzzy query items. Modernizing the query stack format to make it more extensible (i.e. move encoding to Protobuf) is on the backlog...!
* Merge pull request #30932 from ↵Tor Brede Vekterli2024-04-1914-69/+379
|\ | | | | | | | | vespa-engine/vekterli/levenshtein-prefix-matching-algo-support Add prefix match support to Levenshtein algorithm implementations
| * Add prefix match support to Levenshtein algorithm implementationsTor Brede Vekterli2024-04-1614-69/+379
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Adds support for matching the _prefix_ of a source string against a target string (the prefix query) within a bounded maximum number of `k` max edits. Iff the number of edits required is within the specified bound, returns the _minimum_ number of edits required to transform the source string prefix to the full target string. By convention, we treat the target string as the "columnar" string in the Levenshtein matrix (i.e. its characters are column-indexed, whereas the source string is row-indexed). This matters for prefix matching, because unlike regular Levenshtein matching it is _not_ symmetric between source and target strings. By definition, the Levenshtein matrix cell at row `i`, column `j` provides the minimum number of edits required to transform a prefix of source string S (up to and including length `i`) into a prefix of target string T (up to and including length `j`). Since we want to match against the entire target (prefix query) string of length `n`, the problem is reduced to finding the minimum value of the `n`th column that is `<= k`. Example: matching the source string `abcdef` against the target `acd` with `k` == 2: a c d 0 1 2 3 a 1 0 1 2 b 2 1 1 2 c 3 2 1 2 d 4 3 2 1 e 5 4 3 2 f 6 5 4 3 In this case, the _shortest_ matching prefix is simply `a`, but the _minimum edits_ prefix is `abcd`. The latter prefix's distance is what we return. For our generalized (i.e. arbitrary `k`) Levenshtein implementation, this is implemented fairly straight forward since it operates on matrix rows already (sparsely populated around the diagonal). For the DFA implementation(s), transitioning between states in a Levenshtein DFA is equivalent to explicitly computing the (sparse) matrix columns around the diagonal for the source character being currently matched, so the same principle applies directly to it. Since we don't have any explicit notion of the value of matrix columns in the abstract DFA, a source string in prefix mode will be considered a match when _any_ DFA state is a match. By definition, this is as-if the matrix row represented by the state has a `n`th column that is <= `k`. We then follow the DFA until it can no longer match, keeping track of the lowest state edit distance encountered. This mirrors finding the row whose `n`th column minimizes `k`. Prefix matching support has been added to the core DFA matching loop algorithms, with only very minor changes to the underlying DFA implementations. Successor generation upon mismatch should work as expected with no algorithmic changes introduced for prefix matching. Prefix match mode has been added as a dimension to the exhaustive successor checking unit test.
* | Roll out binary_hamming 3 => 4Henning Baldersheim2024-04-191-1/+1
| |
* | Increase roll out of hamming distance from 2 to 3.Henning Baldersheim2024-04-181-1/+1
| |
* | Merge pull request #30933 from ↵Henning Baldersheim2024-04-172-4/+4
|\ \ | | | | | | | | | | | | vespa-engine/balder/optimize-single-subspace-with-fast-path - Optimize distance calculation for tensors with single dense subspace.
| * | - Optimize distance calculation for tensors with single dense subspace.Henning Baldersheim2024-04-162-4/+4
| |/ | | | | | | | | - Let EmptySubspace be invalid. - Add noexcept to get_tensor(s).
* | Use WORD_SZ instead of the constant 8Henning Baldersheim2024-04-171-1/+1
| |
* | Add micro benchmark for binary hamming distance.Henning Baldersheim2024-04-174-13/+69
|/
* Add Prometheus support to simple-metrics snapshot renderingTor Brede Vekterli2024-03-226-11/+241
|
* Wire Prometheus metric export to state V1 APIsTor Brede Vekterli2024-03-2110-70/+168
| | | | | | | | | | Extends metric producer classes with the requested exposition format. As a consequence, the State API server has been changed to allow emitting other content types than just `application/json`. Add custom Prometheus rendering for Slobrok, as it does its own domain-specific metric tracking. However, since it has non-destructive sampling properties, we can actually use proper `counter` types.
* Move normalize_class_name to vespalib.Tor Egge2024-03-143-0/+47
|
* Merge pull request #30550 from ↵Geir Storli2024-03-111-3/+3
|\ | | | | | | | | vespa-engine/toregge/early-exit-on-fatal-failure-in-sharded-hash-map-unit-test Early exit on fatal failure in sharded hash map unit test.
| * Early exit on fatal failure in sharded hash map unit test.Tor Egge2024-03-091-3/+3
| |
* | Merge pull request #30549 from ↵Geir Storli2024-03-111-12/+12
|\ \ | | | | | | | | | | | | vespa-engine/toregge/early-exit-on-fatal-failure-in-array-store-unit-test Early exit on fatal failure in array store unit test.
| * | Early exit on fatal failure in array store unit test.Tor Egge2024-03-091-12/+12
| |/
* | Merge pull request #30548 from ↵Geir Storli2024-03-111-26/+11
|\ \ | | | | | | | | | | | | vespa-engine/toregge/early-exit-on-fatal-error-in-frozen-btree-unit-test Early exit on fatal error in frozen btree unit test.
| * | Early exit on fatal error in frozen btree unit test.Tor Egge2024-03-091-26/+11
| |/
* / Early exit on fatal failure in unique store test.Tor Egge2024-03-091-3/+3
|/