diff --git a/.claude/rules/ascend.md b/.claude/rules/ascend.md index 593b2b7d18..04e496391d 100644 --- a/.claude/rules/ascend.md +++ b/.claude/rules/ascend.md @@ -1,6 +1,6 @@ # Ascend Architecture Quick Reference -See [docs/hardware/chip-architecture.md](../../docs/hardware/chip-architecture.md) for the **hardware substrate** (Host CPU / AICPU / AICore tiers, PCIe boundary, cache-coherency entry point) — shared across a2a3 and a5. See [docs/chip-level-arch.md](../../docs/chip-level-arch.md) for the **software three-program model** (host `.so` + AICPU `.so` + AICore `.o`) layered on top: full diagram, API layers, execution flow, handshake protocol. See [docs/hierarchical_level_runtime.md](../../docs/hierarchical_level_runtime.md) for the L0–L6 level model and component composition, and [docs/task-flow.md](../../docs/task-flow.md) for end-to-end task data flow. +See [docs/hardware/chip-architecture.md](../../docs/hardware/chip-architecture.md) for the **hardware substrate** (Host CPU / AICPU / AICore tiers, PCIe boundary, cache-coherency entry point) — shared across a2a3 and a5. See [docs/chip-level-arch.md](../../docs/chip-level-arch.md) for the **software three-program model** (host `.so` + AICPU `.so` + AICore `.o`) layered on top: full diagram, API layers, execution flow, handshake protocol. See [docs/hierarchical-level-runtime.md](../../docs/hierarchical-level-runtime.md) for the L0–L6 level model and component composition, and [docs/task-flow.md](../../docs/task-flow.md) for end-to-end task data flow. ## Key Concepts diff --git a/.claude/skills/dfx-analyze/SKILL.md b/.claude/skills/dfx-analyze/SKILL.md index 0b9207fe80..45df590b17 100644 --- a/.claude/skills/dfx-analyze/SKILL.md +++ b/.claude/skills/dfx-analyze/SKILL.md @@ -9,7 +9,7 @@ simpler already ships end-user analysis CLIs under `simpler_setup.tools` — **use them; do not re-invent timing/instrumentation in the runtime.** Canonical reference (tool flags, examples, output paths): `simpler_setup/tools/README.md`. Per-DFX docs: `docs/dfx/` (`l2-timing.md`, `sched-overhead-model.md`, -`l2-swimlane-profiling.md`, `scope-stats.md`, `dep_gen.md`, `args-dump.md`). +`l2-swimlane-profiling.md`, `scope-stats.md`, `dep-gen.md`, `args-dump.md`). ## Pick the tool by question diff --git a/README.md b/README.md index f569946aff..021b31bd99 100644 --- a/README.md +++ b/README.md @@ -97,7 +97,7 @@ Building **on** simpler? Start at **[docs/user/](docs/user/README.md)** — how- | -------- | ----------- | | [Capability Survey](docs/capability-survey.md) | Status snapshot: what is shipped, gated, or design-only across topology (L2→L4), CANN launch, and comm engines | | [Chip-Level Architecture](docs/chip-level-arch.md) | L2 single-chip: three-program model (host/AICPU/AICore), API layers, handshake protocol | -| [Hierarchical Level Runtime](docs/hierarchical_level_runtime.md) | L0–L6 level model, component composition (Orchestrator / Scheduler / Worker) | +| [Hierarchical Level Runtime](docs/hierarchical-level-runtime.md) | L0–L6 level model, component composition (Orchestrator / Scheduler / Worker) | | [Task Flow](docs/task-flow.md) | End-to-end data flow: Callable / TaskArgs / CallConfig handles, IWorker interface | | [Orchestrator](docs/orchestrator.md) | DAG submission internals: submit flow, TensorMap, Scope, Ring, task state machine | | [Scheduler](docs/scheduler.md) | DAG dispatch internals: wiring/ready/completion queues, dispatch loop | diff --git a/docs/README.md b/docs/README.md index 22547a00f2..7e45a61b73 100644 --- a/docs/README.md +++ b/docs/README.md @@ -8,6 +8,9 @@ New docs belong in one of the groups below, and in a subdirectory when the group already has one (`dfx/`, `hardware/`, `troubleshooting/`, `investigations/`). Add the row here in the same commit — an unlisted doc is invisible. +**File names are kebab-case** (`chip-level-arch.md`), including when the doc is +named after a code identifier that uses underscores. + ## Start here Two audiences use this tree. If you are **building on** simpler — writing @@ -29,7 +32,7 @@ changing simpler's own internals. | Document | What it covers | | -------- | -------------- | | [Chip-Level Architecture (L2)](chip-level-arch.md) | Three-program model (host / AICPU / AICore), API layers, handshake | -| [Hierarchical Level Runtime](hierarchical_level_runtime.md) | The L0–L6 level model and component composition | +| [Hierarchical Level Runtime](hierarchical-level-runtime.md) | The L0–L6 level model and component composition | | [Task Flow](task-flow.md) | Callable / TaskArgs / CallConfig pass-through, `IWorker` | | [Orchestrator](orchestrator.md) | DAG submission: TensorMap, Scope, Ring, task state machine | | [Scheduler](scheduler.md) | DAG dispatch: wiring / ready / completion queues, dispatch loop | @@ -83,7 +86,7 @@ changing simpler's own internals. | [CI Pipeline](ci.md) | Jobs, gating, and what each pipeline stage covers | | [Python Packaging](python-packaging.md) | Wheel layout, `simpler` vs `simpler_setup`, asset packaging | | [Compiler Sanitizers](sanitizers.md) | ASAN / UBSan / TSAN builds | -| [Sim Multi-Device Isolation](sim_multi_device_isolation.md) | How the simulator isolates concurrent virtual devices | +| [Sim Multi-Device Isolation](sim-multi-device-isolation.md) | How the simulator isolates concurrent virtual devices | ## When something is broken diff --git a/docs/aicore-kernel-programming.md b/docs/aicore-kernel-programming.md index 3bab59f9a5..c0608554cb 100644 --- a/docs/aicore-kernel-programming.md +++ b/docs/aicore-kernel-programming.md @@ -5,7 +5,7 @@ How to write an AICore kernel for the `tensormap_and_ringbuffer` runtime the things that break silently when ported from native CANN code. For the broader picture see -[hierarchical_level_runtime.md](hierarchical_level_runtime.md) (where +[hierarchical-level-runtime.md](hierarchical-level-runtime.md) (where kernels sit in the L0–L6 layering), [task-flow.md](task-flow.md) (end-to-end task data flow), and [chip-level-arch.md](chip-level-arch.md) (Host / AICPU / AICore tiers). diff --git a/docs/capability-survey.md b/docs/capability-survey.md index dd655195ce..07ce7b7787 100644 --- a/docs/capability-survey.md +++ b/docs/capability-survey.md @@ -10,7 +10,7 @@ rather than restating them: - Hardware substrate → [hardware/chip-architecture.md](hardware/chip-architecture.md), [hardware/mmio-performance.md](hardware/mmio-performance.md), [hardware/cache-coherency.md](hardware/cache-coherency.md) -- Level model → [hierarchical_level_runtime.md](hierarchical_level_runtime.md) +- Level model → [hierarchical-level-runtime.md](hierarchical-level-runtime.md) - Three-program model → [chip-level-arch.md](chip-level-arch.md) - AICPU launch mechanics → [aicpu-kernel-launch-mechanisms.md](aicpu-kernel-launch-mechanisms.md) - Comm domains / overlays → [comm-domain.md](comm-domain.md), [a5-sdma-overlay.md](a5-sdma-overlay.md) @@ -33,7 +33,7 @@ be re-checked directly. ## Topology: L2 (host / AICPU / AICore) → L4 (host → remote host) The 7-level model (L6 Cluster … L0 Core) is declared in -[hierarchical_level_runtime.md](hierarchical_level_runtime.md). Its own status +[hierarchical-level-runtime.md](hierarchical-level-runtime.md). Its own status table is accurate: L3 implemented; L4 local implemented, remote simulation only; L5/L6 untested. diff --git a/docs/chip-level-arch.md b/docs/chip-level-arch.md index b688597ab0..252b11fac4 100644 --- a/docs/chip-level-arch.md +++ b/docs/chip-level-arch.md @@ -3,7 +3,7 @@ This document describes the **single-chip (L2) architecture** — how a host program, AICPU kernel, and AICore kernel cooperate on one Ascend NPU chip. For the multi-chip hierarchy (L3+: Orchestrator / Scheduler / Worker composition) -see [hierarchical_level_runtime.md](hierarchical_level_runtime.md). For how task +see [hierarchical-level-runtime.md](hierarchical-level-runtime.md). For how task data (Callable / TaskArgs / CallConfig) flows through all levels, see [task-flow.md](task-flow.md). @@ -150,7 +150,7 @@ worker.finalize() ### Python Type Naming Convention Layer 3 Python types use a **level-prefixed naming convention** that mirrors the -level model (see [hierarchical_level_runtime.md](hierarchical_level_runtime.md)): +level model (see [hierarchical-level-runtime.md](hierarchical-level-runtime.md)): | Concept | L2 (Chip) type | L3+ (Distributed) type | Unified factory | | ------- | -------------- | ---------------------- | --------------- | diff --git a/docs/comm-domain.md b/docs/comm-domain.md index 2173ed707e..a9cdc5d1d0 100644 --- a/docs/comm-domain.md +++ b/docs/comm-domain.md @@ -7,7 +7,7 @@ function** via `orch.allocate_domain(...)` — there is no init-time / static declaration path. For where the Orchestrator sits among the engine components see -[hierarchical_level_runtime.md](hierarchical_level_runtime.md); for the DAG +[hierarchical-level-runtime.md](hierarchical-level-runtime.md); for the DAG submission internals see [orchestrator.md](orchestrator.md). --- diff --git a/docs/dfx/README.md b/docs/dfx/README.md index e2bb0761f9..3f9b687787 100644 --- a/docs/dfx/README.md +++ b/docs/dfx/README.md @@ -39,7 +39,7 @@ Analysis CLIs that consume these outputs are documented in | Document | What it covers | | -------- | -------------- | | [Args Dump](args-dump.md) | Per-task argument capture, and replaying a task from it | -| [dep_gen](dep_gen.md) | Complete per-submit dependency graph, tensor-annotated | +| [dep_gen](dep-gen.md) | Complete per-submit dependency graph, tensor-annotated | | [Scope Stats](scope-stats.md) | Per-scope resource-usage peaks (ring fill, dep pool) | ## Related, outside this directory diff --git a/docs/dfx/args-dump.md b/docs/dfx/args-dump.md index c39cb0ea60..0751dc2454 100644 --- a/docs/dfx/args-dump.md +++ b/docs/dfx/args-dump.md @@ -996,5 +996,5 @@ their unset fallback and keep the `#897` distributed-skew trade-off. AICore program boundaries this feature spans. - [task-flow.md](../task-flow.md) — where AICPU dispatch and completion sit in the per-task state machine. -- [hierarchical_level_runtime.md](../hierarchical_level_runtime.md) +- [hierarchical-level-runtime.md](../hierarchical-level-runtime.md) — how L2 (this feature) relates to L3+ composition. diff --git a/docs/dfx/dep_gen.md b/docs/dfx/dep-gen.md similarity index 100% rename from docs/dfx/dep_gen.md rename to docs/dfx/dep-gen.md diff --git a/docs/dfx/l2-swimlane-profiling.md b/docs/dfx/l2-swimlane-profiling.md index 8d399357a9..fc3f8be6c1 100644 --- a/docs/dfx/l2-swimlane-profiling.md +++ b/docs/dfx/l2-swimlane-profiling.md @@ -43,7 +43,7 @@ available. in the swimlane record itself (the device hot path stays clean — see PR #863). Instead, `swimlane_converter` joins `l2_swimlane_records.json` with `deps.json` from - [`dep_gen`](dep_gen.md) at post-process time; see + [`dep_gen`](dep-gen.md) at post-process time; see [§3.5](#35-dependency-arrows-from-dep_gen). - **AICPU scheduler phases** — per-iteration breakdown into six mutually time-exclusive **outer** phases (`complete` / `async_poll` @@ -427,7 +427,7 @@ Two artifacts, one join: | File | Producer | What it carries | | ---- | -------- | --------------- | -| `deps.json` | `--enable-dep-gen` (a [`dep_gen`](dep_gen.md) run) | The static task graph for one topology / case | +| `deps.json` | `--enable-dep-gen` (a [`dep_gen`](dep-gen.md) run) | The static task graph for one topology / case | | `l2_swimlane_records.json` | `--enable-l2-swimlane` | Per-task / per-phase timing for one run | | `merged_swimlane.json` | `swimlane_converter` | Perfetto trace = timing joined to the graph | diff --git a/docs/dfx/profiling-framework.md b/docs/dfx/profiling-framework.md index e3b955246a..6d62719e4e 100644 --- a/docs/dfx/profiling-framework.md +++ b/docs/dfx/profiling-framework.md @@ -15,7 +15,7 @@ transport deviations that the collectors themselves still carry. The per-collector pages ([pmu-profiling.md](pmu-profiling.md), [l2-swimlane-profiling.md](l2-swimlane-profiling.md), -[dep_gen.md](dep_gen.md), +[dep-gen.md](dep-gen.md), [args-dump.md](args-dump.md), [scope-stats.md](scope-stats.md)) describe the data each subsystem collects and how it enables it on-device. @@ -463,7 +463,7 @@ Existing collectors are the canonical examples: - [`PmuCollector`](../../src/a2a3/platform/include/host/pmu_collector.h) — single kind, per-core instances. See [pmu-profiling.md](pmu-profiling.md). - [`DepGenCollector`](../../src/common/platform/include/host/dep_gen_collector.h) - — single kind, one instance. See [dep_gen.md](dep_gen.md). + — single kind, one instance. See [dep-gen.md](dep-gen.md). - [`ArgsDumpCollector`](../../src/common/platform/include/host/args_dump_collector.h) — single kind, per-AICPU-thread instances. See [args-dump.md](args-dump.md). - [`ScopeStatsCollector`](../../src/common/platform/include/host/scope_stats_collector.h) diff --git a/docs/hierarchical_level_runtime.md b/docs/hierarchical-level-runtime.md similarity index 100% rename from docs/hierarchical_level_runtime.md rename to docs/hierarchical-level-runtime.md diff --git a/docs/l3-l2-message-queue.md b/docs/l3-l2-message-queue.md index 89bed86c4c..aaf6a166b1 100644 --- a/docs/l3-l2-message-queue.md +++ b/docs/l3-l2-message-queue.md @@ -9,7 +9,7 @@ and L3 dequeues those outputs. The queue is built on top of the lower-level L3-L2 orchestration communication primitives described in [l3-l2-orch-comm.md](l3-l2-orch-comm.md). For where L3 and L2 sit in the runtime stack, see -[hierarchical_level_runtime.md](hierarchical_level_runtime.md). +[hierarchical-level-runtime.md](hierarchical-level-runtime.md). ## 1. API diff --git a/docs/l3-l2-orch-comm.md b/docs/l3-l2-orch-comm.md index 068e3646ae..7ec6b76edf 100644 --- a/docs/l3-l2-orch-comm.md +++ b/docs/l3-l2-orch-comm.md @@ -11,7 +11,7 @@ The intended use case is in-flight interaction: L3 can write input payload, publish a data-ready counter, wait for L2/AICore completion, and read output payload without ending the L2 orchestration task. For where L3 and L2 sit in the runtime stack, see -[hierarchical_level_runtime.md](hierarchical_level_runtime.md). For dynamic +[hierarchical-level-runtime.md](hierarchical-level-runtime.md). For dynamic cross-rank communication domains, see [comm-domain.md](comm-domain.md). ## 1. API diff --git a/docs/orchestrator.md b/docs/orchestrator.md index 5bda90ebd1..aeb09b8d3d 100644 --- a/docs/orchestrator.md +++ b/docs/orchestrator.md @@ -12,7 +12,7 @@ that turn a sequence of `submit_*` calls into a scheduled DAG: `Ring`, `TensorMap`, and `Scope`. For the high-level role of the Orchestrator among the three engine components, -see [hierarchical_level_runtime.md](hierarchical_level_runtime.md). For what +see [hierarchical-level-runtime.md](hierarchical-level-runtime.md). For what flows through `submit`, see [task-flow.md](task-flow.md). --- @@ -745,7 +745,7 @@ instead of stalling forever. Default timeout: 10 s. ## 10. Related -- [hierarchical_level_runtime.md](hierarchical_level_runtime.md) — how +- [hierarchical-level-runtime.md](hierarchical-level-runtime.md) — how Orchestrator fits alongside Scheduler and Worker - [scheduler.md](scheduler.md) — READY dispatch and completion-time dependency release diff --git a/docs/remote-l3-worker-design/pr-split-and-audit-artifacts.md b/docs/remote-l3-worker-design/pr-split-and-audit-artifacts.md index d30b2776fb..f98ca87ace 100644 --- a/docs/remote-l3-worker-design/pr-split-and-audit-artifacts.md +++ b/docs/remote-l3-worker-design/pr-split-and-audit-artifacts.md @@ -79,7 +79,7 @@ been created by this audit. | R12 `PYTHON_SERIALIZED` remote callables reject unless serialized support is explicitly negotiated | `remote-l3-worker-design.md` §§Scope, Worker Identity and Callable Routing; `protocol.md` §CONTROL Payload; `implementation-plan.md` step 6 | required explicit unsupported behavior | `_prepare_register_callable` rejects `CallableKind.PYTHON_SERIALIZED` before install | `test_remote_register_rejects_python_serialized_without_negotiation` | Phase 3 added missing coverage | PR 6 | | R13 `CHIP_CALLABLE` is valid only for `INNER_L3_WORKER`; inline blobs are supported by sim, staged blobs reject unless negotiated | `protocol.md` §CONTROL Payload; `implementation-plan.md` step 6; `implementation-record.md` §Completed Items | required in this PR cut plus required explicit unsupported behavior for staged blobs | `_prepare_inner_chip_callable`; dispatcher rejects chip target; staged blob reject | inner chip manifest install, dispatcher reject test, `test_remote_inner_chip_callable_rejects_staged_blob_without_negotiation` | Phase 3 added missing staged-blob coverage | PR 5 / PR 6 | | R14 Bootstrap manifest installs dispatcher and inner registries before `HELLO READY`; unsupported negotiated manifest extensions reject rather than partially install | `remote-l3-worker-design.md` §Remote Worker Session; `protocol.md` §CONTROL Payload; `implementation-plan.md` steps 6-7 | required in this PR cut | `remote_l3_session.run_session`, `_install_manifest_inner_registry`, daemon manifest validation | manifest inner Python/chip install tests; remote sim roundtrip tests | None found | PR 6 | -| R15 Fork ordering preserves prestart before command/health transport threads; `HELLO READY` is a scheduling barrier | `remote-l3-worker-design.md` §Fork-Safe Remote Process Model; `protocol.md` §HELLO Payload; `hierarchical_level_runtime.md` §Process Model | required in this PR cut | daemon writes manifest, session prestarts `inner_worker`, then binds command/health and sends HELLO READY; parent `add_remote_l3_socket` waits for READY | remote unreachable daemon test; remote sim roundtrip/prep tests | None found | PR 6 | +| R15 Fork ordering preserves prestart before command/health transport threads; `HELLO READY` is a scheduling barrier | `remote-l3-worker-design.md` §Fork-Safe Remote Process Model; `protocol.md` §HELLO Payload; `hierarchical-level-runtime.md` §Process Model | required in this PR cut | daemon writes manifest, session prestarts `inner_worker`, then binds command/health and sends HELLO READY; parent `add_remote_l3_socket` waits for READY | remote unreachable daemon test; remote sim roundtrip/prep tests | None found | PR 6 | | R16 Remote frame protocol uses versioned canonical little-endian encoding and never memcpy's C++ POD structs | `remote-l3-worker-design.md` §Protocol; `protocol.md` §§Frames, Wire Encoding; `implementation-plan.md` step 5 | required in this PR cut | `remote_wire.cpp` explicit put/get helpers; Python `_Reader`; local mailbox remains same-binary POD IPC only | `FrameRoundTripValidatesHeader`, Python decode tests | Found and fixed `CallConfigWire.enable_scope_stats` drift in Phase 3 | PR 3 | | R17 Frame codec rejects bad magic/version/type/flags, oversized/truncated payloads, unknown enums, non-zero reserved fields, and malformed counts | `protocol.md` §§Frames, Wire Encoding, Bounds and Fuzz Tests; `implementation-plan.md` step 5 | required in this PR cut | C++ and Python decode validation for headers, counts, enums, reserved fields, payload sizes | remote wire bad header/truncation/reserved tests; Python materialization/decode tests | No blocking drift found | PR 3 | | R18 TASK payload carries digest, `CallConfigWire`, and `RemoteTaskArgsWire`; tensor wire `data` must be zero; `HOST_INLINE` must be descriptor-backed and bounds-checked | `protocol.md` §§TASK Payload, RemoteTensorDesc, Bounds and Fuzz Tests; `buffers-and-transports.md` §TaskArgs Sidecar Contract | required in this PR cut | `encode_task_payload`, `decode_task_payload`, `RemoteL3Endpoint::build_task_payload`, Python `_materialize_task_args` | non-zero tensor data rejection, HOST_INLINE descriptor bounds, host-inline materialization/roundtrip | Phase 3 fixed and tested missing `enable_scope_stats` field | PR 3 / PR 5 | @@ -106,7 +106,7 @@ been created by this audit. | File or hunk | Owner PR | Reason | Depends on | Tests | | ------------ | -------- | ------ | ---------- | ----- | -| `docs/remote-l3-worker-design.md`, `docs/remote-l3-worker-design/*`, related docs (`worker-manager.md`, `scheduler.md`, `orchestrator.md`, `task-flow.md`, `hierarchical_level_runtime.md`) | PR 1 | Establish design, protocol, buffer lifecycle, rollout, and audit artifacts | None | docs/pre-commit checks | +| `docs/remote-l3-worker-design.md`, `docs/remote-l3-worker-design/*`, related docs (`worker-manager.md`, `scheduler.md`, `orchestrator.md`, `task-flow.md`, `hierarchical-level-runtime.md`) | PR 1 | Establish design, protocol, buffer lifecycle, rollout, and audit artifacts | None | docs/pre-commit checks | | `python/simpler/callable_identity.py`, callable descriptor/hashid portions of `python/simpler/worker.py`, callable-handle portions of tests | PR 2 | Make callable identity reviewable before remote endpoint behavior | PR 1 docs | callable identity Python UT | | `src/common/hierarchical/remote_wire.*`, `python/simpler/remote_l3_protocol.py`, remote-wire-focused tests | PR 3 | Stable cross-host protocol and codec validation | PR 1 docs; PR 2 enum/identity definitions | C++ `test_remote_wire`; Python protocol decode tests | | Scheduler and slot-state hunks in `src/common/hierarchical/types.*`, `orchestrator.*`, `scheduler.*`, `worker_manager.*` | PR 4 | Endpoint eligibility, outcomes, sidecars, dependency keys, failure poisoning | PR 2 identity; PR 3 types/protocol where referenced | C++ `test_orchestrator`, `test_scheduler` | diff --git a/docs/remote-l3-worker-design/pr-split-and-audit-plan.md b/docs/remote-l3-worker-design/pr-split-and-audit-plan.md index b082934c37..665b37ddc4 100644 --- a/docs/remote-l3-worker-design/pr-split-and-audit-plan.md +++ b/docs/remote-l3-worker-design/pr-split-and-audit-plan.md @@ -45,7 +45,7 @@ Inputs: - `docs/scheduler.md` - `docs/worker-manager.md` - `docs/task-flow.md` - - `docs/hierarchical_level_runtime.md` + - `docs/hierarchical-level-runtime.md` Use PR-head documents, not stale local notes. Drop empty CI retrigger commits during the split. Fixup formatting and CI stabilization commits into the diff --git a/docs/scheduler.md b/docs/scheduler.md index d064f0a4ac..3f91b36709 100644 --- a/docs/scheduler.md +++ b/docs/scheduler.md @@ -187,7 +187,7 @@ The scheduling invariants are: ## 8. Related documents -- [hierarchical_level_runtime.md](hierarchical_level_runtime.md) +- [hierarchical-level-runtime.md](hierarchical-level-runtime.md) - [orchestrator.md](orchestrator.md) - [worker-manager.md](worker-manager.md) - [task-flow.md](task-flow.md) diff --git a/docs/sim_multi_device_isolation.md b/docs/sim-multi-device-isolation.md similarity index 100% rename from docs/sim_multi_device_isolation.md rename to docs/sim-multi-device-isolation.md diff --git a/docs/task-flow.md b/docs/task-flow.md index ca2d52eb77..9ed4e25d22 100644 --- a/docs/task-flow.md +++ b/docs/task-flow.md @@ -22,7 +22,7 @@ scheduled), see: - [orchestrator.md](orchestrator.md) — submit flow, Ring, TensorMap, Scope - [scheduler.md](scheduler.md) — dispatch loop, queues, completion handling - [worker-manager.md](worker-manager.md) — WorkerThread, mailbox IPC mechanics -- [hierarchical_level_runtime.md](hierarchical_level_runtime.md) — level model +- [hierarchical-level-runtime.md](hierarchical-level-runtime.md) — level model and how components compose --- @@ -612,7 +612,7 @@ lives in the mailbox blob bytes on the child side — view doesn't care. ## Related -- [hierarchical_level_runtime.md](hierarchical_level_runtime.md) — L0–L6 level +- [hierarchical-level-runtime.md](hierarchical-level-runtime.md) — L0–L6 level model, three-component composition - [orchestrator.md](orchestrator.md) — how `submit_*` actually builds the DAG - [scheduler.md](scheduler.md) — how dispatched slots get worker threads diff --git a/docs/user/how-to/profile-a-kernel.md b/docs/user/how-to/profile-a-kernel.md index ba9df8d76a..d16a267a9f 100644 --- a/docs/user/how-to/profile-a-kernel.md +++ b/docs/user/how-to/profile-a-kernel.md @@ -13,7 +13,7 @@ Start by asking which question you have: | Is the scheduler the bottleneck, or starved? | `--enable-l2-swimlane --enable-dep-gen --enable-swimlane-overhead` | [Scheduler-Overhead Model](../../dfx/sched-overhead-model.md) | | Why is *one* task slow inside the core? | `--dump-args`, then the L0 tool | [L0 Swimlane Profiling](../../dfx/l0-swimlane-profiling.md) | | What do the AICore hardware counters say? | `--enable-pmu` | [PMU Profiling](../../dfx/pmu-profiling.md) | -| What does the dependency graph actually look like? | `--enable-dep-gen` | [dep_gen](../../dfx/dep_gen.md) | +| What does the dependency graph actually look like? | `--enable-dep-gen` | [dep_gen](../../dfx/dep-gen.md) | | Am I near a ring / dep-pool capacity limit? | `--enable-scope-stats` | [Scope Stats](../../dfx/scope-stats.md) | | What arguments did a task really receive? | `--dump-args` | [Args Dump](../../dfx/args-dump.md) | diff --git a/docs/worker-manager.md b/docs/worker-manager.md index 976c137116..833ef607aa 100644 --- a/docs/worker-manager.md +++ b/docs/worker-manager.md @@ -26,7 +26,7 @@ simulation transport, and the daemon/session runner used by profiles are still pending. For the high-level role of this layer among the three engine components, see -[hierarchical_level_runtime.md](hierarchical_level_runtime.md). For what +[hierarchical-level-runtime.md](hierarchical-level-runtime.md). For what runs on the other side of the local mailbox, see [task-flow.md](task-flow.md). For where dispatched tasks come from, see [scheduler.md](scheduler.md). @@ -326,7 +326,7 @@ Alternative: N children share one dispatch queue. Rejected because: ## 6. Related -- [hierarchical_level_runtime.md](hierarchical_level_runtime.md) — where this +- [hierarchical-level-runtime.md](hierarchical-level-runtime.md) — where this layer fits in the three-component engine - [task-flow.md](task-flow.md) — what `ChipWorker::run` receives - [scheduler.md](scheduler.md) — the producer of `WorkerThread::dispatch` diff --git a/examples/workers/README.md b/examples/workers/README.md index 656e8194e2..5203f53fc0 100644 --- a/examples/workers/README.md +++ b/examples/workers/README.md @@ -78,7 +78,7 @@ require an Ascend NPU box with `ASCEND_HOME_PATH` set. ## Related documentation -- [`docs/hierarchical_level_runtime.md`](../../docs/hierarchical_level_runtime.md) — the L0–L6 level model +- [`docs/hierarchical-level-runtime.md`](../../docs/hierarchical-level-runtime.md) — the L0–L6 level model - [`docs/chip-level-arch.md`](../../docs/chip-level-arch.md) — what L2 sees - [`docs/task-flow.md`](../../docs/task-flow.md) — end-to-end data flow - [`python/simpler/worker.py`](../../python/simpler/worker.py) — Worker source (all comments are useful) diff --git a/examples/workers/l2/README.md b/examples/workers/l2/README.md index 3da99e9fbd..bf90a00b57 100644 --- a/examples/workers/l2/README.md +++ b/examples/workers/l2/README.md @@ -6,7 +6,7 @@ runtime; everything larger (L3 multi-chip DAG, L4 multi-host) is built on top of L2 primitives. For the full hierarchy model see -[`docs/hierarchical_level_runtime.md`](../../../docs/hierarchical_level_runtime.md). +[`docs/hierarchical-level-runtime.md`](../../../docs/hierarchical-level-runtime.md). ## Minimum Worker lifecycle diff --git a/examples/workers/l3/README.md b/examples/workers/l3/README.md index 54ce58eec1..757f087b92 100644 --- a/examples/workers/l3/README.md +++ b/examples/workers/l3/README.md @@ -6,7 +6,7 @@ the host process. This is where you first see the *DAG* model — you submit a task per chip — each pinned to its target chip worker id — and each task carries a dependency graph via `orchestrator` APIs. -See [`docs/hierarchical_level_runtime.md`](../../../docs/hierarchical_level_runtime.md) +See [`docs/hierarchical-level-runtime.md`](../../../docs/hierarchical-level-runtime.md) for the full L0–L6 diagram and [`docs/task-flow.md`](../../../docs/task-flow.md) for data-flow end to end. diff --git a/simpler_setup/tools/README.md b/simpler_setup/tools/README.md index 66b65b2789..356614d5ec 100644 --- a/simpler_setup/tools/README.md +++ b/simpler_setup/tools/README.md @@ -340,7 +340,7 @@ this is the structural view. ### Overview `deps_viewer` reads `deps.json` produced by the dep_gen replay (see -[docs/dfx/dep_gen.md](../../docs/dfx/dep_gen.md)) and supports two modes: +[docs/dfx/dep-gen.md](../../docs/dfx/dep-gen.md)) and supports two modes: - **Default text mode** — emits `deps_viewer.txt` with: - `SUMMARY` (input path plus task / edge / tensor counts) diff --git a/src/a2a3/runtime/host_build_graph/docs/RUNTIME_LOGIC.md b/src/a2a3/runtime/host_build_graph/docs/RUNTIME_LOGIC.md index df3a6ec4ad..8c00cc00cd 100644 --- a/src/a2a3/runtime/host_build_graph/docs/RUNTIME_LOGIC.md +++ b/src/a2a3/runtime/host_build_graph/docs/RUNTIME_LOGIC.md @@ -734,7 +734,7 @@ Profiling-subsystem init (`dump_args` / `pmu` / `l2_swimlane`) runs once in `SchedulerContext::init()` on the single-threaded cold path, before any scheduler/orchestrator thread starts — so it needs no cross-thread init handshake. `dep_gen` is not among them: it captures the graph on the host while -the orchestrator builds it (see [docs/dfx/dep_gen.md](../../../../../docs/dfx/dep_gen.md) +the orchestrator builds it (see [docs/dfx/dep-gen.md](../../../../../docs/dfx/dep-gen.md) §2.2), so nothing about it is device-side. Startup sequence: diff --git a/src/a2a3/runtime/host_build_graph/host/dep_gen_host_graph.cpp b/src/a2a3/runtime/host_build_graph/host/dep_gen_host_graph.cpp index 390686aaa0..5f2a0bca13 100644 --- a/src/a2a3/runtime/host_build_graph/host/dep_gen_host_graph.cpp +++ b/src/a2a3/runtime/host_build_graph/host/dep_gen_host_graph.cpp @@ -13,7 +13,7 @@ * @file dep_gen_host_graph.cpp * @brief Host-side dep_gen graph capture + deps.json writer for host_build_graph. * - * Edge model (unchanged from the schema in docs/dfx/dep_gen.md): + * Edge model (unchanged from the schema in docs/dfx/dep-gen.md): * explicit — declared via Arg::set_dependencies (STEP 1); no tensor context. * creator — creator retention on an existing tensor (STEP 3 Step A). * tensormap — a producer whose written slice overlaps what this task reads diff --git a/src/a2a3/runtime/host_build_graph/runtime/dep_gen_host_graph.h b/src/a2a3/runtime/host_build_graph/runtime/dep_gen_host_graph.h index 999c9b737e..90c49e942f 100644 --- a/src/a2a3/runtime/host_build_graph/runtime/dep_gen_host_graph.h +++ b/src/a2a3/runtime/host_build_graph/runtime/dep_gen_host_graph.h @@ -50,7 +50,7 @@ * append_fanin_or_fail in pto_orchestrator.cpp). A runtime that recycles slots * mid-build would need this key revisited. * - * Output is `deps.json` in the schema documented in docs/dfx/dep_gen.md — the + * Output is `deps.json` in the schema documented in docs/dfx/dep-gen.md — the * same schema the tensormap_and_ringbuffer replay emits, so every downstream * consumer (deps viewer, swimlane join) reads both runtimes' output the same way. */ diff --git a/src/common/platform/include/common/dep_gen.h b/src/common/platform/include/common/dep_gen.h index 62cb64bbdd..d431502e08 100644 --- a/src/common/platform/include/common/dep_gen.h +++ b/src/common/platform/include/common/dep_gen.h @@ -115,7 +115,7 @@ struct DepGenRecord { uint8_t tensors[CORE_MAX_TENSOR_ARGS][DEP_GEN_TENSOR_SIZE]; // opaque Tensor blobs } __attribute__((aligned(64))); -static_assert(sizeof(DepGenRecord) == 4672, "DepGenRecord size changed — update header comment + docs/dfx/dep_gen.md"); +static_assert(sizeof(DepGenRecord) == 4672, "DepGenRecord size changed — update header comment + docs/dfx/dep-gen.md"); static_assert(sizeof(DepGenRecord) % 64 == 0, "DepGenRecord must be cache-line aligned"); static_assert(offsetof(DepGenRecord, tensors) % 64 == 0, "DepGenRecord::tensors[] must start on a cache-line boundary"); static_assert(offsetof(DepGenRecord, tensors) == 576, "DepGenRecord::tensors offset changed — update header comment"); diff --git a/tests/ut/py/test_worker/test_platform_comm.py b/tests/ut/py/test_worker/test_platform_comm.py index d7631a700b..beec9803b8 100644 --- a/tests/ut/py/test_worker/test_platform_comm.py +++ b/tests/ut/py/test_worker/test_platform_comm.py @@ -19,7 +19,7 @@ ACL bring-up and aclrtStream lifetime are owned internally by `ChipWorker.comm_init` / `comm_destroy` (matching the L2-boundary contract -in docs/hierarchical_level_runtime.md — device-side state stays in C++). +in docs/hierarchical-level-runtime.md — device-side state stays in C++). ctypes is used only to declare a `CommContext` layout mirror so the test can inspect the struct returned by `comm_alloc_windows`; no CANN / libacl symbols are loaded from Python. @@ -90,7 +90,7 @@ def _rank_entry( # ChipWorker.comm_init owns ACL bring-up and aclrtStream creation # internally — Python never touches aclInit / aclrtSetDevice / # aclrtCreateStream. This matches the L2-boundary contract in - # docs/hierarchical_level_runtime.md: device-side lifecycle stays + # docs/hierarchical-level-runtime.md: device-side lifecycle stays # in C++. comm = worker.comm_init(rank, nranks, rootinfo_path) result["stage"] = "comm_init"