[深度学习框架] Pytorch源码学习之源码基础一

本文深入探讨Pytorch源码,关注Python对象的引用计数及内存管理,解释如何通过Unix Domain Socket实现多进程间的内存共享。此外,还介绍了DLPack作为内存张量的标准,它允许在不同框架间实现zero-copy数据共享,简化了Pytorch到DLPack格式的数据转换过程。
摘要由CSDN通过智能技术生成

代码段一

// Python object that backs torch.autograd.Variable
struct THPVariable {
   
    PyObject_HEAD
    torch::autograd::Variable cdata;
    PyObject* backward_hooks;
};

PyObject_HEAD这个宏用于标准化python对象,其拓展为一个结构体,包含有指向一个type对象(定义了初始化方法、内存分配等)的指针以及一个引用计数器。在python API中还有两个宏Py_INCREF()Py_DECREF(),它们用来增加和减少python对象的引用数量

代码段二

typedef struct THTensor
{
   
    int64_t *size;
    int64_t *stride;
    int nDimension;
    THStorage *storage;
    ptrdiff_t storageOffset;
    int refcount;
    char flag;
} THTensor;

可以看到,THTensor包含了size/strides/dimensions/offsets以及THStorage
在这里插入图片描述
代码段三

static THStorage* THPStorage_(newFilenameStorage)(ptrdiff_t size)
{
   
  int flags = TH_ALLOCATOR_MAPPED_SHAREDMEM | TH_ALLOCATOR_MAPPED_EXCLUSIVE;
  std::string handle = 
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值