@@ -1092,7 +1092,7 @@ accelerators = ["cuda", "rocm"] # [提议] 同一形状:支持面声明
10921092| 5 逐 glob 收窄 | ❌ 未做 | 依赖 device target(阶段外),本轮 device 编译走规则包 |
10931093| 6 ` -ccbin ` 配对 | ⚠️ 部分 | 引擎侧读上界并在 ` mcpp self doctor ` 报告;** 钉定** 发生在规则包里,不在引擎里。PR #560 追加一条同族检查: nvcc 能否够到自己的后端(§15.7) |
10941094| 7 device link | ❌ 未做 | 依赖 device target |
1095- | L1/L2 索引包 | ⚠️ 部分 | ` compat.cuda-runtime ` 已合入并发布并沙箱验证;` rules-cuda ` 目前是 ` examples/ ` 里的 path 包,尚未收录进索引 |
1095+ | L1/L2 索引包 | ⚠️ 部分 | ` compat.cuda-runtime ` 已合入并发布并沙箱验证;` compat.cublas ` 与 ` rules-cuda ` 各有一条 ** 实测出来的阻碍 ** ,见 §15.8 —— 缺的是授权不是实现 |
10961096| L0 / L3 / 8 | ❌ 未做 | 见上 |
10971097
10981098⚠️ ** 决定 3(逐 glob 收窄第一版就做)与决定 4(capability 边界先修)都没有落地。**
@@ -1331,3 +1331,37 @@ e2e 会在两个 shard 上都跳过并退 0,那是一条永远不跑的判据(me
13311331` e2e-requires-llvm-never-runs-on-shards ` 记的就是这个)。覆盖是:解析器的五条
13321332单测(夹具是两份** 真实** 的 dryrun 输出,差别恰好是那一行 PATH),加上上表那次
13331333手工两侧对照。
1334+
1335+ ### 15.8 L1/L2 为什么停在一个包:两条实测出来的阻碍,都不是工作量
1336+
1337+ 用户要求「补充** 几个** 流行的运行时/库/框架/SDK 到 mcpp index / xim 生态」。
1338+ 本轮落地并验证的只有 ` compat.cuda-runtime ` 一个。停在这里的理由是测出来的:
1339+
1340+ ** 其一,` compat.cublas ` 在索引现有的两种形态里都不成立。** 索引里的包分两类:
1341+
1342+ | 形态 | 例子 | 适用 |
1343+ | ---| ---| ---|
1344+ | 从上游源码编译 | ` compat.curl ` 、` compat.freetype ` 、` compat.ffmpeg ` | 有源码 |
1345+ | farm 宿主库 + ` runtime.library_dirs ` + ` dlopen_libs ` | ` compat.glx-runtime ` 、` compat.vulkan-runtime ` 、` compat.cuda-runtime ` | 运行期 ** dlopen** 的宿主驱动 |
1346+
1347+ cuBLAS 两者都不是:** 没有源码** ,而且是** 必须链接** 的闭源二进制。
1348+ ⭐ 实测过链接路径确实可行 —— 闭包校验的拒绝
1349+ (* "Its PT_INTERP is a private loader"* )对** 链接** 的库与对 dlopen 的库一样发生,
1350+ 而包自己声明 ` runtime.library_dirs ` 就能满足它。所以形态上做得出来。
1351+ ⚠️ 但索引里 ` ldflags ` 的既有用法** 全部** 是系统级的
1352+ (` -pthread ` 、` -lrt ` 、` -ladvapi32 ` 、macOS framework),** 没有一个链接第三方宿主二进制库** 。
1353+ 开这个先例会把一次构建钉死在某一台机器的 cuBLAS 版本上,与「少依赖 host」相反。
1354+
1355+ ⇒ ** 正确形态是 xim 载荷** ,携带 NVIDIA 的可再分发件。而那要回答 RK-3(体积)
1356+ 与 RK-5(许可)两个问题,并向 GitCode 上传一份大体积的 NVIDIA 二进制 ——
1357+ ** 这是一个决定,不是一次实现** ,不该由实施方单方面做。
1358+
1359+ ** 其二,` rules-cuda ` 进索引要先有它自己的仓库。** 索引里已有的两个规则包
1360+ (` mcpplibs/clangtidy ` 、` grpcgen ` )都是 ` mcpp = "*/mcpp.toml" ` 指向** 独立仓库的
1361+ release tarball** ,并各带一份 GitCode 镜像。把 ` examples/09-cuda-kernel/rules-cuda `
1362+ 搬进索引因此需要** 新建一个公开仓库** 并打 tag。
1363+ ⚠️ 而且不能只做一半:索引里一份、示例里再留一份,就是第 §14.3 那个「重复了一处
1364+ 本不该重复的东西」的形状 —— 要搬就要同时把示例改成消费索引里的那一个。
1365+
1366+ ⇒ 两条都记在这里,而不是让 §12 的 L1/L2 行用「未做」含糊过去。
1367+ 它们缺的是一个授权,不是一段实现。
0 commit comments