|
cuDDL
|
Public Member Functions | |
| sequence_buffer_pool (cuda::stream_ref stream, size_t buffers, size_t limit, bool page_locked, bool in_place) | |
limit bounds one buffer; larger genomes stay on the loader's own growing buffer. | |
| void | set_capacity (size_t buffers, size_t reserve_each=0) |
| Number of buffers the pool may grow to. | |
| size_t | buffers () const noexcept |
| Buffers allocated so far. Read once the loaders have stopped. | |
| decompression_target | acquire (size_t bytes) |
| Returns reusable bytes, or a null target when the pool cannot serve. | |
Definition at line 867 of file database_staging.cuh.
|
inline |
limit bounds one buffer; larger genomes stay on the loader's own growing buffer.
in_place says kernels read leased buffers themselves. Otherwise only copies read them, and every consumer drops a lease once its copies have completed, so a slot is reusable as soon as it is released.
Definition at line 875 of file database_staging.cuh.
|
inline |
Returns reusable bytes, or a null target when the pool cannot serve.
Definition at line 915 of file database_staging.cuh.
|
inlinenoexcept |
Buffers allocated so far. Read once the loaders have stopped.
Definition at line 910 of file database_staging.cuh.
|
inline |
Number of buffers the pool may grow to.
With reserve_each, page-locks that many bytes per buffer at once and returns them to the pool, which keeps them, so loaders take their buffers from pinned memory. Each loader page-locking its own first buffer serialised them in the driver: with 64 loaders on a Xeon w9-3595X, 20,000 genomes spent 9% of their host time there and took 3.3 s, against 3.0 s with the reservation.
Definition at line 900 of file database_staging.cuh.