NVcaffe源码阅读——Blob的重新构建

本文详细介绍了NVcaffe中Blob的重构,包括Type枚举结构、Syncedmem的修改、Tensor类的设计以及Blob和TBlob的使用。NVcaffe为支持多种数据类型,将原本在blob中的功能分离到Tensor类,并通过Syncedmem进行内存和显存管理。Blob的成员变量data_tensor_和diff_tensor_使用Tensor类,提供了与原始Caffe兼容的API。TBlob作为Blob的子类,限制了数据类型的动态转换,用于存储中间变量。

NVcaffe源码阅读——blob的重新构建

nvcaffe由于对数据类型做了很大的拓展,所以作者对blob的构建上做了很大改动。即向下的内存/显存管理提供了tensor类,blob类使用tensor类作为成员变量代替以前的data和diff指针;blob提供与caffe相兼容的api借口,保持功能的一致性,添加部分适应新功能的api;最后使用Tblob类包裹blob类,提供更加灵活的模板定义。

Type

变量类型Type在代码里到处可见,它是作者定义不同数据类型的一个枚举结构,定义在caffe.proto最开头。通过定义可以看到目前nvcaffe所支持的数据类型:

// Math and storage types
enum Type {
  DOUBLE = 0;
  FLOAT = 1;
  FLOAT16 = 2;
  INT = 3;  // math not supported
  UINT = 4;  // math not supported
}

其具体数值大小则是个数据类型的字节长度,定义在type.cpp中。

Syncedmem的修改

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值