NVIDIA / NVIDIA/NeMo-Speech.cpp
[v0.1.0] SIGILL on AVX2-only machines
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 117
- Forks
- 29
- Avg merge
- 4d 15h
- Merged PRs (30d)
- 6
Description
Hello 👋
The published CPU tarball for v0.1.0 dies with SIGILL on a machine that has AVX2 but no AVX-512. The name linux-x86_64-cpu reads as a generic x86_64 build, so I didn't expect that.
Setup
nemo-speech-0.1.0-linux-x86_64-cpu.tar.gzfrom the GitHub release- Host: AVX2 + FMA + BMI2, no AVX-512 (x264:
MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2) - Parakeet TDT 0.6B GGUF via
nemo_speech_asr_recognize_f32, and streaming Nemotron (same ggml)
Model load is fine. The first real decode kills the process:
SIGILL: illegal instruction
signal arrived during cgo execution
instruction bytes: 0x62 0xf1 0x7f 0x28 0x7f 0x44 0x24 0x2 ...
0x62 is EVEX (AVX-512). ggml also prints AMX is not ready to be used! just before that, but it still ends up on a path that faults.
Rebuilding from source with GGML_NATIVE=OFF and AVX-512 disabled works on this box, so it looks like a packaging issue rather than the models or the C API.
I poked at the public tree a bit. There is no GitHub Actions job that produces these tarballs (only pre-commit), so I can't see the exact release flags. cpu-asr in CMakePresets.json never sets GGML_NATIVE, and ggml defaults that to ON (-march=native) unless you turn it off. The in-tree Docker build does pass -DGGML_NATIVE=OFF, but that's the CUDA image, not this CPU archive.
Best guess: the CPU artifact was configured like cmake --preset cpu-asr on a builder that has AVX-512, so native got baked in.
I'd expect a *-linux-x86_64-cpu* archive to run on AVX2, or for the release notes / filename to say AVX-512 is required.
For the actual binaries, something like whisper.cpp / llama.cpp portable CPU builds would help: GGML_NATIVE=OFF, AVX/AVX2/FMA on, AVX-512 off. Two tarballs (avx2 / avx512) would also be fine if that's easier.
Thomas
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the cpu-asr preset in CMakePresets.json and compare its GGML_NATIVE settings with the in-tree Docker build, which passes GGML_NATIVE=OFF. Trace how the v0.1.0 CPU tarball was configured, then verify that the published binaries run through a real decode on an AVX2-only host without SIGILL.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cmake, cpp
- Domain
- build-system, release
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 58/100