下面是caffe官方中文译本介绍blob的一个示例,一直没明白,请大牛指导,谢谢。
比如foo = blob.cpu_data(); // 没有数据复制,两者都有最新的内容
为什么没有数据复制,为什么是最新内容,其他行也是很不解
// 假定数据在 CPU 上进行初始化,我们有一个 blob
const Dtype* foo;
Dtype* bar;
foo = blob.gpu_data(); // 数据从 CPU 复制到 GPU
foo = blob.cpu_data(); // 没有数据复制,两者都有最新的内容
bar = blob.mutable_gpu_data(); // 没有数据复制
// ... 一些操作 ...
bar = blob.mutable_gpu_data(); // 仍在 GPU,没有数据复制
foo = blob.cpu_data(); // 由于 GPU 修改了数值,数据从 GPU 复制到 CPU
foo = blob.gpu_data(); // 没有数据复制,两者都有最新的内容
bar = blob.mutable_cpu_data(); // 依旧没有数据复制
bar = blob.mutable_gpu_data(); // 数据从 CPU 复制到 GPU
bar = blob.mutable_cpu_data(); // 数据从 GPU 复制到 CPU