cuda-oxide:从零加一个自定义 PTX intrinsic——五阶段管线 + 两个真实踩坑 走一遍真实流程:在 cuda-oxide 里加一个返回常量 42 的自定义 intrinsic xxx(),最终在 PTX 中通过内联汇编 mov.u32 %r1, 42; 实现。五个 crate 要改、两个错误版本一定会踩、convergent 属性是正确性而不是性能开关。把整套实战拆给你看。 zTgx 1 0 0 专题cuda-oxideintrinsic
cuda-oxide:同一段代码在七层 IR 里长什么样——hello_constant 全程对比 拆完 11 步流程之后,把同一段代码在每个阶段的真实输出并排放一起。整个 hello_kernel(3 行 Rust → 6 行 PTX)横跨 7 层 IR 的对照,加上两个单语句的逐层追踪——*out = 42 和 thread::xxx()。看信息怎么逐层丢失,形态怎么逐层接近硬件。 zTgx 0 0 0 专题cuda-oxideir
PTX 入门:读懂 NVIDIA GPU 的虚拟汇编 PTX 是 NVIDIA GPU 的虚拟 ISA,介于 LLVM IR 和真正的 GPU 机器码 SASS 之间。它跟 x86 完全不同——指令格式统一、寄存器无限、地址空间显式。本文讲清楚 PTX 指令格式、state space(地址空间)、常用指令族,最后用一段 5 行的 hello_kernel PTX 逐行拆解。 zTgx 13 0 0 专题compilerptx
从 Rust 写 inline PTX 模板 会读 PTX 之后,下一步是从 Rust 里写自己的 PTX——这是实现自定义 GPU intrinsic 的必备技能。本文讲清楚 inline asm 的'模板 + 约束串'两段对应关系、临时寄存器作用域、谓词输出 selp 套路、format! 动态生成的陷阱,以及一个'读 shared memory 比对'的完整合成例子。 zTgx 0 0 0 专题compilerptx
cuda-oxide:hello-constant 拆解 09——llvm-export + llc 生成 PTX 拆 hello-constant 系列第九站。dialect-llvm module 序列化成文本 LLVM IR(.ll),然后调外部 llc 工具用 NVPTX backend 编译成文本 PTX(.ptx)。本文讲清楚 llvm-export 怎么序列化、`llvm_nvvm_*` → `llvm.nvvm.*` 的反向转换、!nvvm.annotations 元数据的作用、llc 调用参数、以及最终 PTX 里每条指令跟 LLVM IR 一一对应的关系。 zTgx 0 0 0 专题cuda-oxidellvm-ir
cuda-oxide:hello-constant 拆解 10——host binary 启动 + CUDA driver 加载 PTX 拆 hello-constant 系列第十站。device 编译完成,host 端 binary 启动——通过 CUDA driver API 一步步连 GPU、分配显存、加载 PTX(driver 现场 JIT 编译成 SASS)、launch kernel。本文讲清楚 cuda-core 怎么包装 driver API,以及 cuModuleLoad 触发的 JIT 是整条链路里最'魔法'的一步。 zTgx 1 0 0 专题cuda-oxidecuda-driver
cuda-oxide:hello-constant 拆解 01——鸟瞰整个管线 拆 hello-constant 系列的第一站。一条 cargo 命令背后启动了两个独立进程、七层 IR 翻译。这一篇画出全景图,后续每篇都会停在图上某个具体方框深入。 zTgx 0 0 0 专题cuda-oxiderust