Caffe 理解blob之SyncedMen类同步CPU和GPU

Caffe中文社区给的官网译本说到:

数据既可存储在CPU上,也可以存储在GPU上,因此有两种数据访问方式:

静态方式,不改变数值;动态方式,改变数值。

SysncedMem类同步CPU和GPU上的数值,最小化传送数据。

我对示例给了一个完整注释,用以理解blob何时会复制数据:

const Dtype* cpu_data() const;
Dtype* mutable_cpu_data();const Dtype* foo;
Dtype* bar;
//assume init data equal to 0, and every update add 1
                                //value operation               CPU GPU
foo = blob.gpu_data();          //0     copy data CPU -> GPU    0   0
foo = blob.cpu_data();          //0     get a copy from CPU     0   0
bar = blob.mutable_gpu_data();  //1     GPU update              0   1
// ... some operation ...
bar = blob.mutable_gpu_data();  //2     GPU update              0   2
foo = blob.cpu_data();          //2     copy data GPU -> CPU    2   2
foo = blob.gpu_data();          //2     get a copy from GPU     2   2 
bar = blob.mutable_cpu_data();  //3     CPU update              3   2
bar = blob.mutable_gpu_data();  //4     copy data CPU -> GPU    3   4
bar = blob.mutable_cpu_data();  //5     copy data GPU -> CPU    5   4

我推测SysncedMem里面有标记位来表示CPU和GPU的更新情况。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值