PyTorch源码学习
文章平均质量分 62
smartcat2010
这个作者很懒,什么都没留下…
展开
-
TorchScript VS. ONXX
使用ONNX和Torchscript加快推理速度的测试 - 知乎 (zhihu.com)结论:1. Batch size小时,ONNX明显比TorchScript要快;Batch size大时,差距缩小;2. Batch内部的序列长度相似时,Batch size越大,加速效果约好;3. 序列越长,加速效果越不明显4. Batch内部的序列长度相差大的话,Batch size可能在中间某个范围是加速比最大的,因为再大就带来很多“补齐”造成的冤枉计算。...转载 2021-11-28 14:54:01 · 1316 阅读 · 0 评论 -
[Pytorch] torch.save原理
torch.save调用serialization.py里的_save:def _save(obj, zip_file, pickle_module, pickle_protocol): serialized_storages = {} id_map: Dict[int, str] = {} def persistent_id(obj): # FIXME: the docs say that persistent_id should only return a原创 2021-07-21 17:28:04 · 994 阅读 · 0 评论 -
[Pytorch] Tensor底层机制
Python的Tensor: torch\_tensor.pyclass Tensor(torch._C._TensorBase):C和Python的衔接:torch\csrc\autograd\python_variable.cppPyModule_AddObject(module, "_TensorBase", (PyObject *)&THPVariableType);THPVariableType的成员函数挂载:(文件同上) THPUtils_addPyMet原创 2021-07-18 20:28:06 · 1544 阅读 · 1 评论 -
[Pytorch] torch.autograd.profiler细节
Python部分:class profile: 核心类;用户侧用with来创建和退出之;self.function_events成员是核心数据;缺点:DataLoader发起的多进程调用,其无法get到其他进程的操作的cuda时间; 成员函数__enter__: with开始时调用,调用C++底层的torch.autograd._enable_profiler开始统计; 成员函数__exit__: with结束时调用,调用C++底层的torch.autograd._disable_profi..原创 2020-08-30 20:18:43 · 4475 阅读 · 0 评论 -
[Pytorch] torch.nn.Module的hook机制
torch\nn\modules\module.py文件里的Module是所有Module的基类。以下3个dict里面放的是作用于所有Module的hook:_global_backward_hooks = OrderedDict()_global_forward_pre_hooks = OrderedDict()_global_forward_hooks = OrderedDict()原注释:Thisisglobalstateusedfordebugging/profil...原创 2020-08-25 20:13:13 · 1319 阅读 · 0 评论 -
[Pytorch使用] cuda的使用
原文torch.cuda里,记录着当前默认device;torch.device("cuda"),指代当前默认device;with torch.cuda.device(1)这样的region,会设置当前默认device;torch.device('cuda:2') 是取2号GPU卡;对input tensor进行operator操作,则output tensor也会放到和input tensor相同的device上;(无视当前默认device)operator要求input都在相同de原创 2020-08-24 12:58:35 · 8669 阅读 · 0 评论 -
C++11/14语法
Move Constructor(Move构造函数)和Move Assignment Operators(Move赋值运算符)转载 2020-04-22 20:42:48 · 289 阅读 · 0 评论 -
pytorch源码阅读学习笔记(C代码宏展开实现泛型)
基本原则:#include的文件就相当于粘贴了一份代码;”.h”文件里放数据结构struct定义、函数声明(全局可以被多次#include);”.cpp”文件里放函数定义(实现代码;全局只能被编译一次);TH/generic/THTensor.h: 数据结构定义和函数声明;使用以下开关来控制要定义宏指向自己,还是展开代码:#ifndef TH_GENERIC_FILE#define...原创 2020-04-20 18:01:04 · 245 阅读 · 0 评论