天天看點

libtorch組成講解之ATen、c10、at、csrc

三大命名空間: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的aten目錄下的主要構成:

  1. ATen(ATen核心源檔案)
  2. TH(Torch 張量計算庫)
  3. THC(Torch CUDA張量計算庫)
  4. THCUNN(Torch CUDA神經網絡庫)
  5. THNN(Torch神經網絡庫)

C10,來自于Caffe Tensor Library的縮寫。這裡存放的都是最基礎的Tensor庫的代碼,可以運作在服務端和移動端。PyTorch目前正在将代碼從ATen/core目錄下遷移到C10中。

C10主要目的之一是為了統一Pytorch的張量計算後端代碼和caffe2的張量計算後端代碼

csrc子產品介紹