Fixed 与 Dynamic
两种公开切片模式都从普通未切片 Auto winner 出发,但是否允许改变路径不同。
本页目录
公开值只有 fixed 和 dynamic
| 模式 | 是否默认 | 是否需要 target_size | 路径是否允许改变 |
|---|---|---|---|
| fixed | 是 | 执行切片时需要;没有目标时不做额外工作 | 否 |
| dynamic | 否 | 必须同时提供 | 是,但不保证一定改变 |
Warning
只有两种公开模式
公开切片模式严格只有 fixed 与 dynamic。这里的 slicing mode 与 Auto pathfinding 是两个不同概念。
两种模式的共同起点
给出 target_size 后,Auto 先完成普通未切片路径规划。切片模式只决定随后怎样处理这条路径;它不会把 target_size 解释成另一种路径搜索预设。
Fixed
initial SSA tree=final SSA tree
sliced_legs = {c}保持收缩顺序,只选择切片指标。
Dynamic
initial SSA tree→possible final tree
sliced_legs = {c}选择切片指标时允许局部重构。图示为路径发生调整的情况。
顶层最终 path、slice 字段以及 slicing_report.final_ssa_path 描述切片后交付的结果;比较 fixed 与 dynamic 时,应使用这些最终字段。
模式语义
| 步骤 | fixed | dynamic |
|---|---|---|
| 输入 | 普通未切片 winner | 同一类普通未切片 winner |
| 切片腿 | find_slices_to_size 固定路径选择 | 每轮根据当前路径重新选择 |
| 路径改进 | 不运行 | slice-and-reconfigure |
| 调整范围 | 无额外路径重构 | 有限的局部路径调整;具体配置可随版本变化 |
| 最终路径 | 与输入 SSA path 相同 | 可能不同,也可能恰好相同 |
from arctn import arctn_schedule
fixed = arctn_schedule(
inputs, output, size_dict,
preset="heavy", target_size=2**24,
slicing_mode="fixed", seed=0,
)
dynamic = arctn_schedule(
inputs, output, size_dict,
preset="heavy", target_size=2**24,
slicing_mode="dynamic", seed=0,
)
不可达目标与时间边界
两种模式都会在最终 path/sliced legs 配对上重新检查整数 target_size。没有合法方案时,Rust 返回 Err,Python 高层抛出 ValueError;不会返回一条未切片、违反上限的路径。
max_time 是普通路径搜索阶段的协作式停止条件,不是可抢占的进程级硬超时。用户已经请求 target_size 时,最终交付的 path 与 sliced legs 仍必须通过整数约束复核;不能因为时间条件触发,就把违反目标的方案作为成功结果返回。
Warning
协作式时间上限
严格的端到端墙钟上限由进程级 watchdog、MPI launcher 或作业调度系统实施,并覆盖寻路、切片、序列化和数值执行;max_time=10 仅表示普通路径搜索阶段的协作式时间条件。