26 lines
1.1 KiB
Bash
Executable File
26 lines
1.1 KiB
Bash
Executable File
#!/bin/sh
|
|
# Build + RUN the M8 HNSW vector-index tests. Pure C11 (gcc/cc), stdlib + libm
|
|
# only. This is a standalone C module — NOT folded through elb/elc.
|
|
#
|
|
# Two passes:
|
|
# 1. PERF — optimised (-O2, no sanitizer): the real recall@10 gate + speedup
|
|
# numbers at full size (N=5000 recall, N=5000/20000 speedup).
|
|
# 2. SAFETY — ASan + UBSan on the same suite at reduced size (VINDEX_QUICK=1);
|
|
# memory-safety is size-independent, so this stays fast.
|
|
set -e
|
|
HERE=$(cd "$(dirname "$0")" && pwd)
|
|
RT="$HERE/../../lang/runtime"
|
|
CC=${CC:-cc}
|
|
SRC="$HERE/test_vindex.c $RT/engram_vindex.c $RT/engram_store.c"
|
|
WARN="-std=c11 -Wall -Wextra"
|
|
TMP=$(mktemp -d)
|
|
|
|
echo "### PASS 1: PERF (optimised, un-sanitised) — recall gate + speedup"
|
|
$CC $WARN -O2 -I"$RT" $SRC -lm -o "$TMP/perf"
|
|
"$TMP/perf"
|
|
|
|
echo
|
|
echo "### PASS 2: SAFETY (ASan/UBSan, reduced size)"
|
|
$CC $WARN -O1 -g -fsanitize=address,undefined -fno-omit-frame-pointer -I"$RT" $SRC -lm -o "$TMP/safe"
|
|
VINDEX_QUICK=1 ASAN_OPTIONS=${ASAN_OPTIONS:-detect_leaks=0} UBSAN_OPTIONS=halt_on_error=1 "$TMP/safe"
|