Skip to content

2-runtime/kvlang-runtime 的概念与调度设计(main/ext + myrwircaps) #189

Description

@miaobyte

参考文档:array2d/kvlang多线程进程调度方案.md(owner 工作区根,非本仓库内),本 issue 是其三条核心的落地纲领。

1. kvlang-runtime 分 main 与 ext

  • main-runtime(runtime-c、runtime-rs):能处理控制流 + 函数调用 rwir,因而能推进 vthread 的 pc;runtime-rs 把控制流/调用部分经 FFI 包给 runtime-c。
  • ext-runtime(numpy、json 等):只能处理自己能力集内的叶算子 rwir,不能驱动 vthread,是纯 worker——叶算子的批量顺序求值器(拿到一个 pc,沿 NextPc 连续执行一整段己方 rwir,遇第一条非己 op 即停并交接)。

详见参考文档 §1(含 rwir 三分类判定表与 main/ext 对称性)。

2. 每个 runtime 进程内定义 myrwircaps

  • 每个 runtime 进程内维护唯一一张能力表 myrwircaps
  • 所有 runtime(main + ext)在 execute 大循环中,只查询自己进程的 myrwircaps
  • fetch 到的新 rwir 若不在 myrwircaps → 进入调度阶段(移交给有能力处理它的 runtime,见参考文档 §3)。
  • 现状映射(这些即 myrwircaps 的雏形,需统一改名为 myrwircaps):
    • runtime-rs:REGS / rwirmap / is_inproc / is_others_rwirruntime-rs/src/rwir/mod.rs
    • runtime-c:native builtin dispatch 表 / kvlangBuiltinIsNativeruntime/src/builtin.c
    • numpy(ext):OPS 表(runtime-rwirext_example/py/numpy/numpy.py

3. myrwircaps 同步到 kvspace

  • 每个 runtime 的 myrwircaps 除进程内持有外,还需同步到 kvspace,供调度层据此把 rwir 路由到有能力的 runtime(对应参考文档 §3.2 能力注册 + /networld 名册)。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions