Conversation
Signed-off-by: Onur Satici <onur@spiraldb.com>
Polar Signals Profiling ResultsLatest Run
Previous Runs (1)
Powered by Polar Signals Cloud |
Benchmarks: PolarSignals ProfilingSummary
Detailed Results Table
|
Benchmarks: TPC-H SF=1 on NVMESummary
Detailed Results Table
|
Benchmarks: FineWeb NVMeSummary
Detailed Results Table
|
Benchmarks: TPC-H SF=1 on S3Summary
Detailed Results Table
|
🚨🚨🚨❌❌❌ SQL BENCHMARK FAILED ❌❌❌🚨🚨🚨Benchmark |
Benchmarks: TPC-DS SF=1 on NVMESummary
Detailed Results Table
|
Benchmarks: FineWeb S3Summary
Detailed Results Table
|
Benchmarks: Statistical and Population GeneticsSummary
Detailed Results Table
|
Benchmarks: Random AccessSummary
Detailed Results Table
|
Benchmarks: TPC-H SF=10 on S3Summary
Detailed Results Table
|
Benchmarks: Clickbench on NVMESummary
Detailed Results Table
|
Benchmarks: CompressionSummary
Detailed Results Table
|
There was a problem hiding this comment.
This seems to draw some weird boundaries?
What's the goal here? To move Vortex towards a buffer pool? Or to allow I/O to read into both host and device buffers?
Feels like the sort of thing we should have a discussion / rfc for! But don't want to stall your experiments on this
|
yes we could use a discussion here, the goal is to have control on how the buffer handles are created during a scan. I want to use a vortex read at implementation, but I also want to control the allocations |
|
How would for example CUDA host mem malloc fit into this? |
| /// A destination for I/O reads that can be finalized into a [`BufferHandle`]. | ||
| pub trait WriteTarget: Send + 'static { | ||
| /// Returns the buffer as a mutable slice. | ||
| fn as_mut_slice(&mut self) -> &mut [u8]; |
There was a problem hiding this comment.
would it make more sense to return an uninit slice? that way we can avoid zero-initializing all the memory. maybe that's too much of a microoptimization
Summary
Add buffer allocator trait and a simple cpu buffer pool.
VortexReadAtnow can own a buffer pool through a lower level traitReadInto, and AllocatingReader will bridge them.This PR adds the types, but doesn't wire the buffer pool in yet. The existing ReadAt implementors currently use the default allocator, which allocates a fresh new BufferMut per call