l i b t o r c h 组成讲解 libtorch组成讲解 libtorch组成讲解
三大命名空间:at、torch、c10
1.at(ATen)负责声明和定义Tensor运算,是最常用到的命名空间
2.c10是 ATen 的基础,包含了PyTorch的核心抽象、Tensor和Storage数据结构的实际实现
3.torch命名空间下定义的 Tensor 相比于ATen 增加自动求导功能
ATen,来自于 A Tensor library for C++11的缩写,ATen部分有大量的代码是来声明和定义Tensor运算相关的逻辑的
PyTorch的源代码主要是通过C++编写的,同时C++的接口暴露出来给Python调用。
之前,或者目前,PyTorch的C++接口主要是通过ATen(A Tensor Library)张量计算库来实现的,主要在Pytorch源代码的aten目录下。
Pytorch的aten目录下的主要构成:
- ATen(ATen核心源文件)
- TH(Torch 张量计算库)
- THC(Torch CUDA张量计算库)
- THCUNN(Torch CUDA神经网络库)
- THNN(Torch神经网络库)
C10,来自于Caffe Tensor Library的缩写。这里存放的都是最基础的Tensor库的代码,可以运行在服务端和移动端。PyTorch目前正在将代码从ATen/core目录下迁移到C10中。
C10主要目的之一是为了统一Pytorch的张量计算后端代码和caffe2的张量计算后端代码
csrc模块介绍
1.C++和python的API之间的相互映射。比如pytorch的nn.Conv2d
对应于torch中的at:conv2d
2.autograd和自动求导机制