gpt4 book ai didi

caffe - Caffe 何时制作数据副本?

转载 作者:行者123 更新时间:2023-12-04 07:21:24 31 4
gpt4 key购买 nike

 // Assuming that data are on the CPU initially, and we have a blob.
const Dtype* foo;
Dtype* bar;
foo = blob.gpu_data(); // data copied cpu->gpu.
foo = blob.cpu_data(); // no data copied since both have up-to-date contents.
bar = blob.mutable_gpu_data(); // no data copied.
// ... some operations ...
bar = blob.mutable_gpu_data(); // no data copied when we are still on GPU.
foo = blob.cpu_data(); // data copied gpu->cpu, since the gpu side has modified the data
foo = blob.gpu_data(); // no data copied since both have up-to-date contents
//1
bar = blob.mutable_cpu_data(); // still no data copied.
bar = blob.mutable_gpu_data(); // data copied cpu->gpu.
bar = blob.mutable_cpu_data(); // data copied gpu->cpu

为什么最后两行复制数据? GPU 和 CPU 不是都有最新的内容吗?

http://caffe.berkeleyvision.org/tutorial/net_layer_blob.html

最佳答案

.gpu_data.cpu_data用于情况是 data仅用作输入,不会被算法修改。 .mutable_*当数据本身在运行算法时更新时使用。

每当调用数据时,它都会检查前一条语句是否为 mutable_*函数调用,并且也使用相同的处理器(gpu 或 cpu)。如果使用相同的处理器,则不需要复制数据。如果正在使用其他处理器,则数据可能已在之前的 .mutable_* 中更新。调用,因此需要数据副本。

编辑 1
每当前一条指令是“可变的”时,如果当前指令在不同的处理器上,则数据复制将在当前指令之前完成。

在其他情况下,除了特殊的初始条件外,不会发生数据复制,即;当 GPU 内存中根本不存在数据时,因此将在 *_gpu_data() 调用之前复制数据。

关于caffe - Caffe 何时制作数据副本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28710350/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com