导读
开始读源码之前,先把两件事讲清楚:
- 怎么读这一卷:为什么是 0.11.0;算子、求导、推理三条主线每一步落在哪个函数、哪一页讲;
metal、cuda、cudnn、nccl、accelerate、mkl、ug这些 feature 各打开什么,没开metal/cuda时编进来的 dummy 后端在运行期返回什么错误;candle-core的错误风格:连&a + &b都返回Result;阅读路线。 - 源码地图:工作区的 crate 怎么分层,各自多少行;
candle-core/src按目录分;candle-metal-kernels的 Rust 一半和.metal一半,.metal源码include_str!进二进制、第一次用到时在运行期编译;只依赖candle-core时依赖树里有多少个包,其中 40 个是tokenizers带进来的。
flowchart TB read[怎么读这一卷] --> ver[锁定版本] read --> lines[三条主线] read --> feat["feature 与 dummy 后端"] read --> errs["Result 风格"] map[源码地图] --> crates["crate 分层"] map --> core["candle-core 目录"] map --> metal["metal 源码怎么加载"]
💬 关联讨论
发起讨论加载中...