Bounded Swa KV Page Manager#
-
class BoundedSwaKVPageManager#
Runtime-level allocator and execution-lifecycle owner for bounded SWA pages.
KVCacheManager owns the device buffers. This class owns only page IDs, sparse-table mappings, and request-local transition state. Pages staged for retirement remain leased until the existing CUDA completion point.
Public Types
-
using StreamSynchronizer = std::function<cudaError_t(cudaStream_t)>#
Public Functions
- BoundedSwaKVPageManager(
- HybridCacheManager &baseCache,
- KVPageTable &basePageTable,
- KVPageTable &swaPageTable,
- cudaStream_t stream,
- StreamSynchronizer synchronizer = {}
-
~BoundedSwaKVPageManager() noexcept#
-
BoundedSwaKVPageManager(BoundedSwaKVPageManager const&) = delete#
- BoundedSwaKVPageManager &operator=(
- BoundedSwaKVPageManager const&
- BeginRequestResult beginRequest(
- std::vector<ResidentRef> const &residents,
- cudaStream_t stream
- SwaKVCacheStatus preparePrefill(
- RequestHandle &request,
- std::vector<int32_t> const &inputLengths
-
SwaKVCacheStatus completePrefill(RequestHandle &request)#
-
SwaKVCacheStatus prepareDecodeStep(RequestHandle &request)#
-
SwaKVCacheStatus completeDecodeStep(RequestHandle &request)#
- SwaKVCacheStatus beginBatchCompaction(
- RequestHandle &request,
- std::vector<int32_t> const &oldToNew,
- int32_t newBatchSize,
- Tensor &deviceBatchMapping
-
SwaKVCacheStatus compactBatch(RequestHandle &request)#
-
SwaKVCacheStatus finish(RequestHandle &request)#
-
SwaKVCacheStatus shutdown() noexcept#
-
int32_t freePageCount() const noexcept#
-
int32_t privatePagesPerSequence() const noexcept#
- SwaKVCacheState const &state(
- RequestHandle const &request,
- int32_t slot
-
struct BeginRequestResult#
Public Members
-
SwaKVCacheStatus status = {SwaKVCacheStatus::kRequestFailed}#
-
std::optional<RequestHandle> request#
-
SwaKVCacheStatus status = {SwaKVCacheStatus::kRequestFailed}#
-
class RequestHandle#
Public Functions
-
RequestHandle(RequestHandle &&other) noexcept#
-
RequestHandle &operator=(RequestHandle &&other) = delete#
-
RequestHandle(RequestHandle const&) = delete#
-
RequestHandle &operator=(RequestHandle const&) = delete#
-
~RequestHandle() noexcept#
-
bool valid() const noexcept#
-
struct Impl#
Public Types
Public Functions
-
inline Impl(BoundedSwaKVPageManager &manager_, cudaStream_t stream_)#
Public Members
-
BoundedSwaKVPageManager *manager = {}#
-
cudaStream_t stream = {}#
-
std::vector<int32_t> inputLengths#
-
std::vector<SwaKVCacheState> states#
-
std::vector<int32_t> pendingCompactionMapping#
-
int32_t pendingCompactionBatchSize = {-1}#
-
bool deviceWorkPending = {}#
-
inline Impl(BoundedSwaKVPageManager &manager_, cudaStream_t stream_)#
-
RequestHandle(RequestHandle &&other) noexcept#
-
using StreamSynchronizer = std::function<cudaError_t(cudaStream_t)>#
-
class RequestHandle
Public Functions
-
RequestHandle(RequestHandle &&other) noexcept
-
RequestHandle &operator=(RequestHandle &&other) = delete
-
RequestHandle(RequestHandle const&) = delete
-
RequestHandle &operator=(RequestHandle const&) = delete
-
~RequestHandle() noexcept
-
bool valid() const noexcept
-
struct Impl
Public Types
-
enum class Phase : uint8_t
Values:
-
enumerator kAdmitted
-
enumerator kExecuting
-
enumerator kFinishing
-
enumerator kAdmitted
Public Functions
-
inline Impl(BoundedSwaKVPageManager &manager_, cudaStream_t stream_)
Public Members
-
BoundedSwaKVPageManager *manager = {}
-
cudaStream_t stream = {}
-
std::vector<int32_t> inputLengths
-
std::vector<SwaKVCacheState> states
-
std::vector<int32_t> pendingCompactionMapping
-
int32_t pendingCompactionBatchSize = {-1}
-
Tensor const *pendingDeviceBatchMapping = {}
-
bool deviceWorkPending = {}
-
enum class Phase : uint8_t
-
RequestHandle(RequestHandle &&other) noexcept
-
struct SwaPageBinding#
One absolute logical-to-physical binding in a bounded SWA window.
-
struct SwaKVCacheState#
Request-local execution state for one bounded SWA sequence.
Logical positions and the completed endpoint remain absolute. The compact physical bindings are only an execution view and never identify a reusable prefix. Context reuse may seed or consume settled state in a later integration, but it does not own window rotation.
Public Members
-
ResidentRef resident#
-
int32_t pageSizeTokens = {}#
-
int32_t windowSizeTokens = {}#
-
int32_t exactResidentTokenCount = {}#
-
int32_t retainedLogicalPageBegin = {}#
-
int32_t retainedLogicalPageEnd = {}#
-
std::deque<SwaPageBinding> pageBindings#
-
std::vector<SwaPageBinding> newPageBindings#
-
std::vector<SwaPageBinding> pendingRetireBindings#
-
std::optional<int32_t> pendingEndpoint#
-
ResidentRef resident#
-
struct BeginRequestResult
Public Members
-
SwaKVCacheStatus status = {SwaKVCacheStatus::kRequestFailed}
-
std::optional<RequestHandle> request
-
SwaKVCacheStatus status = {SwaKVCacheStatus::kRequestFailed}