pytorch下的lib庫 源碼閱讀筆記(2)


2017年11月22日00:25:54

對lib下面的TH的大致結構基本上理解了,我閱讀pytorch底層代碼的目的是為了知道

python層面那個_C模塊是個什么東西,底層完全黑箱的話對於理解pytorch的優缺點太欠缺了。

看到 TH 的 Tensor 結構體定義中offset等變量時不甚理解,然后搜到個大牛的博客,下面是第一篇:

從零開始山寨Caffe·零:必先利其器

快速瀏覽了一下這個系列,看的壓力山大。。。

 

大致理解是offset是為了讓Tensor在內存中線性化存儲,計算和傳輸成本低。又猛然搜到python層面對

Tensor的文檔。原來底層的函數在python層面都有一定的體現。看pytorch的文檔就夠了。

TH在編譯完后相關頭文件和TH.so已經放到系統路徑中了,后面的庫都可以直接調用TH。

 

跳過THS,看了下THNN,文件結構是並列的。主要是TH_TENSOR_APPLY宏函數比較有意思。出現在

THTensor相關文件中,被THNN大量運用。研究下應該也是不難理解的。

 

gpu版本的THC,THCS,THCNN都一概跳過,沒學過cuda,掌握了cuda的語法,結合TH的經驗,看懂這幾個

應該不難,nccl跳過。搞完python源碼剖析后再拿出些時間來學cuda。

 

THPP值得研究,用C++封裝C。

 

2017年11月24日21:27:06

這兩天看完了vamei的 linux系列,接着又快速掃了一遍 python源碼剖析 ,有vamei的博客在前,

看 python源碼剖析 基本上無痛苦。剖析這本書以后肯定還是要反復閱讀的。

另外有一篇不錯的博客:  pytorch源碼:C擴展 順騰摸瓜可以找到其他幾篇重要的博客。

 

2017年11月28日00:13:00

接下來的幾天會試圖完成一個有點復雜的自定義的C++或者C的矩陣類,並且帶幾個矩陣運算,將這個

矩陣類注冊到python中,讓其表現和python自帶的數據類型有差不多的表現。比如可繼承。

搜到一個有點意思的博客:

http://www.xefan.com/categories/Python%E6%A0%8F%E7%9B%AE/

 

pytorch的大體結構差不多是TH、THNN、ATen干具體的計算的活,THPP封裝一下。

然后csrc把相關類型注冊到python中,讓其在python中被無縫調用。

pytorch中python層面的Variable和Function類都定義在csrc的autograd中。看README

有一些簡單的介紹。vscode打開torch源碼后搜PyTypeObject可以看到有哪些類型被注冊到python中了。

 

THPP和ATen還沒看。看ATen還需要點自動微分方面的知識,雖然之前關注過這個問題。

 

2017 1201 0135

ATen應該從 code_template.py 那個文件開始看,然后用vscode在ATen文件夾下搜  .substitute

醉了,寫pytorch的小組怎么這么愛用類似宏替換的東西。

在C層面搞了宏替換,還要用python再玩一次!

為了不用C++寫底層,真是獨樹一幟!

 

2017年12月18日21:22:36

https://github.com/necroen/tiny_lib


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM