Repository navigation
Description
What happened?
Summary
gpu-scan-cli scan --gpu-file panics on every Vortex file I produce via gpu-scan-cli convert.
Immediate panic on every tokio worker:
2026-05-07T01:11:35Z INFO vortex_cuda: Registering CUDA kernels
thread 'tokio-rt-worker' panicked at vortex-error/src/lib.rs:361:13:
Assertion failed error: as_slice must be called on host buffer
0: PrimitiveData::as_slice
1: Primitive::scalar_at
2: ArrayRef::execute_scalar
3: Patches::chunk_offset_at
4: Patches::search_index
5: Patches::slice
6: BitPacked::slice
7: BitPacked::reduce_parent
8: ArrayRef::slice
9: FoR::slice
10: FoR::reduce_parent
11: ArrayRef::slice
12: CudaFlatReader::projection_evaluation
13: ChunkedReader::projection_evaluation
14: StructReader::projection_evaluation
15: scan::tasks::split_exec
(Many threads panic in parallel; backtrace is the same on each.)
Steps to reproduce
# 1. Build the tools
cargo build --release -p vortex-tui -p gpu-scan-cli
# 2. Ingest a Parquet file (TPC-H SF100 `lineitem`)
./target/release/vx convert lineitem.parquet
# → lineitem.vortex
# 3. Re-encode for CUDA
./target/release/gpu-scan-cli convert \
--input lineitem.vortex \
--output lineitem.cuda.vortex
# → succeeds
# 4. Scan
RUST_LOG=info RUST_BACKTRACE=1 \
./target/release/gpu-scan-cli scan lineitem.cuda.vortex --gpu-file
# → panics
### Environment
- Vortex commit a9dc3a2eb (develop)
- CUDA 13.0
- Linux aarch64 (NVIDIA GB10)
- Tested on TPC-H SF100 lineitem; reproduces consistently
### Additional context
I tried excluding ALPScheme and ALPRDScheme from only_cuda_compatible(), thinking the patches were ALP-related, but the same panic still occurs — looks like integer columns also trigger it.
Activity
joseph-isaacs commentedon May 8, 2026
Sorry about this we are in the process of migrating these. Ill have a fix up soon
joseph-isaacs commentedon May 8, 2026
fixed here: #7839
manish-sethi commentedon May 8, 2026
Thanks @joseph-isaacs for the quick turnaround on #7839! Pulled the latest
develop(ff120401a, which includes the fix) and re-tested.Integer columns now scan cleanly.
The original backtrace through
BitPacked::reduce_parentis gone. Confirmed by re-running the samegpu-scan-cli scan --gpu-fileagainst my regenerated.cuda.vortexfileHowever, the same panic still triggers if ALP-encoded float columns are present.
New backtrace:
thread 'main' panicked at vortex-error/src/lib.rs:361:13:
Assertion failed error: as_slice must be called on host buffer
0: PrimitiveData::as_slice
1: Primitive::scalar_at
2: ArrayRef::execute_scalar
3: Patches::chunk_offset_at
4: Patches::search_index
5: Patches::slice
6: vortex_cuda::dynamic_dispatch::plan_builder::FusedPlan::walk_slice
7: vortex_cuda::dynamic_dispatch::plan_builder::FusedPlan::walk
8: vortex_cuda::dynamic_dispatch::plan_builder::DispatchPlan::new
9: ArrayRef::execute_cuda
10: gpu_scan_cli::cmd_scan
So the integer fix works, but ALP appears to take a different code path that's still affected.
0ax1 commentedon May 11, 2026
@manish-sethi I'll have a look!
fix[gpu]: CUDA sliced patch views with device patches (#7911)
manish-sethi commentedon May 14, 2026
Thanks @0ax1 for the fix in #7911. — The original
as_slice on host bufferpanic (#7838) no longer reproduces for ALP.However, there seems to be a race condition that causes non-deterministic behavior. At times, it passes the scan, but more often it hangs, and rarely it panics.
Following is the summary of hang via gdb
Following is the trace when it panics - Multiple workers panic simultaneously with the same message.
Just to clarify - this is observed only for the columns that include patches.
0ax1 commentedon May 18, 2026
Thanks for reporting @manish-sethi! Will also have a look at this one.
fix[gpu]: retain device buffers for dyn dispatch kernel (#7980)
manish-sethi commentedon May 18, 2026
Thanks @joseph-isaacs and @0ax1 for the fixes.
I have two quick questions - if you can help answer
develop. Is it an indication that this is still under development? If that's the case, when is it expected to be released (or more stable)0ax1 commentedon May 18, 2026
@manish-sethi 👋 We use
developas ourmainbranch from which we cut releases frequently, like today. You're in luck with the cuDF integration, I just started working on that today, and planned to finish it this week.manish-sethi commentedon May 19, 2026
Thanks @0ax1 for your reply!
On the fix: I tested your earlier fix. It worked on GB10 GPU.
However, when I tried it on L4 GPU, I get a new panic.
0ax1 commentedon May 19, 2026
We don't support mixed execution between CPU/GPU yet in which we resume decompressing device buffers on the host. My assumption here is that for the
L4we blow past the shared memory capacity which is why it tries to fall back to CPU execution. I've made the error more explicit as part of: #8016.manish-sethi commentedon May 20, 2026
@0ax1 - Thanks for looking into this. Just to update you on this, there was a problem at my end. It was not a shared memory issue. Mistakenly, ptx files for the wrong architecture carried over :(
BTW, what is right communication channel to ask these kind of questions?
0ax1 commentedon May 21, 2026
There's some high-level tracking for GPU work going on right now: #7712
Thanks for reporting this! Yeah, we need to make the build setup more robust. I'll open a PR for this today.
GH issues are perfectly fine. The most direct way of communication is joining our public Slack channel: https://vortex.dev/slack. The whole team has an eye on that channel from our end.
0ax1 commentedon May 21, 2026
#8047 PR to re-trig a PTX build once the GPU config changes.
manish-sethi commentedon May 21, 2026
Thanks - @0ax1.
Sure, for continuity, I will continue here on this topic for now. For context: I'm trying to wire Vortex into Velox's cuDF path so I can run TPC-H queries against .vortex files. Based on your answer, I'd decide my next course of action.
0ax1 commentedon May 26, 2026
There's no ongoing or planned work on Velox integration as of now but it is something we talked about and would want to support in the future.
The cuDF support is almost there. We already support arrow device array export which bridges into cuDF. I'm currently working through any blockers NVIDIA/cudf#22620 and will after that add e2e support for pyVortex cuDF. In terms of timeline, picture this to be available within 2 weeks. All changes for cuDF support will land in the Vortex repo. For future ongoing conversation, I'd suggest joining the Slack channel.
0ax1 commentedon May 26, 2026
I added a rough outline for the work to do on cuDF here: #8100
manish-sethi commentedon May 27, 2026
Thanks @0ax1 for the information and for pointing me to the related issue! Specifically, for my prototype, I can plan to use item#5 in #8100 for Velox integration.
Sure, I'll ask further questions on the Slack channel. Thanks again!
fix(cuda): copy encoded device-resident children to the host in into_…