cuda-oxide:hello-constant 拆解 05——找 #[kernel] 函数 + BFS 调用图 + stable MIR 转换 拆 hello-constant 系列第五站。codegen_crate 检测到 device code 之后,先靠命名约定(KERNEL_PREFIX 加魔数 246e25db)识别 kernel,worklist BFS 遍历调用图收集所有可达的 device 函数,最后通过 rustc_public 把 internal Instance 转成 stable Instance 喂给 mir-importer。本文讲清楚整条 collector 流程,以及背后那串 246e25db 是怎么来的。
zTgx 1566 31
cuda-oxide:hello-constant 拆解 07——块尾控制流 + intrinsic dispatch 拆 hello-constant 系列第七站。每个 basic block(基本块)末尾的控制流(rustc 内部叫 Terminator,终结符)是 translator 最复杂的一段。本文按 docs/run.log 真实 dump,讲清楚函数调用为什么必须落在块尾、translate_call 的三步流程、try_dispatch_intrinsic 怎么靠 FQDN(完全限定路径名)字符串识别 GPU intrinsic(编译器内建函数)、以及桩函数体为什么根本没翻译。
zTgx 1384 89
cuda-oxide:hello-constant 拆解 08——mir-lower:dialect conversion driver 拆 hello-constant 系列第八站。dialect-mir + dialect-nvvm 的混合 IR 整体降级到 dialect-llvm,靠的是 pliron 的 DialectConversion 框架——你声明'我能转换什么 op、什么类型、怎么转换',driver 自动遍历 module。本文讲清楚 trait 分发机制、跟 Step 7 字符串 match 的对比、replace_operation 的关键作用、full conversion 模式,以及降级完之后 IR 真实长什么样。
zTgx 1491 36
nvcc
zTgx 1913 138