
PyTorch
文章平均质量分 93
keineahnung2345
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
PyTorch中的c10::ArrayRef和at::IntArrayRef
PyTorch中的c10::ArrayRef和at::IntArrayRef用于表示对数组的常量引用。c10::ArrayRef是一个通用模板类,提供对连续内存中元素的轻量级引用,支持多种初始化方式(如指针+长度、容器、数组等)。它不拥有数据所有权,仅作为访问接口,包含迭代器、大小查询等基本操作。at::IntArrayRef是特化版本,专用于整数数组,常用于张量形状参数(如torch.empty(3,4))。两者均通过指针和长度高效传递数据,避免拷贝开销。原创 2025-08-20 09:14:45 · 860 阅读 · 0 评论 -
一個Tensor的一生 - torch.rand篇
Life of a Tensor這篇文章中介紹了torch.rand函數從Python API一直到C++底層的調用過程,寫於2019年7月,當時的PyTorch版本為1.1.0。參考該篇文章,本篇的關注點同樣在整個調用流程,不過是基於較新的PyTorch 2.0版。原创 2023-12-05 22:43:48 · 916 阅读 · 0 评论 -
PyTorch中的STATIC_CONSTEXPR_STR_INL_EXCEPT_WIN_CUDA和STATIC_CONST_STR_OUT_OF_LINE_FOR_WIN_CUDA
PyTorch中STATIC_CONSTEXPR_STR_INL_EXCEPT_WIN_CUDA和STATIC_CONST_STR_OUT_OF_LINE_FOR_WIN_CUDA宏用于处理不同平台下静态常量字符串的定义问题。在非Windows NVCC平台(如Linux/非CUDA环境)下,这些宏直接将字符串定义为static constexpr成员;而在Windows NVCC平台下,由于编译器限制,需要将声明和定义分开处理:先在类内声明static const成员,然后在类外单独定义并初始化。这种设计原创 2023-11-30 15:35:46 · 619 阅读 · 0 评论 -
torch::和at:: factory function的差別
在這兩個例子中,torch.rand factory function會根據requires_grad參數生成一個可微或不可微的張量。深入其C++底層,會發現它們調用的其實是torch::和at::兩個不同命名空間裡的factory function,本篇將會通過查看源碼和範例程序來了解不同factory function生成的張量有何差別。原创 2023-11-28 21:50:02 · 1241 阅读 · 0 评论 -
PyTorch中的intrusive_ptr
intrusive_ptr與unique_ptr,shared_ptr等一樣,都是smart pointer。但是intrusive_ptr比較特別,它所指向的物件類型必須繼承自intrusive_ptr_target,而intrusive_ptr_target必須實現引用計數相關的函數才行。在PyTorch中,StorageImpl繼承自c10::intrusive_ptr_target,所以c10::intrusive_ptr可以與StorageImpl搭配使用。原创 2023-10-24 22:23:22 · 1441 阅读 · 1 评论 -
Python GIL及其釋放/獲取函數
Python默認使用CPython解釋器,當中會引入GIL,在CPython解釋器中,GIL(全局解釋器鎖)是一個互斥鎖,用於保護Python物件,避免它們在多線程執行被同時存取。多線程程式花了很多時間在GIL裡,解釋CPython bytecode,這時候GIL的存在便使得多線程程式無法充份利用多核系統。還好pybind11有提供釋放GIL的機制,pybind11提供了釋放和重新獲取GIL的API,即gil_scoped_release和gil_scoped_acquire這兩個類別,可以利用這兩個API原创 2023-10-12 10:27:12 · 1138 阅读 · 0 评论 -
PyTorch中的python_torch_functions_i.cpp檔案生成機制
編譯PyTorch後,torch/csrc/autograd/generated/目錄下會有python_torch_functions_0.cpp,python_torch_functions_1.cpp和python_torch_functions_2.cpp等檔案,本文便從setup.py依次來探討這些檔案是如何生成的。原创 2023-09-09 23:06:14 · 933 阅读 · 0 评论 -
PyTorch中的pyi檔案生成機制
在PyTorch中如果查找python函數的定義,十有八九會跳轉到torch/_C/_VariableFunctions.pyi這個檔案。但是如果去PyTorch的github repo上尋找這個檔案,只能找到一個跟它名字類似的torch/_C/_VariableFunctions.pyi.in,卻找不到torch/_C/_VariableFunctions.pyi這個檔案本身。原创 2023-09-20 13:34:59 · 1630 阅读 · 0 评论 -
Python typing函式庫和torch.types
在PyTorch中的Sequence, Iterable, Optional, Union都是什麼意思呢?他們是從一個叫做typing的庫中導入的。typing是Python的標準庫之一,作用是提供對類型提示的運行時支持。原创 2023-08-20 21:41:52 · 761 阅读 · 0 评论 -
PyTorch檔案生成機制中的FileManager.write_with_template
PyTorch中有些檔案是在編譯過程中跑腳本生成的,如.pyi檔是由.pyi.in檔生成,torch/csrc/autograd/generated目錄下的.cpp檔則是由tools/autograd/templates下的template .cpp檔生成的。原创 2023-08-31 11:49:31 · 721 阅读 · 0 评论 -
Linux下編譯安裝PyTorch源碼
本篇記錄在Linux下編譯安裝PyTorch源碼的流程,以及編譯過程中電腦當機的解決方式。原创 2021-10-16 17:14:08 · 1805 阅读 · 3 评论