Summary
The full test-backend-ops sweep on a GB10 (sm_121) segfaults inside ggml_backend_cuda_graph_compute when it reaches the first ROLL case. It is deterministic (3 of 3 runs, two different builds), it is on the base branch, and it goes away with GGML_CUDA_DISABLE_GRAPHS=1, which then passes the whole sweep. ROLL on its own passes, so the crash depends on graph state accumulated by earlier cases.
Environment
feature/turboquant-kv-cache at c26baf1 (also reproduced at 80be9a7)
- NVIDIA GB10, driver 580.173.02,
-DGGML_CUDA=ON -DCMAKE_CUDA_ARCHITECTURES=121, Release
- gcc + nvcc from
/usr/local/cuda
Repro
./build/bin/test-backend-ops test -b CUDA0
...
PAD_REFLECT_1D(type=f32,ne_a=[3000,384,4,1],pad_0=10,pad_1=9): OK
ROLL(shift0=3,shift1=-2,shift3=1,shift4=-1):
Segmentation fault (core dumped)
9857 cases pass before the crash. Backtrace (base build, no debug symbols):
#0 ggml_backend_cuda_graph_compute(ggml_backend*, ggml_cgraph*) libggml-cuda.so.0
#1 ggml_backend_graph_compute
#2 ggml_backend_compare_graph_backend
#3 test_case::eval(...)
Control:
./build/bin/test-backend-ops test -b CUDA0 -o ROLL
1/1 tests passed (three runs)
GGML_CUDA_DISABLE_GRAPHS=1 ./build/bin/test-backend-ops test -b CUDA0
18408/18408 tests passed
Notes
Summary
The full
test-backend-opssweep on a GB10 (sm_121) segfaults insideggml_backend_cuda_graph_computewhen it reaches the firstROLLcase. It is deterministic (3 of 3 runs, two different builds), it is on the base branch, and it goes away withGGML_CUDA_DISABLE_GRAPHS=1, which then passes the whole sweep.ROLLon its own passes, so the crash depends on graph state accumulated by earlier cases.Environment
feature/turboquant-kv-cacheat c26baf1 (also reproduced at 80be9a7)-DGGML_CUDA=ON -DCMAKE_CUDA_ARCHITECTURES=121, Release/usr/local/cudaRepro
9857 cases pass before the crash. Backtrace (base build, no debug symbols):
Control:
Notes