背景
CPU tensor 的 data 缓冲区放在哪、由谁管理,需要一次定档。这直接决定独立仓 array2d/deepx-cpu-kvspace-extstore(原 deepx-heapmem-cpu)是否有存在必要。
参见架构分层:kvspace 分元存(slot + 索引,存 shape/dtype/引用)与扩展存储(大 value / tensor data 实体)两层;kindexpr @ 前缀标记「扩展世界句柄」——真实 xvalue 不在元存,元存只留一条元信息,实体读写走扩展存储。
两个选择
方案 1:tensor.data 直接由 kvspace-c 的 shm 管理
CPU 上的 tensor 实体数据就是 kvspace 共享内存里的一段 raw bytes,shm_set_raw / read_tlv 直接读写,kvlang 直接向 kvspace 申请一块 tensor data。
- 现状:已默认支持。kvlang 可直接向 kvspace 申请 tensor 的 data,无需外部执行器介入。
- 含义:CPU 场景下 kvspace 本体即扩展存储,没有独立的 extstore 进程/库。
方案 2:tensor.data 作为 @ 引用路径,由 deepx-cpu-kvspace-extstore 管理
元存里只放一个 @ 句柄(extindex / extpath 已有原型),tensor 实体由独立后端 deepx-cpu-kvspace-extstore 分配与管理其生命周期。
- 含义:CPU 与 GPU(显存)走同一套 extstore 契约——元存存
@ 引用,实体在扩展世界,后端负责生命周期。
- 代价:多一个进程/库、多一跳;CPU 上 shm 本已是共享内存,额外间接层的收益需论证。
待决问题
方案 1 已经跑通并默认可用。问题是方案 2 是否还有存在必要:
- CPU 场景下,把 tensor.data 从 shm 内联改为
@ 引用 + 独立后端,能带来什么 shm 直管拿不到的能力?(跨进程共享?生命周期/引用计数?与 GPU 后端的接口统一?)
- 若唯一价值是「与 GPU extstore 接口对齐」,能否让 CPU 直接复用 shm 作为 extstore 的一种后端实现,而非另起一个
deepx-cpu-kvspace-extstore 仓?
- 若方案 2 无独立价值,
deepx-cpu-kvspace-extstore 应归档/删除。
决策产出
结论应明确二选一,并据此决定 deepx-cpu-kvspace-extstore 的存留。
背景
CPU tensor 的
data缓冲区放在哪、由谁管理,需要一次定档。这直接决定独立仓array2d/deepx-cpu-kvspace-extstore(原deepx-heapmem-cpu)是否有存在必要。参见架构分层:kvspace 分元存(slot + 索引,存 shape/dtype/引用)与扩展存储(大 value / tensor data 实体)两层;kindexpr
@前缀标记「扩展世界句柄」——真实 xvalue 不在元存,元存只留一条元信息,实体读写走扩展存储。两个选择
方案 1:tensor.data 直接由 kvspace-c 的 shm 管理
CPU 上的 tensor 实体数据就是 kvspace 共享内存里的一段 raw bytes,
shm_set_raw/read_tlv直接读写,kvlang 直接向 kvspace 申请一块 tensor data。方案 2:tensor.data 作为
@引用路径,由deepx-cpu-kvspace-extstore管理元存里只放一个
@句柄(extindex / extpath 已有原型),tensor 实体由独立后端deepx-cpu-kvspace-extstore分配与管理其生命周期。@引用,实体在扩展世界,后端负责生命周期。待决问题
方案 1 已经跑通并默认可用。问题是方案 2 是否还有存在必要:
@引用 + 独立后端,能带来什么 shm 直管拿不到的能力?(跨进程共享?生命周期/引用计数?与 GPU 后端的接口统一?)deepx-cpu-kvspace-extstore仓?deepx-cpu-kvspace-extstore应归档/删除。决策产出
结论应明确二选一,并据此决定
deepx-cpu-kvspace-extstore的存留。