You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[Engine] isa_guard_check fails on Linux builds: tq_rows_avx512 (tq_avx512.cpp) is not in WIDE_PUBLIC / WIDE_OBJECTS #3409
[Engine] (speed, kernels, models, the server and API)
Desktop app, Terminal or source?
Source (START-HERE.bat, setup.sh or a build)
What happened
Expected: isa_guard_check passes when every wide-ISA function is reached only behind a CPU check. Actual: it fails on one such function.
On a CUDA build of 0.2.0-beta with -DSTRATA_BUILD_TESTS=ON -DSTRATA_ISA_FLOOR=avx, ctest isa_guard_check fails:
check_isa_guard: .../libstrata_kernels_cpu.a: 481 functions, 70 hold wide-ISA instructions, 1 not allowed
VIOLATION strata::kernels::cpu::tq_detail::tq_rows_avx512(int, unsigned char const*, unsigned long, int, strata::kernels::cpu::tq_detail::TqAct const* const*, int, float* (606 wide instructions, first vmovq): wide-ISA code in an unlisted public function
#3358 shows the same violation on a HIP build ("outside the wide-ISA translation units (object tq_avx512.cpp.o)"), mentioned there as a side note.
As far as I can see this is a gap in the list, not an unguarded call. tq_rows_avx512 is reached only through tq_rows(tq_isa(), ...) (tq_cpu.cpp:174). tq_isa() picks TqIsa::avx512 only when tq_isa_ok(TqIsa::avx512) → cpu_avx512_ok(), and tq_rows aborts on an ISA the CPU lacks (tq_cpu.cpp:185). This host has no AVX2. No illegal instruction was seen in the engine or in any other test. All the AVX1/AVX2 parity tests pass: router_dot_parity_avx, iq_avx1_parity, iq_avx2_parity, q8k_quant_parity_avx.
Suggested change (tested here) in tools/check_isa_guard.py:
add "tq_rows_avx512" to WIDE_PUBLIC
add "tq_avx512.cpp" to WIDE_OBJECTS (so it is also in INIT_FREE_OBJECTS)
With these three changes the check reports 0 not allowed on the same library. tq_avx2.cpp currently has no static initialiser, so adding it changes nothing today; it guards against a future one.
Related, also seen here (already listed in #3358):tq_cpu_parity, tq_cpu_parity_avx2 and native_hadamard_test print this ggml has no trellis types (build with STRATA_GGML_DIR = the agention ... fork) and exit as failed. With the default upstream llama.cpp they would read better as skipped (SKIP_RETURN_CODE 77).
Activity
Niko1221 commentedon Oct 29, 2026
Thank you. Fixed in 0.2.2: the ISA guard knows
tq_rows_avx512andtq_avx512.cpp, soisa_guard_checkpasses on a normal build.Release: https://github.com/Niko1221/Strata/releases/tag/v0.2.2