Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

[v0.1.0] SIGILL on AVX2-only machines

Closed
#23 2 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

  • #53 by @efegokdemir — closed without merging

Assessment

Difficulty
3/5
Estimated time
1-2 days
Newbie friendliness
58/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Active
Tech stack
cmake, cpp

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.

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.gz from 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

Dominant language
C++
Stars
150
Forks
32
Avg merge
7d 17h
Merged PRs (30d)
8

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from NVIDIA/NeMo-Speech.cpp

All issues in NVIDIA/NeMo-Speech.cpp

Similar issues

More C++ issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.