diff --git a/vortex-cuda/README.md b/vortex-cuda/README.md index 4024372adf3..f219a215e7c 100644 --- a/vortex-cuda/README.md +++ b/vortex-cuda/README.md @@ -10,6 +10,11 @@ Key files: - `vortex-cuda/src/arrow/canonical.rs`: canonical-array export to `ArrowDeviceArray`. - `vortex-test/e2e-cuda/src/lib.rs`: cuDF interop harness. +## CUDA file scans + +Local pooled file reads use fixed 8 MiB chunks with concurrency 32. These are physical +file-read/H2D chunks, independent of logical row ranges or scan batch sizes. + ## Building cuDF for Arrow Device interop The `cudf-test-harness` repository provides prebuilt cuDF binaries for Arrow Device interop testing on diff --git a/vortex-cuda/ffi/README.md b/vortex-cuda/ffi/README.md index 80e442852f7..854a07b02eb 100644 --- a/vortex-cuda/ffi/README.md +++ b/vortex-cuda/ffi/README.md @@ -24,6 +24,9 @@ Use `vx_cuda_scan_path_arrow_device_stream` to read such a local file through pi and receive an Arrow C Device stream. Reuse the same CUDA session across scans so the pinned buffer pool and CUDA state are reused as well. +Pooled data reads use fixed 8 MiB chunks and concurrency 32; +scan row ranges and batch sizes are unchanged. + On Linux, use `vx_cuda_scan_path_arrow_device_stream_with_options` with `vx_cuda_scan_options.flags = VX_CUDA_SCAN_FLAG_DIRECT_IO` to bypass the operating system page cache for pooled data-plane reads. Footer and zone-map reads remain buffered on the host. diff --git a/vortex-cuda/src/pooled_read_at/file.rs b/vortex-cuda/src/pooled_read_at/file.rs index 6d97f1c6064..cca79bbad65 100644 --- a/vortex-cuda/src/pooled_read_at/file.rs +++ b/vortex-cuda/src/pooled_read_at/file.rs @@ -38,7 +38,7 @@ pub const DEFAULT_FILE_CONCURRENCY: usize = 32; // Physical segments can exceed the coalescing limit. Split their I/O, not their encoding, // to limit blocking read sizes and start transfers before the whole segment is read. -const FILE_READ_CHUNK_BYTES: usize = 4 << 20; +const FILE_READ_CHUNK_BYTES: usize = 8 << 20; /// Options controlling how [`PooledFileReadAt`] opens and reads a local file. #[derive(Clone, Copy, Debug, Default, PartialEq, Eq)] diff --git a/vortex-cuda/src/pooled_read_at/file/tests.rs b/vortex-cuda/src/pooled_read_at/file/tests.rs index c3eb9d4cdc6..dd326f0769c 100644 --- a/vortex-cuda/src/pooled_read_at/file/tests.rs +++ b/vortex-cuda/src/pooled_read_at/file/tests.rs @@ -119,7 +119,7 @@ impl FileReadBackend for FakeFileReadBackend { } fn file_byte(offset: u64) -> u8 { - // Unlike a repeating u8 counter, this distinguishes adjacent 4 MiB chunks. + // Unlike a repeating u8 counter, this distinguishes adjacent read chunks. (offset % 251) as u8 }