Skip to content

gpu-scan-cli scan --gpu-file panics with "as_slice must be called on host buffer" #7838

@manish-sethi

Description

@manish-sethi

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions