Pytorch源码搜索与分析

PyTorch的的代码主要由C10、ATen、torch三大部分组成的。其中:

C10

C10,来自于Caffe Tensor Library的缩写。这里存放的都是最基础的Tensor库的代码,可以运行在服务端和移动端。PyTorch目前正在将代码从ATen/core目录下迁移到C10中。C10的代码有一些特殊性,体现在这里的代码除了服务端外还要运行在移动端,因此编译后的二进制文件大小也很关键,因此C10目前存放的都是最核心、精简的、基础的Tensor函数和接口。

C10目前最具代表性的一个class就是TensorImpl了,它实现了Tensor的最基础框架。继承者和使用者有:

Variable的Variable::Impl
SparseTensorImpl
detail::make_tensor(storage_impl, CUDATensorId(), false)
Tensor(c10::intrusive_ptr<TensorImpl, UndefinedTensorImpl> tensor_impl)
c10::make_intrusive<at::TensorImpl, at::UndefinedTensorImpl>
值得一提的是,C10中还使用/修改了来自llvm的SmallVector,在vector元素比较少的时候用以代替std::vector,用以提升性能;

ATen

ATen,来自于 A TENsor library for C++11的缩写;PyTorch的C++ tensor library。ATen部分有大量的代码是来声明和定义Tensor运算相关的逻辑的,除此之外,PyTorch还使用了aten/src/ATen/gen.py来动态生成一些ATen相关的代码。ATen基于C10,Gemfield本文讨论的正是这部分;

torch._VF

