feat(runtime): add hosted four-PE worker carrier - #87
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 2854535976
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| ifeq ($(group_runtime), on) | ||
| DEFINES += -DLINX_GROUP_RUNTIME | ||
| COMM_OBJ = $(GROUP_RUNTIME_OBJ) |
There was a problem hiding this comment.
Gate the four-PE runtime to Linx builds
When this matmul target is built with the supported PLAT=cpu res_check=on configuration, this block still defines LINX_GROUP_RUNTIME and routes main() through linx_group_run(). Outside Linx, CurrentPe() always returns 0, and no secondary PE ever calls __linx_group_worker_start, so PE0 spins forever waiting for done1 through done3; restrict runtime activation to PLAT=linx or provide host worker threads.
Useful? React with 👍 / 👎.
| control.context = context; | ||
| StorePublished(&control.ready, 1); | ||
|
|
||
| control.status0 = __linx_group_worker_main(0, context); |
There was a problem hiding this comment.
Exclude the hosted runtime from ordinary bare-metal links
With baremetal=on, Makefile.common retains the wildcard-generated COMM_OBJ list, which now automatically includes every .cpp under common/src, including this runtime even when group_runtime=off. Ordinary targets such as test/kernel/norm do not define __linx_group_worker_main, so their link now fails on this unresolved reference; filter this object out of the common wildcard and add it only for opted-in group-runtime builds.
Useful? React with 👍 / 👎.
…SA#87) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- gfrun issue 源稿加权威分类表 + 每条【归属】:gfrun-1/2→Linx-TileOP-API PTO-ISA#62/PTO-ISA#63(API发RNE/dst几何违反spec)、 gfrun-3/4/5→SuperScalarModel保留(真模型缺口)、gfrun-6/7→已退休(edcbd8b,应fail-closed,伪缺口) - REPORT 加修正横幅+方法教训(判归属前查退休状态/验组件自测/反汇编比对发射vs owning ASL) - PTO-ISA#87 TGPR2T 归 llvm 后端经复核正确(active op + header符合spec + 后端缺3源B.IOR pattern) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 7 份已提交 issue 按线上号重命名并标题标注: PTO-ISA#49 docs, PTO-ISA#50 linx-compiler-backend, #478 gfrun-model-unimpl, #560 gfrun-ops20260904, PTO-ISA#87 linx-tgpr2t, #569 gfrun-model4, PTO-ISA#89 linx-bf16-codegen - 去重: #560 doc 移除 gfrun-8~11(=#569)、PTO-ISA#87 doc 移除 linx-2(=PTO-ISA#89),各留指针 - 过时第二轮增量(_0929×3)移入 superseded/(线上无号,已被本轮取代) - README 重写为 issue→文件索引;一文件对应一线上 issue Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 删除切 tag 前(2026-09-03)的 superseded/ 旧增量草稿(以最新验证为准) - 7 份 issue 按 ISSUE_<tag名>_<生成日期>_<issue号>.md 重命名: ops-20260828_20260902: PTO-ISA#49/PTO-ISA#50/#478 ops-20260904_20260905: #560/PTO-ISA#87 ops-20260904_20260907: #569/PTO-ISA#89 - README 更新为含 tag/日期的索引表 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Implements the workload and reference-carrier side of LinxISA/SuperScalarModel#346 and PTO-ISA/pto-spec#150.\n\n- Multi-thread matmul exports __linx_group_worker_main and gives PE0 sole input/output ownership.\n- res_check links the toolchain-provided liblinx_builtin_rt.a statically.\n- The workload no longer owns a duplicate runtime implementation.\n- Adds a runtime-only four-PE smoke with symbol and --gc-sections retention checks.\n\nDependencies:\n- Public API: LinxISA/Linx-TileOP-API#34\n- Runtime implementation: LinxISA/llvm-project#71\n- musl sysroot packaging: LinxISA/musl#14\n- gfrun execution model: LinxISA/SuperScalarModel#360\n\nValidation: make dry-run links -llinx_builtin_rt after workload objects; the packaged archive from the musl PR plus the TileOP API header completes the four-PE gfrun smoke with R2=0.