zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    SQLServer查询执行计划分析
    武汉性能测试研讨会资料共享
    下周 武汉性能测试研讨会!
    sql优化之(DMV)
    深圳测试研讨会圆满结束,PPT共享
    深圳性能测试研讨会即将举行!
    LoadRunner执行过程报错“Failed to connect to server "xxx.xxx.xxx.xxx:xx":[10060] connetion time out”
    Nginx upstream 长连接
    命令行下打WAR包
    新一代服务器性能测试工具Gatling
  • 原文地址:https://www.cnblogs.com/shepherd2015/p/7876120.html
Copyright © 2011-2022 走看看