torch._VF is a subset of those functions are mapped to ATen functions in torch/jit/_builtins.py.
例如如果沿着torch.nn.dropout去找,会发现找到torch._VF这个库,IDE无法继续navigate:
在这里插入图片描述
这时候直接去github的pytorch源码repo(https://github.com/pytorch/pytorch/tree/b3bb234e16780ea3f3d749d2c8c156c9245eb797)搜dropout_就能很快看到在cpu上cpp的实现:
在这里插入图片描述
加上cuda的限制就是gpu的实现:
在这里插入图片描述
另外在pytorch的老旧版本,像dropout这种由python实现的算子在pytorch v1.0.4版本的https://github.com/pytorch/pytorch/blob/v0.1.4/torch/nn/functions/dropout.py 这个目录下还能找到,但是github并没有提供历史tag的搜索功能,不如就去https://github.com/colesbury/pytorch-old/tree/master/torch/nn/functions 这个古早目录下面找吧

Torch

Torch,部分代码仍然在使用以前的快要进入历史博物馆的Torch开源项目,比如具有下面这些文件名格式的文件:

TH* = TorcH
THC* = TorcH Cuda
THCS* = TorcH Cuda Sparse (now defunct)
THCUNN* = TorcH CUda Neural Network (see cunn)
THD* = TorcH Distributed
THNN* = TorcH Neural Network
THS* = TorcH Sparse (now defunct)
THP* = TorcH Python
PyTorch会使用tools/setup_helpers/generate_code.py来动态生成Torch层面相关的一些代码,这部分动态生成的逻辑将不在本文阐述,你可以关注Gemfield专栏的后续文章。

部分转载自

  1. https://zhuanlan.zhihu.com/p/55966063

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1380858.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

利用Python+Gephi生成刀塔霸业棋子关系图

刀塔霸业版本&#xff1a;2019年7月24日 Gephi下载地址&#xff1a;Download 目录 代码 Gephi效果图 词云图 更新 代码 代码如下&#xff1a; # -*- coding: utf-8 -*- """ author: d0t4 date: 2019/7/29 desc: 生成刀塔霸业中各棋子的关系…

用狼的处世哲学做SOHO 一

分享一下我老师大神的人工智能教程&#xff01;零基础&#xff0c;通俗易懂&#xff01;http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章。分享知识&#xff0c;造福人民&#xff0c;实现我们中华民族伟大复兴&#xff01; &#xff0d;&#xff0d;创业者要有象狼一…

P450进阶款无人机室内定位功能研测

在以往的Prometheus 450&#xff08;P450&#xff09;无人机上&#xff0c;我们搭载的是Intel Realsense T265定位模块&#xff0c;使用USB连接方式挂载到机载计算机allspark上&#xff0c;通过机载上SDK驱动T265运行并输出SLAM信息&#xff0c;以此来实现室内定位功能。 为进…

autocad全国计算机考试试题,2015年职称计算机考试试题:AutoCAD模拟题及答案

1. 画完一幅图后&#xff0c;在保存该图形文件时用_______作为扩展名。 A.cfg B.dwt C.bmp D.dwg 2. 要始终保持物体的颜色与图层的颜色一致&#xff0c;物体的颜色应设置为_______。 A.BYLAYER B.BYBLOCK C.COLOR D.RED 3. 在屏幕上用平移“PAN”命令将某图形沿X方向及Y方向各…

LibreCAD windows 编译

一、安装 VS2019&#xff0c;QT&#xff0c;QT VS 插件 二、boost下载 下载boost_1_71_0-msvc-14.2-64.exe文件(含源码和编译好的库) Boost C Libraries - Browse /boost-binaries/1.71.0 at SourceForge.netFree peer-reviewed portable C source librarieshttps://sourcef…

VBA for AutoCAD

Download the Microsoft Visual Basic for Applications Module (VBA) 2016 Downloads AutoCAD 2016 VBA module 32-bit (exe - 70206Kb)

cad.net开发

最近要做一个cad文件的7参数坐标转换的程序&#xff0c;想基于cad进行二次开发&#xff0c;初次学习。 为了方便快捷开发&#xff0c;基于cad.net进行二次开发&#xff0c;网上查了很多资料&#xff0c;有基于acad等各种&#xff0c;总是遇到这样那样的问题&#xff0c;经过自…

2022年03月 C/C++(一级)真题解析#中国电子学会#全国青少年软件编程等级考试

第1题&#xff1a;双精度浮点数的输入输出 输入一个双精度浮点数&#xff0c;保留8位小数&#xff0c;输出这个浮点数。 时间限制&#xff1a;1000 内存限制&#xff1a;65536 输入 只有一行&#xff0c;一个双精度浮点数。 输出 一行&#xff0c;保留8位小数的浮点数。 样例输…

Michael.W基于Foundry精读Openzeppelin第24期——ERC165Storage.sol

0. 版本 [openzeppelin]&#xff1a;v4.8.3&#xff0c;[forge-std]&#xff1a;v1.5.6 0.1 ERC165Storage.sol Github: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.8.3/contracts/utils/introspection/ERC165Storage.sol ERC165Storage合约是ERC165…

【Java学习】System.Console使用

背景 在自学《Java核心技术卷1》的过程中看到了对System.Console的介绍&#xff0c;编写下列测试代码&#xff0c; public class ConsoleTest {public static void main(String[] args) {Console cs System.console();String name cs.readLine("AccountInfo: ");…

React UI组件库

1 流行的开源React UI组件库 1 material-ui(国外) 官网: Material UI: React components based on Material Design github: GitHub - mui/material-ui: MUI Core: Ready-to-use foundational React components, free forever. It includes Material UI, which implements Go…

【网约车】 网约车管理解决方案

背景 自2014年7月以来&#xff0c;一些互联网企业陆续推出网络预约出租汽车服务&#xff0c;对于满足社会公众多样化、差异性出行需求发挥了积极作用。面对新一代信息技术的发展与相关行业的快速渗透&#xff0c;行业监管部门要顺应新技术和新应用的发展趋势&#xff0c;从促进…

Python实现微信小程序自动约车

目录 一、Fiddler抓取小程序包 二、分析抓到的包 一、获取全部车辆列表 二、获取班车停靠点 三、Python实现预约车辆 一、获取明天的日期 二、获取班车id 三、获取车辆停靠点 四、Server酱实现消息提示 四、利用宝塔面板&#xff0c;进行定时执行脚本&#xff0c;实现自动约…

微信小程序汽车租赁平台+后台管理系统

《微信小程序汽车租赁平台后台管理系统》该项目含有源码、论文等资料、配套开发软件、软件安装教程、项目发布教程等 本系统包含微信小程序做的汽车租赁前台和Java做的后台管理系统&#xff1a; 微信小程序——汽车租赁前台涉及技术&#xff1a;WXML 和 WXSS、JavaScript Ja…

有没有软件支持批量查询官方界面的快递号码

如果你想做好电子商务或物流行业&#xff0c;你一定不能虎头蛇尾。前端效率不够&#xff0c;必须做好后端的及时跟踪和维护。当大量快递以集中方式发出时&#xff0c;必须及时跟踪物流信息&#xff0c;掌握快递的动态。今天&#xff0c;小编将安利一个实用的辅助查询软件&#…

搭上锂电池公司Livent高速增长的顺风车

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 作为世界上为数不多的拥有完整产业链的锂生产商之一&#xff0c;Livent &#xff08;LTHM&#xff09;处于可以充分利用锂需求繁荣的位置。该公司正在做出明智的资本分配决策&#xff0c;继续扩大其上游和中游产能&#xf…

微信小程序使用物流查询插件

微信小程序使用物流查询插件 文章目录 微信小程序使用物流查询插件添加插件添加成功使用方式声明使用插件引入插件包 效果图 物流查询插件 添加插件 登录微信公众平台后台—>设置—>第三方设置—>添加插件搜索&#xff1a;物流服务 添加成功 使用方式 根据插件的开发…

顺丰快递单号查询接口物流路由跟踪信息快递鸟api对接教程

目录 1.完成前期准备工作2.API接口3.请求参数&#xff08;Headers&#xff09;4.请求参数&#xff08;Body&#xff09;5.返回参数&#xff08;Return&#xff09;6.请求完整报文&#xff08;示例&#xff09;7.成功返回报文&#xff08;示例&#xff09;8.失败返回报文&#x…

同时追踪顺心捷达多个单号物流,并分析派件时效

如何在电脑批量查询顺心捷达单号的信息&#xff1f;并分析派件时效&#xff0c;像派件前、派件后时效&#xff0c;可以分析吗&#xff1f;小编的回答当然是可以的&#xff0c;下面一起用快递批量查询高手来操作。 查询顺心捷达物流 进入快递批量查询高手&#xff0c;在“添加单…

快递查询软件,设置自动跟踪提醒,一键查询物流信息

快递是很多电商行业中相对来说必不可少的一环&#xff0c;因为随着大家的网购&#xff0c;发货量大了起来&#xff0c;快递也就多了&#xff0c;很多人每天可能就需要查询许许多多的快递物流。下面小编给大家分享一个新的技巧&#xff0c;下面一起来试试&#xff0c;希望能给大…