caffe syncedmen 程序分析

24 篇文章 0 订阅

caffe syncedmen 程序 用来管理内存分配,和GPU和CPU之间的同步。

这个程序调用了上次讲的 #include "caffe/common.hpp" 程序。

 从理论上讲, CaffeMallocHost和CaffeFreeHost应该简单地调用cudaMallocHost和cudaFree函数来创建固定的内存

然而,这些代码依赖于CUDA GPU 的存在(我不知道这是为什么,因为分配的内存必须不能访问GPU资源,但它只是产生一个误差的Cuda5.0),将导致在没有GPU的一台机器上运行时的问题。因此,我们简单地定义这两个函数的安全和可能的变化,如果问题
在以后的版本//调用CUDA功能的消失。
实际上,尽管我们正在创造取消固定内存在这里,只要我们不断访问它们的内存页几乎总是停留在物理内存(假设我们有安装足够大的存储器),以及似乎没有在这里创建出内存瓶颈。


SyncedMemory::~SyncedMemory() 
功能:析构函数 
步骤:1.如果有CPU数据则释放 
2.如果有GPU数据则释放

inline void SyncedMemory::to_cpu() 
功能:把数据放到cpu上 
1.数据未初始化,则在cpu申请内存(申请为0)。此时状态为HEAD_AT_CPU 
2.数据本来在gpu,则从gpu拷贝内存到cpu。此时状态为SYNCED 
3.数据本来在cpu,不做处理 
4.数据在cpu和gpu都有,不做处理

inline void SyncedMemory::to_gpu() 
功能:把数据放到gpu上 
1.数据未初始化,在gpu申请内存(申请为0)。此时状态为HEAD_AT_GPU 
2.数据在cpu,从cpu拷贝到gpu。此时状态为SYNCED 
3.数据在gpu,不做操作。 
4.数据在cpu和gpu都有,不做操作。

const void* SyncedMemory::cpu_data() 
功能:返回数据在cpu的指针

void SyncedMemory::set_cpu_data(void* data) 
功能:清空CPU的数据

void* mutable_cpu_data() 
功能:返回数据在cpu的指针,并改变数据的状态为HEAD_AT_CPU

void* mutable_gpu_data() 
功能:返回数据在cpu的指针,并改变数据的状态为HEAD_AT_GPU

版权声明:本文为博主原创文章,未经博主允许不得转载。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值