caffe提取caffe 特征提取为什么在cpu下比gpu下要快

1.在对话框中添加CTreeCtrl控件并勾选Check Boxes选项,为CTreeCtrl控件添加CTreeCtrl变量m_ 2.为CTreeCtrl控件添加NM_CLICK消息响应函数OnClickTree();代码如下: OnClickTree(NMHDR* pNMHDR, LRESULT* pResult)
//接收有关点击测试的信息的整数
HTREEITEM hTree
GPU英文全称Graphic Processing Unit,中文翻译为“图形处理器”。GPU是相对于CPU的一个概念,由于在现代的计算机中(特别是家用系统,游戏的发烧友)图形的处理变得越来越重要,需要一个专门的图形的核心处理器。
GPU是显示卡的“大脑”,它决定了该显卡的档次和大部分性能,同时也是2D显示卡和3D显示卡的区别依据。2D显示芯片在处理3D图像和特效时主要依赖CPU的处理能力,称为“软加速”。3D显示芯片是将三维图像和特效处理功能集中在显示芯片内,也即所谓的“硬件加速”功能
processor qx9650为例,这种采用45nm技术,3ghz主频,拥有12m l2缓存的双核处理器的浮点运算能力可以达到48 gflops.但是随着近些年图形图像等流计算(stream computing)技术的极大发展,学术界和工业界发现,图形处理芯片gpu在多核化的发展方向上早已走到了cpu的前面,并且gpu的浮点处理能力也 大大超过了同时代的cpu.以拥有48个pixel shader处理器的ati radeon x1900 gpu为例,它的每个pixel shader处理器
Windows7 64bit VS2013 Caffe train MNIST操作步骤
"separated by ','. Cannot be set simultaneously with snapshot.");
// A simple registry for caffe commands.
typedef int(*BrewFunction)();
typedef std::map&caffe::string, BrewFunction& BrewM
BrewMap g_brew_
#define RegisterBrewFunction(func
/ Fedora guide When updating Caffe, it’s best to make clean before re-compiling. 依赖 Caffe依赖以下一些软件: CUDA需要运行在GPU模式下 推荐使用7.0版本或者最新的版本,6.*版本也可以。5.5和5.0可以兼容,但是问题多多。 BLAS可以用ATLAS、 MKL、或OpenBLAS。 Boost &= 1.55 protobuf, glog, gflags, hdf5 其他可选的依赖软件: OpenCV
caffe源码修改:抽取任意一张图片的特征
" The names cannot contain white space characters and the number of blobs"
" and leveldbs must be equal.";
int arg_pos = num_required_
arg_pos = num_required_
if (argc & arg_pos && strcmp(argv[arg_pos], "GPU
caffe源码修改:抽取任意一张图片的特征
(device_id, 0);
LOG(ERROR) && "Using Device_id=" && device_
Caffe::SetDevice(device_id);
Caffe::set_mode(Caffe::GPU);
LOG(ERROR) && "Using CPU";
Caffe::set_mode(Caffe::CPU);
Caffe::set_phase
&& strcmp(argv[arg_pos], "GPU") == 0) {
// whether use GPU------ -gpu 0
LOG(ERROR)&& "Using GPU";
uint device_id = 0;
if (argc & arg_pos + 1) {
device_id = atoi(argv[arg_pos + 1]);
CHECK_GE(device_id, 0
caffe 安装和使用问题列表
install package, do not use the pip install requirements.txt, it does not work. install one by one by yourself.
链接地址3.
python use problem:
When I tried to use the python binding after compiling caffe with cmake "_caffe" was not found.
caffe 安装和使用问题列表
install package, do not use the pip install requirements.txt, it does not work. install one by one by yourself.
链接地址3.
python use problem:
When I tried to use the python binding after compiling caffe with cmake "_caffe" was not found.
Caffe安装问题汇总
PREREQUISITES
CUDA 6.5 and a GPU of compute capability 3.0 or higher are required. 意思是GPU的加速能力不够,CUDNN只支持CUDA Capability 3.0以上的GPU加速,而我的笔记本显卡GT635M才2.1的加速能力,在其他3.0以上的显卡运行正常,因此选择不启用cuDNN加速,在Makefile.config中注释USE_CUDNN行。 【问题4】/usr/bin/ld: cannot find
Caffe interface 之 Command Line
在 CaffeRoot 下的/build/tools中运行caffe命令 caffe train -solver examples/mnist/lenet_solver.prototxt -gpu 2中的-gpu 2 中的2应该是GPU的编号,笔者只有一个GPU,将2改成0后,正常训练 caffe test -model examples/mnist/lenet_train_test.prototxt -weights examples/mnist
Caffe 编译安装
Caffe.这有助于云和集群方式的部署。 链接地址CUDA以及BLAS Caffe 需要 CUDA nvcc 编译器来编译GPU 代码 ,需要CUDA驱动来操作GPU. 要安装 CUDA, 请参照NVIDIA CUDA 网站和网站上的安装说明.分别安装依赖库和最新的驱动; 和依赖库绑定的驱动通常版本比较老.警告!
331.* CUDA 系列驱动有严重的性能问题: 不要使用. 为了达到最好的性能, Caffe 可以通过NVIDIA cuDNN加速.
cuDNN 网站注册是免费的, 安装完后继续下面的安装
Caffe 编译安装
集群方式的部署。 CUDA以及BLAS Caffe 需要 CUDA nvcc 编译器来编译GPU 代码 ,需要CUDA驱动来操作GPU. 要安装 CUDA, 请参照NVIDIA CUDA 网站和网站上的安装说明.分别安装依赖库和最新的驱动; 和依赖库绑定的驱动通常版本比较老.警告!
331.* CUDA 系列驱动有严重的性能问题: 不要使用. 为了达到最好的性能, Caffe 可以通过NVIDIA cuDNN加速.
cuDNN 网站注册是免费的, 安装完后继续下面的安装说明. 要使用cuDNN
Caffe 编译安装
Caffe.这有助于云和集群方式的部署。 链接地址CUDA以及BLAS Caffe 需要 CUDA nvcc 编译器来编译GPU 代码 ,需要CUDA驱动来操作GPU. 要安装 CUDA, 请参照NVIDIA CUDA 网站和网站上的安装说明.分别安装依赖库和最新的驱动; 和依赖库绑定的驱动通常版本比较老.警告!
331.* CUDA 系列驱动有严重的性能问题: 不要使用. 为了达到最好的性能, Caffe 可以通过NVIDIA cuDNN加速.
cuDNN 网站注册是免费的, 安装完后继续下面的安装
如何在caffe中添加新的Layer
to proto/caffe.proto, updating the next available ID. Also declare parameters, if needed, in this file. Make your layer createable by adding it to layer_factory.cpp. Write tests in test/test_your_layer.cpp. Use test/test_gradient_check_util.hpp to check
Caffe安装过程记录(CentOS,无独立显卡,无GPU)
参考资料: /articles/uiuA3e Caffe 安装配置(CentOS + 无GPU) .cn/s/blog_vewt.html caffe 安装配置(CentOS 6.5 + 无GPU) /platero/p/3993877.html
Caffe + Ubuntu 14.04 64bit + CUDA 6.5 配置说明 http
Caffe安装过程记录(CentOS,无独立显卡,无GPU)
参考资料: /articles/uiuA3e Caffe 安装配置(CentOS + 无GPU) .cn/s/blog_vewt.html caffe 安装配置(CentOS 6.5 + 无GPU) /platero/p/3993877.html
Caffe + Ubuntu 14.04 64bit + CUDA 6.5 配置说明 http
功能: Caffe的底层数据的切换(cpu模式和gpu模式),需要用到内存同步模块。 源码:头文件 #ifndef CAFFE_SYNCEDMEM_HPP_
#define CAFFE_SYNCEDMEM_HPP_
#include &cstdlib&
#include "caffe/common.hpp"
#include "caffe/util/math_functions.hpp"
namespace caffe {
inline void CaffeMallocHost
功能: Caffe的底层数据的切换(cpu模式和gpu模式),需要用到内存同步模块。 源码:头文件 #ifndef CAFFE_SYNCEDMEM_HPP_
#define CAFFE_SYNCEDMEM_HPP_
#include &cstdlib&
#include "caffe/common.hpp"
#include "caffe/util/math_functions.hpp"
namespace caffe {
inline void CaffeMallocHost
& 2012 - 2016 &
&All Rights Reserved. &
/*爱悠闲图+*/
var cpro_id = "u1888441";下次自动登录
现在的位置:
& 综合 & 正文
我所写的CNN框架 VS caffe
我所写的CNN框架 VS caffe
一个月前,自己模仿caffe实现了一个卷积神经网络的框架。
1无缝支持CPU和GPU模式,GPU模式使用cuda实现。
1我的CNN不依赖与任何第三方的函数库,caffe用到了第三方的数学函数库(cublas和mkl)来做矩阵操作。
其实区别就在于,caffe采用了矢量化编程的方法,如ufldl教程所说http://deeplearning.stanford.edu/wiki/index.php/%E7%9F%A2%E9%87%8F%E5%8C%96%E7%BC%96%E7%A8%8B。
---------------------------------------------------------------------------------------------------------------
矢量化编程是提高速度的一种有效方法。为了提升特定数值运算操作(如矩阵相乘、矩阵相加、矩阵-向量乘法等)的速度,数值计算和并行计算的研究人员已经努力了几十年。矢量化编程的思想就是尽量使用这些被高度优化的数值运算操作来实现我们的学习算法。
---------------------------------------------------------------------------------------------------------------
这也解释了caffe比我的快的原因。
对于cpu模式,我只是简单的用for循环了实现一些矩阵操作。
对于gpu模式,虽然用到了cuda的线程模型,有一定的并行度。但是并没有人家的数学函数库那么快。
要想超过caffe的速度,这里也是切入点之一。
方法1:找到比cublas更快的数学库。
方法2:精通GPU编程,研究cublas等源码,提高数据的利用率。其实用cublas等函数库也是有一个致命缺点的,函数只能给你返回最终结果,中间结果不会保存。但是很可能存在这么一种情况,这些中间结果可能下次操作会用到,如果能用到,速度必然更加,否则得重新计算,浪费时间。所以,如果对cublas源码精通,或者能设计出比她更高性能的数值运算操作,我们就可以保存一些中间结果,提高数据的利用率,达到性能上的提高。
当然,这里还有指出,并不是所有操作都能转换为矢量化编程。gpu模式下,caffe里面有一些操作也是自己写核函数实现的,不能用现有的函数实现,比如pool层的正向传播和反向传播。
2 类设计和内存设计
我的CNN类设计比caffe清晰,每一层的特征值,权重值,都有一个类,而caffe都用blob。
从代码的清晰度来看,我的比caffe好。
但是从性能上来讲,就不行了。
caffe的blob内存设计是数据密集型的,我的CNN特征值,权重值等数据在不同的对象中,因此从内存上来看也是分开的。
这恰好是caffe的巧妙指出,只有数据在连续的内存空间,才可以方便的用到第三方的函数库的矩阵操作来实现矢量化编程。
而我,只能用多个循环来操作。
3 迭代方法
虽然用的都是随机梯度下降法来求最优解,
但是我的是每次一张图片,
而caffe每次一批图片。
除了上面提到的一些提高性能的方法,
还想到一点。就是实现内存池,优化内存的使用。肯定有些操作,会申请临时空间,然后用完了就丢弃。
这时就可以用内存池来优化了。
唉,现实是残酷的。可惜我现在还是没有能力写出比caffe更快的,因为对GPU编程和矢量化编程不够精通。这个我所写CNN暂且就被丢弃了。先用caffe玩,毕竟研究人家代码有很多可取之处。
本文链接:http://blog.csdn.net/lingerlanlan/article/details/
&&&&推荐文章:
【上篇】【下篇】18:58 提问
Windows环境下的在GPU上运行caffe程序怎么移植到cpu上来?
使用matlab跑源代码,大部分都是运行在Gpu上的caffe程序,本人电脑没有GPU,想用cpu跑,怎么办呢?将程序中的GPu改成CPU也不好使,matlab闪退,求助
按赞数排序
其他相关推荐

我要回帖

更多关于 caffe cpu与gpu调度 的文章

 

随机推荐