March 21, 2025 年前实现了一个小巧的神经网络训练框架 TinyTorch,使用 C++ 模拟 PyTorch 的 API,支持 MNIST 训练,不过当时只实现了 CPU 版本,即使依赖第三方 BLAS 加速 gemm,跑起来还是很慢的(更多的是因为没做什么优化),那为什么不把 CUDA 给支持上呢,说干就干,过完年就开搞,到现在基本完成了,代码已提交: https://github.com/keith2018/TinyTorch 算子流程 这里还是 follow PyTorch 的 API,首先定义了 Device 枚举: enum class Device { CPU, CUDA }; 然后 Tensor 的实现类 TensorImpl 会带有一个 device_ 成员,以及一个 TensorOperations 类型的成员 ops_ class TensorImpl { … protected: … Device device_ = Device::CPU;Continue reading “CUDA 小试牛刀”