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

pytorch下的lib库 源码阅读笔记(2)的更多相关文章

  1. pytorch下的lib库 源码阅读笔记(1)

    置顶:将pytorch clone到本地,查看initial commit,已经是麻雀虽小五脏俱全了,非常适合作为学习模板. 2017年12月7日01:24:15 2017-10-25 17:51 参 ...

  2. 源码阅读笔记 - 1 MSVC2015中的std::sort

    大约寒假开始的时候我就已经把std::sort的源码阅读完毕并理解其中的做法了,到了寒假结尾,姑且把它写出来 这是我的第一篇源码阅读笔记,以后会发更多的,包括算法和库实现,源码会按照我自己的代码风格格 ...

  3. libevent源码阅读笔记(一):libevent对epoll的封装

    title: libevent源码阅读笔记(一):libevent对epoll的封装 最近开始阅读网络库libevent的源码,阅读源码之前,大致看了张亮写的几篇博文(libevent源码深度剖析 h ...

  4. guavacache源码阅读笔记

    guavacache源码阅读笔记 官方文档: https://github.com/google/guava/wiki/CachesExplained 中文版: https://www.jianshu ...

  5. JDK1.8源码阅读笔记(1)Object类

    JDK1.8源码阅读笔记(1)Object类 ​ Object 类属于 java.lang 包,此包下的所有类在使⽤时⽆需⼿动导⼊,系统会在程序编译期间⾃动 导⼊.Object 类是所有类的基类,当⼀ ...

  6. mxnet源码阅读笔记之include

    写在前面 mxnet代码的规范性比Caffe2要好,看起来核心代码量也小很多,但由于对dmlc其它库的依赖太强,代码的独立性并不好.依赖的第三方库包括: cub dlpack dmlc-core go ...

  7. CI框架源码阅读笔记5 基准测试 BenchMark.php

    上一篇博客(CI框架源码阅读笔记4 引导文件CodeIgniter.php)中,我们已经看到:CI中核心流程的核心功能都是由不同的组件来完成的.这些组件类似于一个一个单独的模块,不同的模块完成不同的功 ...

  8. CI框架源码阅读笔记4 引导文件CodeIgniter.php

    到了这里,终于进入CI框架的核心了.既然是“引导”文件,那么就是对用户的请求.参数等做相应的导向,让用户请求和数据流按照正确的线路各就各位.例如,用户的请求url: http://you.host.c ...

  9. CI框架源码阅读笔记3 全局函数Common.php

    从本篇开始,将深入CI框架的内部,一步步去探索这个框架的实现.结构和设计. Common.php文件定义了一系列的全局函数(一般来说,全局函数具有最高的加载优先权,因此大多数的框架中BootStrap ...

随机推荐

  1. Matlab:显(隐)式Euler和Richardson外推法变步长求解刚性问题

    一.显示Euler 函数文件:Euler.m function f=Euler(h,Y) f(1,1)=Y(1)+h*(0.01-(1+(Y(1)+1000)*(Y(1)+1))*(0.01+Y(1) ...

  2. PHP文件PHP代码及运行(适合PHP初学者)

    本文转自:https://blog.csdn.net/cnds123/article/details/80700444 如果在warmpserver上运行php只显示源代码,可能是在用记事本保存后缀为 ...

  3. vue中关于v-for性能优化---track-by属性

    vue中关于v-for性能优化---track-by属性 最近看了一些react,angular,Vue三者的对比文章,对比来说Vue比较突出的是轻量级与易上手. 对比Vue与angular,Vue有 ...

  4. jvm回收器回收过程一:CMS和 G1的初认知(持续更新中)

    CMS:介绍: 1.CMS(Concurrent Mark-Sweep)是以牺牲吞吐量为代价来获得最短回收停顿时间的垃圾回收器.对于要求服务器响应速度的应用上,这种垃圾回收器非常适合. 在启动JVM参 ...

  5. (02) 第一个springboot程序

    1. 创建一个springboot程序 1. idea 自带的springboot插件 2. 直接从https://start.spring.io 创建好程序下载下来, 之后覆盖你的创建的项目 2. ...

  6. less的学习(@变量名)

    引自:https://www.cnblogs.com/starof/p/5226739.html Less 是一门 CSS 预处理语言,它扩充了 CSS 语言,增加了诸如变量.混合(mixin).函数 ...

  7. 线程基础:多任务处理——MESI协议以及带来的问题:伪共享

    1.概述 本文和后续文章将着眼CPU的工作原理阐述伪共享的解决方法和volatile关键字的应用. 2.复习CPU工作原理2.1.CPU工作原理要清楚理解本文后续内容,就需要首先重新概述一下JVM的内 ...

  8. linux c使用socket进行http 通信,并接收任意大小的http响应(五)

    http.c data2.c http_url.c http.h data2.h http_url.h主要实现的功能是通过URL结构体来实现HTTP通信,你可以把这三个文件独立出来,作为HTTP通信模 ...

  9. 2/17 笔记 n:字符串索引、切片、数据转换笔记

    切片:顾头不顾尾 s[首:尾:步长] 代码是从上到下依次判断,只要满足一个,就不会再往下走! continue和break有点类似,区别在于continue只是终止本次循环,接着还执行后面的循环,br ...

  10. ipa 注入 dylib

    前些日子再github找到了一个内存修改器 DLGMemor 免越狱在app内植入修改器,感觉很不错,就尝试去看看是否可行. 用到的工具:  Xcode 10. optool 首先要做的,安装 opt ...