sparkle/native/ext/pool/side_region.h
fiser_jun 4745f264b2
2026-08-04 14:34:00 +08:00

22 lines
1.3 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 段散写持久侧区缓存zero-copy dual-source 默认路径keep/evict/read-delta
// 命中缺口时 pread blob 行并把各段 memcpy 进对应 per-key 池数组的 (base_row+cache_row) 行。
#pragma once
#include "../common.h"
#include <unordered_map>
mx::array prefetch_pool_sideregion(
const std::vector<mx::array>& pool_list, const std::vector<int>& seg_nbytes,
const mx::array& expert_ids, int layer, const std::string& path, int stride,
const std::vector<int>& resident, int spec_slots, int base_row, int gen,
mx::StreamOrDevice s);
std::vector<int> sideregion_contents(int layer, int gen); // [expert, phys_row, ...]
std::pair<mx::array, mx::array> sideregion_kv(int layer, int gen); // (keys uint32, vals int32) device 数组
void sideregion_reset();
// 排空侧区在途 fill阻塞直到所有已提交的侧区预取字节写完。消费方在前向开头调用
// 保证被消费的侧区行字节已完全写好(闭合异步写-读竞态)。
void sideregion_drain();
// 内部接口(不绑 Python取某层某代侧区 e2r 快照,供 demand_dual 在自己的核心状态机里
// 叠加侧区命中。等价于在 g_side 锁下拷贝 e2r与原 demand_dual 内联循环一字不差)。
std::unordered_map<int, int> sideregion_snapshot(int layer, int gen);