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.
What happened?
Summary
gpu-scan-cli scan --gpu-filepanics on every Vortex file I produce viagpu-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