很抱歉,我必须打开它,但是在opencl github分支和google论坛中都没有任何类型的(更新的)分步安装说明,特别是对于新手来说,如何在具有Intel Opencl驱动程序的Intel GPU上安装Caffe Opencl。
(a)这些指示仍然有效吗?
cmake -DUSE_GREENTEA = ON -DUSE_INTEL_SPATIAL = ON -DUSE_ISAAC = ON path_to_caffe_source
使-jn
使-jn runtest
在这个分支上https://github.com/BVLC/caffe/tree/opencl? 或者
关于什么?
cmake -DUSE_GREENTEA = ON -DUSE_INTEL_SPATIAL = ON -DUSE_ISAAC = ON -DBUILD_SHARED_LIBS = OFF -DUSE_CUDNN = OFF -DUSE -DBUILD_docs = OFF -DBUILD_python = OFF -DBUILD_matlab = OFF / root / caffe-opencl
(b)当clblas存在时,仍然需要atlaspack来编译opencl-caffe吗??? 它一直在要求atlaspack ???
(c)维也纳CL怎么样? 该分支仍然依赖于他们吗? 需要吗?
(D)libdnn的作用是什么? 代替?
(e)ISAAC呢?
(f)例如Windows分支说“如果未安装CUDA,Caffe将默认为CPU_ONLY构建”,这是否意味着在非cuda构建中,它将在Opencl模式下不起作用?
请更新并提供分步说明
谢谢
@atlury
自述文件中有一个Windows
部分,指导如何在Windows上进行编译和安装。
该描述中唯一缺少的步骤是下载ViennaCL-DEV:
https://github.com/viennacl/viennacl-dev
可以将其放在CMake可以找到它的任何路径中,例如,将Caffe克隆到的文件夹旁边。
生成指令与Linux指令不同,因为它是一个自动处理CMake配置和下载依赖项的脚本。
通常,无需担心Windows上的配置,因为它的设计宗旨是工作正常。 但是,我将为您提供一个简短的解释:
(a)不,不。 按照自述文件中的说明使用scripts/build_win.cmd
。
(b)是的,无论您如何编译,始终需要CPU BLAS。 但是build_win.cmd
将为您解决这个问题,它的默认配置是使用OpenBLAS。
(c)是的,需要ViennaCL,从此处克隆: https :
(d) LibDNN是OpenCL GPU的默认卷积引擎,是cuDNN的替代品。
默认情况下,还有其他可用的用于Intel GPU的Intel内核已启用。
(e) ISAAC,clBLAS和CLBlast是严格可选的。 如果要使用它们,则需要在Windows上分别编译它们,并将它们添加到依赖项中。 我不保证或不支持任何这些库的编译,它们由相应的项目维护者支持。
(f)不,在OpenCL分支上,这是不正确的。 此处的默认值为USE_GREENTEA = ON,USE_CUDA = OFF,CPU_ONLY = OFF。
圣诞节假期后,我将更新自述文件。 不幸的是,我现在没有时间进行详细的逐步介绍。
CC: @willyd
@ naibaf7
感谢您及时的回复。 那么Linux指令呢?
是否仍然需要OpenCL BLAS和ISAAC?
https://github.com/01org/caffe/wiki/clCaffe
@atlury
在Linux上的两种方法:使用CMAKE并使用'make all -j8'或将makefile.config.example复制到makefile.config并使用make all -j8; make pycaffe -j8; make runtest -j8
编译。
请注意,在Linux上,Makefile和CMAKE的编译结果略有不同。 Makefile较旧,但更容易,而CMAKE更复杂。
该分支与https://github.com/01org/caffe/wiki/clCaffe不同
因此它有不同的要求。 但是,那里的Intel空间内核已合并到此分支中。
严格要求:
可选要求:
谢谢@ naibaf7
对于Linux,LIBDNN仅适用于大多数nVidia和AMD芯片吗? 我们应该为Intel iGPU使用Intel空间吗?
@atlury
英特尔空间不支持高效的反向传播,也不支持所有形状的卷积,但是,是的,它是英特尔iGPU上最快的正向传播。
但是我建议您同时尝试一下,并检查哪种方法最适合您的网络和设备。
@ naibaf7
Fabian,Windows构建将支持使用Mingw-64进行编译。 请让我知道。 是否有针对性的说明? Mocosoft Studio太肿了。
@atlury当前不,不是我所知道的。 @willyd是Windows构建的主要贡献者和维护者,因此也许他可以回答。
尽管microsoft studio可能有点肿,但它非常方便,因为@willyd预编译了VS2015和VS2013的所有依赖项。 因此,我想使用mingw-64会做更多的工作。
我无意支持mingw-64,因为CUDA不支持mingw作为Windows上的主机编译器。 话虽如此,我欢迎任何与支持mingw64有关的PR,只要它们不会增加构建的复杂性。
@willyd
太酷了,我的想法。 在这种情况下,我倾向于简单,因为没有MinGW64的Windows支持对我来说似乎不是一个重大陷阱。 在每个相应的操作系统上使用标准编译器在某种程度上更可取。
当人们使用棘手的构建配置时,我主要担心的是支持方面的开销。
@ naibaf7
Windows opencl构建是否包括对引擎SPATIAL的支持? 当我包含引擎:SPATIAL或引擎:INTEL_SPATIAL时,出现以下错误之一
_layer conv1的引擎未知。
_Error解析文本格式caffe.NetParameter:18:3:字段“ engine”的“ SPATIAL”的未知枚举值。_
Wiki混淆了read.me https://github.com/BVLC/caffe/tree/opencl
它在所有卷积层规范中都提到了_add入口引擎:SPATIAL_。 以及_“ engine:INTEL_SPATIAL <--------------------------这行!” _
哪一个?
而且它在没有引擎的情况下也可以正常运行:prototxt中的空间。
_opencl-caffe-test.exe imagenet_deploy.prototxt bvlc_reference_caffenet.caffemodel imagenet_mean.binaryproto synset_words.txt truck.jpg
使用设备ID为0的GPU
---------- truck.jpg的预测----------
0.9872-“ n03417042垃圾车,垃圾车”
0.0110-“ n04467665挂车,牵引车,半挂车,半挂车,铰接式货车
0.0013-“ n03496892收割机,收割机”
0.0002-“ n04428191脱粒机,脱粒机,脱粒机”
0.0001-“ n04461696拖车,拖车,清障车” _
这也是一些“其他”观察
a)当编译为DLL而不是静态文件时效果更好。 尤其是解决了错误_“检查失败:registry.count(type)== 1(0与1)未知图层类型” _(Visual Studio 2015)
b)似乎没有选择OpenCL.lib,因此解决方法是将其从opencl-sdk文件夹手动复制到build文件夹(它期望路径变量名是什么?)
c)可以将构建文件夹中提取的库编译为最新版本(例如,opencv 3.2等)
更多
C:\ Downloads \ xxx.caffe-opencl-build \ bin> caffe设备查询
I0108 12:35:04.885713 19872常见。 cpp:382 ]设备总数:3
I0108 12:35:04.888244 19872常见。 cpp:383 ] CUDA设备:0
I0108 12:35:04.889102 19872常见。 cpp:384 ] OpenCL设备:3
I0108 12:35:04.889681 19872常见。 cpp:408 ]设备ID:0
I0108 12:35:04.890744 19872常见。 cpp:410 ]设备后端:OpenCL
I0108 12:35:04.891839 19872常见。 cpp:412 ]后端详细信息:英特尔(R)公司:OpenCL 1.2
I0108 12:35:04.893450 19872常见。 cpp:414 ]设备供应商:英特尔(R)公司
I0108 12:35:04.894731 19872常见。 cpp:416 ]名称:Intel(R)HD Graphics 4400
I0108 12:35:04.895730 19872常见。 cpp:418 ]全局内存总计:1708759450I0108 12:35:04.897233 19872常见。 cpp:408 ]设备ID:1
I0108 12:35:04.898505 19872常见。 cpp:410 ]设备后端:OpenCL
I0108 12:35:04.899590 19872常见。 cpp:412 ]后端详细信息:英特尔(R)公司:OpenCL 1.2
I0108 12:35:04.901091 19872常见。 cpp:414 ]设备供应商:英特尔(R)公司
I0108 12:35:04.902592 19872常见。 cpp:416 ]名称:Intel(R)Core(TM)i5-4210U CPU @ 1.70GHz
I0108 12:35:04.904093 19872常见。 cpp:418 ]全局内存总计:8513761280I0108 12:35:04.905594 19872常见。 cpp:408 ]设备ID:2
I0108 12:35:04.907114 19872常见。 cpp:410 ]设备后端:OpenCL
I0108 12:35:04.908617 19872常见。 cpp:412 ]后端详细信息:英特尔(R)公司:OpenCL 2.1
I0108 12:35:04.910100 19872常见。 cpp:414 ]设备供应商:英特尔(R)公司
I0108 12:35:04.911598 19872常见。 cpp:416 ]名称:Intel(R)Core(TM)i5-4210U CPU @ 1.70GHz
I0108 12:35:04.913100 19872常见。 cpp:418 ]全局内存总计:8513761280
对我来说看起来不错,尽管您似乎同时安装了较新的OpenCL 2.1和较旧的OpenCL 1.2。 因为它仍然是Haswell CPU,所以我不确定英特尔是否已经为您的芯片安装了2.1 / 2.0驱动程序。 但是您应该尝试为您的GPU更新OpenCL SDK。
无论如何,如果要使用INTEL_SPATIAL,还需要在编译时启用它。 之后,它成为Intel GPU设备上的标准引擎。
您可以在这里执行以下操作:
https://github.com/BVLC/caffe/blob/opencl/scripts/build_win.cmd#L82
(scripts / build_win.cmd,第82行)
但是,英特尔空间内核尚未在Windows上进行全面测试。
我将尝试更新opencl sdk,我刚刚看到了您的提交,将尝试启用它,重新编译和测试它们并进行报告。
谢谢
好的,如果未将USE_INTEL_SPATIAL设置为USE_INTEL_SPATIAL = 1
Build_win.cmd引发以下错误。
C:\ Downloads \ caffe-opencl \ buildALL_BUILD.vcxproj“(默认目标)(1)->
C:\ Downloads \ caffe-opencl \ build \ src \ caffe \ caffe.vcxproj“(默认目标)(3)->
(ClCompile目标)-> C:\ Downloads \ caffe-opencl \ src \ caffe \ layers \ conv_layer_spatial.cpp(1453):错误C2572:'caffe :: ConvolutionLayerSpatial
C:\ Downloads \ caffe-opencl \ src \ caffe \ layers \ conv_layer_spatial.cpp(1458):错误C2572:'caffe :: ConvolutionLayerSpatial
好吧,我会调查一下。
@gongzg供参考。
大家好,
谢谢您的辛勤工作!
我设法在Windows和Intel HD 4400上使用USE_INTEL_SPATIAL = 0编译并运行caffe-opencl(可悲的是,咖啡时间比在2核i5-4210U上运行caffe-cpu慢约2倍,除非我做错了事)。 然而,随着USE_INTEL_SPATIAL = 1编译时,我也得到了同样的错误@atlury(我相信我有我的联想X240相同的硬件)。 我很好奇,看看是否使用INTEL_SPATIAL可以使在此GPU上运行caffe-opencl的速度比在CPU上更快。
@gfursin应该在很大程度上。 LibDNN期望GPU具有与Intel芯片不同的内存架构,因此目前无法最佳运行。
我们目前正在研究如何修复Intel内核,以便它们也可以在Windows上运行。
极好的! 非常感谢!
顺便说一句, @atlury ,在选择设备1和2时,“咖啡时间”在大约10秒后每次都崩溃了-您是否有相同的行为? 谢谢!
@gfursin不,我没有https://github.com/BVLC/caffe/pull/5165
此处发表了一篇英特尔论文(clcaffe)
http://www.slideshare.net/IntelSoftware/clcaffe-unleashing-the-power-of-intel-graphics-for-deep-learning-acceleration
在卷积层中使用INTEL SPATIAL支持以下基准测试(第28页GT3 GPU)。
Alexnet-290图片/第二
GoogleNet-77图片/第二
VGGA-55张图像/秒
Overfeat-91张图片/秒
我真的很想使用INTEL SPATIAL测试对象检测(不仅仅是分类),但是在任何地方都没有这样的示例。 我怀疑Caffe层是否已准备好? @ naibaf7吗?
@gongzg是否可以尝试上述测试的任何源代码?
进一步的LiDNN已与tiny-dnn一起使用,这很令人兴奋(尽管那里没有很多预训练的模型)。 我也想测试一下量化,看看opencl如何在其中提供帮助(8位,XNOR等)。 最终,在opencl中实时进行对象检测真是太棒了!!! 我希望@ naibaf7可以有所
@atlury下周,我
在启用该选项的情况下进行编译时,会自动使用Intel空间。
对于对象分割和检测,建议您阅读我的ISBI 2016论文和技术报告。 我在那里描述了SK-Net和U-Net架构,它们可以非常快速地完成此任务。 AlexNet可以转换为这样的SK-Net。
您需要使用LibDNN来降低SK / U-Net中的内存使用量。
哇,我刚刚读了您的论文……Strided内核的概念似乎非常令人印象深刻。 不会劫持这个线程,但是所有这些最终都需要在Windows下的Opencl中进行测试,但在此之前...。
这是仅python的实现吗? 没有C ++吗? 有没有经过预训练的模型? 这是仓库位于https://github.com/naibaf7/PyGreentea/tree/master/examples的地方吗? 是的,我要使用LibDNN ...
@atlury是的,原始接口是C ++,但是我们切换到了python。 但是,如果您想通过HDF5或自己的C ++接口提供数据,那么它们也将起作用。 只需使用我在python中提供的网络生成器代码即可帮助您为SK / U型网络创建正确的原型。
这是一份稍旧但完整的技术报告: https ://arxiv.org/abs/1509.03371,其中包括LibDNN编程之前的性能数据。
由于我们使用这些数据集的数据集(EM分类)以及我们的结果尚未发布,因此我们目前不提供经过预训练的模型。
@atlury一些基准数据是使用convnet-benchmarks进行测量的,您可以在平台上进行复制。 目前没有其他可公开分享的示例。
@atlury-非常感谢您的参考! 过去,我在Ubuntu上为Intel GPU安装和使用OpenCL时遇到很多麻烦(必须重新编译Linux内核),但是也许最新的驱动程序可以正常工作-需要检查一下。 顺便说一句,在#5165中,您具有带FPS测量值的网络摄像头+ Caffe分类的快照-请问您为此使用了哪个程序? 非常感谢!!!
@gfursin
请执行以下操作。
从以下位置安装opencl SDK和opencl运行时(不需要内核补丁)
https://software.intel.com/zh-CN/intel-opencl/download
https://software.intel.com/zh-CN/articles/opencl-drivers
下载https://github.com/BVLC/caffe/tree/opencl
(a)请在启用Viennacl,libdnn,intel spacespace,opencv等的情况下进行编译。 请创建一个共享库。 我不启用python,因为我不经常使用它。
VGG caffemodel,prototxt
下载
http://www.robots.ox.ac.uk/~vgg/software/very_deep/caffe/VGG_ILSVRC_16_layers.caffemodel
https://gist.githubusercontent.com/ksimonyan/211839e770f7b538e2d8/raw/0067c9b32f60362c74f4c445a080beed06b07eb3/VGG_ILSVRC_16_layers_deploy.prototxt
包含引擎:INTEL_SPATIAL,用于deploy.proto中的所有卷积层
获取synset_words.txt
只要确保input_dim为1(原始格式)而不是10(一次只给它一张图像)(具有3个通道)并且调整大小是自动的即可。
input_dim:1
input_dim:3
input_dim:224
input_dim:224
任何其他帮助都会在skype:atlury或gtalk:atlury上引起我的
请注意,这仅适用于linux, @ naibaf7仍在为Windows提供opencl支持
非常感谢@atlury提供的所有详细信息-非常感谢-我将尽快对其进行测试! 顺便说一句,我开始使用Collective Knowledge Framework在Windows(CPU和OpenCL模式)上自动安装Caffe,但是它仍然需要更多测试: https :
我正在等待同事的反馈,如果效果很好,我们将在几周内发布正式版本(可能也支持Android设备)...
大家好。 非常感谢您提供的图书馆以及上面的讨论。
我目前正在尝试构建最新的提交,该提交修复了使用USE_GREENTEA = 1,USE_LIBDNN = 1和USE_INTEL_SPATIAL = 1的Windows OpenCL构建,以及为ViennaCL构建的头文件。 我的build_win.cmd附在这里: build_win.txt
但是,在构建库的过程中,总是会出现以下错误:
ninja: build stopped: subcommand failed.
ERROR: Build failed
详细:
E:\caffe-opencl\src\caffe\layers\conv_layer_spatial.cpp(1514) : error C2572: 'ca
ffe::ConvolutionLayerSpatial<float>::swizzleWeights' : redefinition of default p
arameter : parameter 4
..\..\include\caffe/layers/conv_spatial_layer.hpp(164) : see declaration
of 'caffe::ConvolutionLayerSpatial<float>::swizzleWeights'
E:\caffe-opencl\src\caffe\layers\conv_layer_spatial.cpp(1519) : error C2572: 'ca
ffe::ConvolutionLayerSpatial<double>::swizzleWeights' : redefinition of default
parameter : parameter 4
如果此错误与上面提到的相同,则表示歉意。
也尝试使用USE_INTEL_SPATIAL = 0,但出现以下错误:
greentea_math_functions.cpp.obj : error LNK2019: unresolved external symbol clEn
queueUnmapMemObject referenced in function "void __cdecl caffe::greentea_gpu_asu
m<float>(int,int,struct _cl_mem * const,int,float *)" (??$greentea_gpu_asum@M<strong i="19">@ca</strong>
ffe@@YAXHHQEAU_cl_mem@@HPEAM@Z)
syncedmem.cpp.obj : error LNK2001: unresolved external symbol clEnqueueUnmapMemO
bject
benchmark.cpp.obj : error LNK2019: unresolved external symbol clWaitForEvents re
ferenced in function "public: virtual __cdecl caffe::Timer::~Timer(void)" (??1Ti
mer@caffe@@UEAA@XZ)
benchmark.cpp.obj : error LNK2019: unresolved external symbol clReleaseEvent ref
erenced in function "public: virtual __cdecl caffe::Timer::~Timer(void)" (??1Tim
er@caffe@@UEAA@XZ)
benchmark.cpp.obj : error LNK2019: unresolved external symbol clGetEventProfilin
gInfo referenced in function "public: virtual float __cdecl caffe::Timer::MicroS
econds(void)" (?MicroSeconds@Timer@caffe@@UEAAMXZ)
bin\caffe.dll : fatal error LNK1120: 34 unresolved externals
LINK failed. with 1120
请对此提出建议。 非常感激。
@ yshen92第一个错误是已知的,并且正在解决。
您收到的第二个错误通常表示您的OpenCL DLL无效,缺少一些符号。 您能否告诉我们您拥有哪些硬件以及已安装哪些OpenCL SDK?
此问题通常来自CUDA中来自nVidia的OpenCL SDK。 英特尔和AMD OpenCL SDK在1.2和2.0版本中应该可以使用。
@ naibaf7非常感谢您的回复。
我正在使用Intel HD Graphics 4000和NVIDIA NVS 5200M的Windows 8 Pro 64位Dell上构建该库。 并且刚刚安装了最新的Intel OpenCL SDK v6.3 。 看来OpenCL目录指向CUDA随附的目录。
因此,为了在构建中使用英特尔OpenCL SDK,我删除了CUDA,并在第46、48、52和53行对
IF("${ISWIN64}" STREQUAL "Win64")
FIND_LIBRARY(OPENCL_LIBRARIES OpenCL.lib "${OPENCL_LIB_DIR}" "$ENV{CUDA_LIB_PATH}" "$ENV{CUDA_PATH}/lib/x64" "$ENV{INTELOCLSDKROOT}/lib/x64")
ELSE("${ISWIN64}" STREQUAL "Win64")
FIND_LIBRARY(OPENCL_LIBRARIES OpenCL.lib "${OPENCL_LIB_DIR}" "$ENV{CUDA_LIB_PATH}" "$ENV{CUDA_PATH}/lib/Win32" "$ENV{INTELOCLSDKROOT}/lib/x86")
ENDIF("${ISWIN64}" STREQUAL "Win64")
FIND_PATH(OPENCL_INCLUDE_DIRS CL/cl.h PATHS "${_OPENCL_INC_CAND}" "$ENV{CUDA_INC_PATH}" "$ENV{CUDA_PATH}/include" "$ENV{INTELOCLSDKROOT}/include")
FIND_PATH(_OPENCL_CPP_INCLUDE_DIRS CL/cl.hpp PATHS "${_OPENCL_INC_CAND}" "$ENV{CUDA_INC_PATH}" "$ENV{CUDA_PATH}/include" "$ENV{INTELOCLSDKROOT}/include")
基本上,只是添加Intel SDK路径。 不知道我是否做对了。 由于没有这些,脚本无法找到SDK。
但是,我仍然遇到与上述相同的错误(在没有Intel Spatial的情况下进行构建)。
这是直接从脚本中获取的我的配置文件,供您参考。
ConfigInfo.txt
知道我做错了什么吗?
@atlury ,您好-我终于找到了一些时间来安装Ubuntu 17.04,并且无需任何内核重建即可直接安装Intel GPU驱动程序-谢谢! 我还安装了Caffe-OpenCL。
内核缓存仍然存在问题,因此启动成本非常高,但是@ naibaf7和@psyhtest试图对其进行改进。 暂时加快内核缓存速度的临时解决方案是使用环境变量VIENNACL_CACHE_PATH和CUDA_CACHE_DISABLE(请参阅https://github.com/dividiti/ck-caffe/issues/44#issuecomment-277205871)。
但是我有一个问题:我不明白如何为deploy.proto中的所有卷积层添加引擎:INTEL_SPATIAL? 我仍然是新手(我在尝试优化子库的编译器方面更多)。 您介意将样品发送给我-非常感谢!
另一个说明:如果有兴趣,我添加了支持,以通过CK框架(即,一键式重建)将Caffe与OpenCL,ViennaCL和USE_INTEL_SPATIAL组装在一起:
ck安装包:lib-caffe-bvlc-opencl-libdnn-clblast-universal --env.USE_INTEL_SPATIAL = ON
您可以在此处找到详细信息: https :
目前,我正在对两个平台上的ViennaCL缓存进行性能分析。 我怀疑在进行一些更改后它可能会令人满意地工作。
@gfursin : CUDA_CACHE_DISABLE
具有禁用NVIDIA自己的内核缓存机制的作用,因此只会减慢速度(当然是在NVIDIA驱动的平台上)。 但是,我需要它来进行缓存分析。
@psyhtest-感谢您的注释,因为我误解了您-我认为这是一个奇怪的错误和暂时性的解决方法;)...
@ naibaf7现在的Windows支持状态如何? 我想知道您是否也已开始为Windows进行英特尔空间引擎支持。
@gongzg为了测试它,我开始在英特尔笔记本电脑上设置Windows环境,但
@ naibaf7感谢您的更新。 然后,我将检查我们是否有一些内部资源来解决Windows上的内部空间引擎问题。
这个分支适用于Windows和AMD GPU吗?
是的。 Windows和Linux下的LibDNN完全支持AMD GPU。 全面的Intel GPU支持将于4月28日发布。
@ naibaf7
大卫,您能告诉我Windows的OpenCL支持已经支持python和Intel GPU吗? 我有几件事要测试和报告。
@hillarycanas-我也确认http://tinyurl.com/k3dhsc2 (搜索AMD)上查看性能结果。
我使用CK软件包“ lib-caffe-bvlc-opencl-libdnn-viennacl-universal”在Windows上编译和运行Caffe(请参阅https://github.com/dividiti/ck-caffe/wiki/Installation#AMD_GPU)。
很抱歉再次打扰。 在用户反馈之后,我们增加了对Windows的Caffe库和二进制文件的自动打包支持,并且现在可以通过最少的安装在不同的Windows计算机上安装Caffe CPU和OpenCL版本并对其进行基准测试:
$ pip install ck
$ ck pull repo --url=https://github.com/dividiti/ck-caffe
$ ck install package:lib-caffe-bvlc-master-cpu-bin-win
$ ck install package:lib-caffe-bvlc-opencl-libdnn-viennacl-bin-win
$ ck crowdbench caffe --env.CK_CAFFE_BATCH_SIZE=1
@gfursin
这很棒 :)
Caffe可以很容易地成为主流:)
你好,
我尝试运行位于以下位置的caffe官方OpenCL分支:
在Mac上具有以下硬件详细信息的https://github.com/BVLC/caffe/tree/opencl :
型号名称:MacBook Pro
型号标识符:MacBookPro12,1
处理器名称:Intel Core i5
处理器速度:2.7 GHz
处理器数量:1
核心总数:2
L2缓存(每个内核):256 KB
L3快取:3 MB
记忆体:8 GB
图形:Intel Iris Graphics 6100 1536 MB
我可以运行分类教程而不会遇到任何麻烦。 但是,当我切换到GPU模式并尝试运行net.forward()时,内核每次都会死亡。 这是否意味着OpenCL caffe的此分支不支持Intel集成显卡?
谢谢,
萨尔
@saliltambe OpenCL分支确实支持英特尔iGPU。 尽管大多数测试是在Linux系统上进行的,但它也应该在Mac上也可以运行。 运行net.forward()时遇到的具体错误是什么?
@gongzg非常感谢您的回复。 在jupyter Notebook中运行时,出现以下错误消息:“内核似乎已死。它将自动重新启动。” 我正在运行非常小的批处理大小,因此我认为内核不会因为内存不足而死亡。 而且,当我使用caffe.set_mode_gpu()切换到GPU模式时,没有出现错误。 我只在运行net.forward()时收到错误。
@saliltambe
我们需要更多信息:您是如何编译的(编译器版本,Caffe设置以及启用的BLAS库)?
您可以运行./build/test/test_all.testbin
还是运行make runtest
(如果使用了Makefile)?
@ naibaf7
嗨,Fabian,这是详细信息:
- 一般的:
-版本:1.0.0
-Git:未知
-系统:达尔文
-C ++编译器:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++
-释放CXX标志:-O3 -DNDEBUG -fPIC -Wall -std = c ++ 11 -DCMAKE_BUILD -Wno-sign-compare -Wno未初始化
-调试CXX标志:-g -fPIC -Wall -std = c ++ 11 -DCMAKE_BUILD -Wno-sign-compare -Wno-未初始化
src / caffe / CMakeLists.txt中的CMake警告(dev):
未设置策略CMP0022:INTERFACE_LINK_LIBRARIES定义了链接接口。 运行“ cmake --help-policy CMP0022”以获取策略详细信息。 使用cmake_policy命令设置策略并禁止显示此警告。
目标“ caffe”的INTERFACE_LINK_LIBRARIES属性与LINK_INTERFACE_LIBRARIES属性不同。
INTERFACE_LINK_LIBRARIES:
caffeproto; /usr/local/lib/libboost_system-mt.dylib; /usr/local/lib/libboost_thread-mt.dylib; /usr/local/lib/libboost_filesystem-mt.dylib; / usr / local / lib / lib / libglog。 dylib; /usr/local/lib/libgflags.dylib; $ <$
LINK_INTERFACE_LIBRARIES:
caffeproto; /usr/local/lib/libboost_system-mt.dylib; /usr/local/lib/libboost_thread-mt.dylib; /usr/local/lib/libboost_filesystem-mt.dylib; / usr / local / lib / lib / libglog。 dylib; /usr/local/lib/libgflags.dylib; /usr/local/lib/libprotobuf.dylib; /usr/local/lib/libhdf5_cpp.dylib; /usr/local/lib/libhdf5.dylib; / usr / lib /libpthread.dylib;/usr/lib/libz.dylib;/usr/lib/libdl.dylib;/usr/lib/libm.dylib;/usr/local/lib/libhdf5_hl_cpp.dylib;/usr/local/lib/ libhdf5_hl.dylib; /usr/local/lib/libhdf5_cpp.dylib; /usr/local/lib/libhdf5.dylib; /usr/lib/libpthread.dylib; /usr/lib/libz.dylib; / usr / lib / libdl .dylib; /usr/lib/libm.dylib; /usr/local/lib/libhdf5_hl_cpp.dylib; /usr/local/lib/libhdf5_hl.dylib; /usr/local/lib/liblmdb.dylib; / usr / local / lib / libleveldb.dylib; /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/System/Library/Frameworks/OpenCL.framework; opencv_core; opencv_highgui; opencv_imgproc;- lcblas; -framework加速; /usr/local/lib/libboost_python-mt.dylib
当我运行make runtest -j8时,出现以下错误:
stambe- osx:build stambe $ make runtest -j8
[1%]建立了目标测试
[2%]建立了目标caffeproto
[71%]制作了目标咖啡
[71%]构建CXX对象src / caffe / test / CMakeFiles / test.testbin.dir / test_deconvolution_layer.cpp.o
[72%]构建CXX对象src / caffe / test / CMakeFiles / test.testbin.dir / test_db.cpp.o
[73%]构建CXX对象src / caffe / test / CMakeFiles / test.testbin.dir / test_eltwise_layer.cpp.o
[73%]构建CXX对象src / caffe / test / CMakeFiles / test.testbin.dir / test_dummy_data_layer.cpp.o
[73%]构建CXX对象src / caffe / test / CMakeFiles / test.testbin.dir / test_embed_layer.cpp.o
[73%]构建CXX对象src / caffe / test / CMakeFiles / test.testbin.dir / test_euclidean_loss_layer.cpp.o
[73%]构建CXX对象src / caffe / test / CMakeFiles / test.testbin.dir / test_filter_layer.cpp.o
[75%]构建CXX对象src / caffe / test / CMakeFiles / test.testbin.dir / test_filler.cpp.o
/ Users / stambe / Programs / caffe-opencl / src / caffe / test / test_db。 cpp:23 :27:错误:使用未声明的
标识符“ EXAMPLES_SOURCE_DIR”
root_images_(string(EXAMPLES_SOURCE_DIR)+ string(“ images /”)){}
我的安装有问题吗? 请注意,我在CPU上运行caffe并没有遇到麻烦。
谢谢,
萨尔
多亏了给定的指针和线索,我成功地在具有以下规格的两台单独的计算机上成功构建并运行了Caffe OpenCL:
(一种)
我可以在(A)和(B)上顺利运行AlexNet,ResNet50和ResNet152。 我唯一的问题是(A)上ResNets上的批处理-预测的类永远是不正确的。 由于此问题仅在(A)中发生,并且仅在ResNets的批处理过程中出现,因此我认为根本原因可能是来自LibDNN,更具体地说是Intel的空间内核。 我可以禁用Intel引擎,但是它无法达到我现在过分满意的速度。
还有更多关于这个的指示和线索吗? 提前致谢。
@gongzg关于为什么空间内核在批处理中可能会出现问题的任何指示?
@ naibaf7当前的空间卷积引擎中存在一些错误,我还没有时间将这些PR提交给上游OpenCL分支。 部分原因是我目前所有的工作都取决于FP16 PR,因此我想等待FP16修补程序被审查和合并。 现在,我想推荐@jstumpin尝试github.com/01org/caffe的推理优化分支,以检查问题是否消失。 相应的Wiki页面位于Intel OpenCL Caffe Wiki
@jstumpin最好将层融合应用于resnet,您将看到显着的性能提升。
周围都有很棒的指针(还有新闻)。 之前听过有关github.com/01org/caffe的信息,但由于我不得不进行Windows部署,所以并不太热衷。 我得到了[(A)中的给定规格]:
以下内容被剥夺了Intel空间:
为了完整起见,我还针对OpenCV 3.3.0和Caffe的仅CPU(对于Intel MKL,它们都是)进行了基准测试。 可以说,无论网络拓扑如何,仅CPU都是不行的。 随着GPU内存有限,随着网络复杂度与系统(B)趋于公平,我减小了批量大小。 而且,除了那些实验的批量大小,我没有看到任何收益。 顺便说一句,(B)实际上配备了NVIDIA Quadro K4200,而不是最初宣传的Geforce(无论如何,因为我们将(B)部署为目标,所以这无关紧要)。
去做:
[1]从推理优化分支重建Caffe
[2]应用图层融合并重新评估性能
谢谢!
@jstumpin ,inference-optimzie分支也支持Windows,在克隆代码时,请查看自述文件以获取在Windows上构建的说明。 如果发现任何问题,只需在那打开一张票。
@gongzg是正在审查和重构FP16。
尽管标签正确,但预测值为何超过1? 当在具有或不具有Intel空间的情况下使用OpenCL时,这都是正确的(仅CPU是可以的)。 softmax的输出不应该是概率性的吗?
我正在尝试在我的Intel NUC上使用最新的OpenCL分支。 硬件是
我在与Caffe文件夹平行的文件夹中克隆了最新的viennacl。 然后,我运行scripts/build_win.cmd
而不对其进行修改(因为我没有看到对其进行任何修改的需要)。 但是会得到一个奇怪的错误,在上面的所有讨论中都找不到。 请在下面的输出中查看。 在去那里之前,还有一个信息是我成功建立了windows
分支。
这是build_win.cmd
的输出。 非常感谢有人可以帮我解决这个问题!
===============================
c:\ DL \ caffe \ scripts> build_win.cmd
系统找不到指定的驱动器。
系统找不到指定的驱动器。
INFO:================================================== ============
信息:摘要:
INFO:================================================== ============
信息:MSVC_VERSION = 14
信息:WITH_NINJA = 0
INFO:CMAKE_GENERATOR =“ Visual Studio 14 2015 Win64”
信息:CPU_ONLY = 0
信息:USE_CUDA = 0
INFO:CUDA_ARCH_NAME =自动
信息:USE_CUDNN = 0
信息:USE_GREENTEA = 1
信息:USE_LIBDNN = 1
信息:USE_OPENMP = 0
INFO:USE_INDEX64 =
信息:USE_INTEL_SPATIAL = 0
信息:DISABLE_DEVICE_HOST_UNIFIED_MEMORY = 0
INFO:CMAKE_CONFIG =发布
信息:USE_NCCL = 0
信息:CMAKE_BUILD_SHARED_LIBS = 0
信息:PYTHON_VERSION = 2
信息:BUILD_PYTHON = 1
信息:BUILD_PYTHON_LAYER = 1
信息:BUILD_MATLAB = 0
INFO:PYTHON_EXE =“ python”
信息:RUN_TESTS = 0
信息:RUN_LINT = 0
信息:RUN_INSTALL = 0
INFO:================================================== ============
-选择Windows SDK版本以Windows 10.0.15063为目标。
-C编译器标识为MSVC 19.0.24215.1
-CXX编译器标识为MSVC 19.0.24215.1
-检查工作的C编译器:C:/ Program Files(x86)/ Microsoft Visual Studio 14.0 / VC / bin / x86_amd64 / cl.exe
-检查工作的C编译器:C:/ Program Files(x86)/ Microsoft Visual Studio 14.0 / VC / bin / x86_amd64 / cl.exe-工作正常
-检测C编译器ABI信息
-检测C编译器ABI信息-完成
-检查工作的CXX编译器:C:/ Program Files(x86)/ Microsoft Visual Studio 14.0 / VC / bin / x86_amd64 / cl.exe
-检查工作的CXX编译器:C:/ Program Files(x86)/ Microsoft Visual Studio 14.0 / VC / bin / x86_amd64 / cl.exe-工作正常
-检测CXX编译器ABI信息
-检测CXX编译器ABI信息-完成
-检测CXX编译功能
-检测CXX编译功能-完成
-找到PythonInterp:C:/Users/NUC-Sonavex/AppData/Local/Programs/Python/Python35/python.exe(找到合适的版本“ 3.5.3”,最低要求为“ 2.7”)
-寻找pthread.h
-寻找pthread.h-找不到
-找到的线程:TRUE
-Boost版本:1.61.0
-找到了以下Boost库:
- 系统
- 线
- 文件系统
-计时
- 约会时间
-原子的
-找到的GFlags:C:/Users/NUC-Sonavex/.caffe/dependencies/libraries_v140_x64_py35_1.1.0/libraries/include
-找到的gflags(包括:C:/Users/NUC-Sonavex/.caffe/dependencies/libraries_v140_x64_py35_1.1.0/libraries/include,库:gflags_shared)
-找到的Glog:C:/Users/NUC-Sonavex/.caffe/dependencies/libraries_v140_x64_py35_1.1.0/libraries/include
-找到的glog(包括:C:/Users/NUC-Sonavex/.caffe/dependencies/libraries_v140_x64_py35_1.1.0/libraries/include,库:glog)
-找到Protobuf:C:/Users/NUC-Sonavex/.caffe/dependencies/libraries_v140_x64_py35_1.1.0/libraries/bin/protoc.exe(找到的版本为“ 3.1.0”)
-找到PROTOBUF编译器:C:/Users/NUC-Sonavex/.caffe/dependencies/libraries_v140_x64_py35_1.1.0/libraries/bin/protoc.exe
-找到LMDB:C:/Users/NUC-Sonavex/.caffe/dependencies/libraries_v140_x64_py35_1.1.0/libraries/include
-找到lmdb(包括:C:/Users/NUC-Sonavex/.caffe/dependencies/libraries_v140_x64_py35_1.1.0/libraries/include,库:lmdb)
-找到的LevelDB:C:/Users/NUC-Sonavex/.caffe/dependencies/libraries_v140_x64_py35_1.1.0/libraries/include
-找到了LevelDB(包括:C:/Users/NUC-Sonavex/.caffe/dependencies/libraries_v140_x64_py35_1.1.0/libraries/include,库:leveldb)
-找到ZLIB:优化; C:/Users/NUC-Sonavex/.caffe/dependencies/libraries_v140_x64_py35_1.1.0/libraries/lib/caffezlib.lib;调试; C:/Users/NUC-Sonavex/.caffe/dependencies/libraries_v140_x64_py35_1 .1.0 / libraries / lib / caffezlibd.lib(找到的版本为“ 1.2.8”)
-发现Snappy:C:/Users/NUC-Sonavex/.caffe/dependencies/libraries_v140_x64_py35_1.1.0/libraries/include
-找到Snappy(包括:C:/Users/NUC-Sonavex/.caffe/dependencies/libraries_v140_x64_py35_1.1.0/libraries/include,库:snappy_static;已优化; C:/Users/NUC-Sonavex/.caffe/dependencies/libraries_v140_x64_py35_1 .1.0 / libraries / lib / caffezlib.lib; debug; C:/Users/NUC-Sonavex/.caffe/dependencies/libraries_v140_x64_py35_1.1.0/libraries/lib/caffezlibd.lib)
--CUDA已禁用。 没有它的建筑...
-发现的ViennaCL包括:C:/ DL / viennacl
CMake错误:此项目中使用了以下变量,但是将它们设置为NOTFOUND。
请设置它们或确保在CMake文件中对它们进行了正确设置和测试:
OPENCL_INCLUDE_DIRS
用作目录C:/ DL / caffe / scripts / build / CMakeFiles / CMakeTmp中的包含目录
_OPENCL_64_LIBRARIES
由目录C:/ DL / caffe / scripts / build / CMakeFiles / CMakeTmp中的目标“ cmTC_7259e”链接
在cmake / Modules / FindOpenCL处的CMake错误。 cmake:106 (TRY_COMPILE):
无法配置测试项目构建系统。
呼叫堆栈(最近的呼叫优先):
cmake /模块/ FindViennaCL。 cmake:37 (find_package)
cmake /依赖关系。 cmake:116 (find_package)
CMakeLists。 txt:127 (包括)
-配置不完整,发生错误!
另请参见“ C:/DL/caffe/scripts/build/CMakeFiles/CMakeOutput.log”。
另请参阅“ C:/DL/caffe/scripts/build/CMakeFiles/CMakeError.log”。
错误:配置失败
@ bxk-sonavex就像我上面提到的那样,某些特定于Intel的补丁尚未经过审查和合并,因此请尝试github.com/01org/caffe inference-optimize分支。 您可以参考以下Wiki,以获取有关Intel平台的详细说明:
https://github.com/01org/caffe/wiki/clCaffe
@gongzg鉴于Intel OpenCL实施的某些部分在Windows上
@ naibaf7这是否意味着该分支
@gongzg您建议使用clCaffe与Intel iGPU在Windows上一起工作吗?
@ bxk-sonavex可以使用,但不适用于Intel卷积,因此性能不是最佳。
目前,我认为您找不到它,但是我正在研究一个解决方案。
您的问题更多与缺少OpenCL标头有关。 您安装了什么OpenCL? 英特尔SDK?
@ naibaf7是的,我正在使用英特尔SDK v6.3。 我在这里找到了解决方法(https://github.com/BVLC/caffe/issues/5575),它对我有用。 现在,我编译了opencl分支。 此外,我使用examples文件夹中提供的mnist示例测试了我的构建。 使用CPU时(通过修改lenet_solver.prototxt),train_lenet可以正常运行,最终训练精度为0.9902,这与预期的一样。
I1107 13:53:43.139747 3512求解器。 cpp:421 ]测试净输出#0:精度= 0.9902
I1107 13:53:43.139747 3512求解器。 cpp:421 ]测试净输出#1:损耗= 0.0277191(* 1 = 0.0277191损耗)
但是,使用GPU时,出现“ caffe.exe停止工作”错误消息窗口,准确性仅为0.1009。
I1107 14:11:15.651798 7872求解器 cpp:421 ]测试净输出#0:精度= 0.1009
I1107 14:11:15.651798 7872求解器 cpp:421 ]测试净输出#1:损耗= 87.31(* 1 = 87.31损耗)
你能给我一些线索吗? 怎么解决呢? 还是@gongzg提到的东西?
鉴于Intel OpenCL实施的某些部分在Windows上不起作用,这可能无济于事。 但是,正如您所知:)
我从默认build_win.cmd
是
set WITH_NINJA=1
set CMAKE_BUILD_SHARED_LIBS=1
set PYTHON_VERSION=3
set RUN_INSTALL=1
我应该设置USE_INTEL_SPATIAL
吗?
设置USE_INTEL_SPATIAL = 1时,无法编译分支。 错误是
ninja:构建已停止:子命令失败。
@ naibaf7 01org版本现在在Windows上可以正常使用。 我还忙于其他事情,因此我没有足够的时间向此OpenCL分支提交所有修补程序。 当我在不久的将来有时间时,会做到这一点。 @ bxk-sonavex您可以在Wiki页面之后尝试01org版本,如果遇到任何问题,请告诉我。
@gongzg谢谢! 按照https://github.com/01org/caffe/wiki/clCaffe#windows -support-for-intel-gen-platform上的说明,我收到了错误消息:
fatal error C1083: Cannot open include file: 'caffe/proto/caffe.pb.h': No such file or directory
供参考:
https://github.com/ptillet/isaac.git仅与NVIDIA硬件兼容,甚至无法编译,因此我克隆了https://github.com/intel/isaac。
更新:
通过手动生成文件
build\libraries\bin\protoc.exe src\caffe\proto\caffe.proto --cpp_out=.\
据说文件应该是自动生成的。
然后我得到以下错误:
"C:\DL\clCaffe\build\src\caffe\test\runtest.vcxproj" (default target) (1) ->
(CustomBuild target) ->
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets(171,5): error MSB6006: "cmd.exe" exited with code -1073741515. [C:\DL\clCaffe\build\src\caffe\test\runtest.vc
xproj]
2345 Warning(s)
1 Error(s)
Time Elapsed 00:03:55.08
ERROR: Tests failed
已禁用RUN_TESTS
并进行第三次建设...
@ bxk-sonavex似乎它已经成功构建了。 您需要将dll文件复制到可执行文件的目录中:
”
请注意,在构建成功完成之后,在尝试运行应用程序之前,需要将dl.dll(dlfcn)和isaac.dll(isaac)复制到同一目录或放入系统目录。
”
@gongzg在系统路径中添加了两个dll的文件夹,而不是将它们复制到测试文件夹。 现在又出现了一个错误,看起来很严重...
"C:\DL\clCaffe\build\src\caffe\test\runtest.vcxproj" (default target) (1) ->
(CustomBuild target) ->
CUSTOMBUILD : Fatal error : Intel iGPU device found but doesn't support cl_intel_subgroups_short. [C:\DL\clCaffe\build\src\caffe\test\runtest.vcxproj]
2333 Warning(s)
1 Error(s)
Time Elapsed 00:05:41.97
ERROR: Tests failed
我正在使用Intel Iris Plus Graphics 650和intel_sdk_for_opencl_setup_6.3.0.1904。 有什么想法和解决方案吗?
@ bxk-sonavex您需要将Intel图形驱动程序更新为最新版本。
@gongzg谢谢,那解决了编译错误。 在运行测试时,我遇到很多错误,例如(可能无法捕获所有错误)。
C:\DL\clCaffe\src\caffe\test\test_argmax_layer.cpp(132): error : Expected: (bottom_data[i * dim + j]) <= (max_val), actual: -0.402832 vs -0
C:\DL\clCaffe\src\caffe\test\test_convolution_layer_spatial.cpp(735): error : The difference between top_data[i] and ref_top_data[i] is 1.8
077674604790599e+28, which exceeds delta, where [C:\DL\clCaffe\build\src\caffe\test\runtest.vcxproj]
top_data[i] evaluates to -1.8077674604790599e+28,
ref_top_data[i] evaluates to 7.1034564971923828, and
delta evaluates to 9.9999997473787516e-05.
C:\DL\clCaffe\src\caffe\test\test_convolution_layer_spatial.cpp(735): error : The difference between top_data[i] and ref_top_data[i] is 1
.803808228419822e+28, which exceeds delta, where [C:\DL\clCaffe\build\src\caffe\test\runtest.vcxproj]
2418 Warning(s)
17672 Error(s)
Time Elapsed 00:10:25.65
ERROR: Tests failed
是否应该考虑这些错误?
无论如何,我正在使用mnist示例测试构建。 它非常慢,甚至比使用CPU的原始Caffe还要慢得多。 并且有一些警告(重复了几次)
warning: Linking two modules of different data layouts: '' is 'e-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024' whereas '<origin>' is 'e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v16:16:16-v24:32:32-v32:32:32-v48:64:64-v64:64:64-v96:128:128-v128:128:128-v192:256:256-v256:256:256-v512:512:512-v1024:1024:1024-n8:16:32:64'
warning: Linking two modules of different target triples: ' is 'spir64' whereas '<origin>' is 'vISA_64'
任何想法?
@ bxk-sonavex
您为什么暂时不在Linux中运行caffe? 我猜开发人员将重点更多地放在使FP16,INT8代码等平稳运行上,尤其是naibaf7(大卫)。
适当的Windows支持将最终出现。
虽然只是一个建议。
@atlury我很乐意! 但是我们的系统是Windows 10 + Intel Iris ...对Windows支持何时发布有任何想法吗? 或者,其他任何DL平台都可以工作(使用GPU)?
@gongzg只想更新您的演出
CPU:7分33秒,精度= 0.9914
GPU:29分34秒,准确度= 0.8406
想知道Linux上的性能如何。 然后,我可以对使用Intel GPU(OpenCL)与CPU的速度有一个基本的了解。 谢谢!!
@ bxk-sonavex
Ben您启用了opencl内核吗? 您尝试使用INTEL_SPATIAL吗?
@atlury您是什么意思“启用opencl内核”? 是的,我按照此处的说明进行操作(https://github.com/01org/caffe/wiki/clCaffe#how-to-build),并在命令行中“设置了USE_INTEL_SPATIAL = 1”(未直接修改build_win.cmd文件) )。
更新:
INFO:================================================== ============
信息:摘要:
INFO:================================================== ============
信息:MSVC_VERSION = 14
信息:WITH_NINJA = 0
INFO:CMAKE_GENERATOR =“ Visual Studio 14 2015 Win64”
信息:CPU_ONLY = 0
信息:USE_CUDA = 0
信息:USE_CUDNN = 0
信息:USE_GREENTEA = 1
信息:USE_LIBDNN = 1
信息:USE_OPENMP = 0
INFO:USE_INDEX64 =
信息:USE_INTEL_SPATIAL = 1
信息:USE_ISAAC = 1
INFO:CMAKE_CONFIG =发布
信息:USE_NCCL = 0
信息:CMAKE_BUILD_SHARED_LIBS = 0
信息:PYTHON_VERSION = 2
信息:BUILD_PYTHON = 0
信息:BUILD_PYTHON_LAYER = 0
信息:BUILD_MATLAB = 0
INFO:PYTHON_EXE =“ python”
信息:RUN_TESTS = 1
信息:RUN_LINT = 0
信息:RUN_INSTALL = 1
INFO:================================================== ============
@ bxk-sonavex
Ben,您需要在deploy.proto中包括所有卷积层的INTEL_SPATIAL。 我已经在linux中对它进行了实时测试。
https://github.com/BVLC/caffe/pull/5165
“我已经在Intel电视棒,使用Intel Spatial内核和19层vgg模型的网络摄像头上进行了测试。我能够获得实时分类,所有功率都在3.5瓦以下”
Windows也应该工作。
@ bxk-sonavex有关01org版本的问题,请在此处打开一个问题。 在那些梯度测试用例上,由于FP16精度问题而导致一些测试失败并不重要。 性能极慢,这可能是由于自动调整引起的。 再次运行它应该更快。 您可以首先尝试使用build / tools / caffe来衡量AlexNet的前向性能。
顺便说一句,我刚刚注意到@CNugteren几天前发布了他的自动调整的CLBlast库的新1.2.0版本。 我检查了一下,它似乎可以在装有旧Intel 4400 GPU的Windows 10 Lenovo笔记本电脑上(以及在Linux上)与Caffe一起使用-因此,它可以作为Caffe的一个不错的补充,因为以前的CLBlast版本在Windows上是段错误的!
如果您有兴趣,您可以按照以下方式在SqueezeDet上使用LibDNN和CLBlast检查Caffe的速度(在Windows和Linux上都是相同的过程):
$ pip install ck
$ ck pull repo --url=https://github.com/dividiti/ck-caffe
$ ck install package:lib-caffe-bvlc-opencl-libdnn-clblast-universal-20171015
由于CK会尝试检测您的环境和编译器,因此需要一些时间,
然后将在您的计算机上重建所有必要的依赖关系。
之后,您可以安装SqueezeDet并运行内部时间:
$ ck install package:caffemodel-deepscale-squeezenet-1.1
$ ck run program:caffe --cmd_key=time_gpu
由于内核编译和缓存,第一次运行可能会有点慢,因此第二次运行会快得多!
您还可以对图像分类进行基准测试:
$ ck pull repo:ctuning-datasets-min
$ ck run program:caffe --cmd_key=classify
与Intel无关,只是要注意的是,在使用Android GCC 4.9.x(适用于std类的“ to_string”),使用CLBlast 1.2.0 for Android ARM64编译Caffe时,似乎存在一个小错误:
$ ck install package:lib-caffe-bvlc-opencl-libdnn-clblast-universal-20171015 --target_os=android21-arm64 --env.DISABLE_DEVICE_HOST_UNIFIED_MEMORY=ON
$ ck compile program:caffe-time-opencl --target_os=android21-arm64
$ ck run program:caffe-time-opencl --target_os=android21-arm64
由于CLBlast 1.1.0在Android上可以正常运行,因此修复它会很不错。在这种情况下,它将可以在所有平台上与Caffe一起使用。
希望对您有所帮助,祝您周末愉快!
使用Android GCC 4.9.x(适用于Android ARM64的CLBlast 1.2.0 for Android ARM64)编译Caffe时,似乎存在一个小错误(在std类中未找到“ to_string”):
不确定您是说这是CLBlast还是Caffe中的错误? 无论如何,CLBlast都在特殊的Android标头中实现了此
@CNugteren-我刚刚检查过,问题不在CLBlast中。 我只是忘记了CK中的一个补丁,该补丁正在修复Android的LibDNN(所以是我的错)。 我已经添加了它(https://github.com/dividiti/ck-caffe/blob/master/package/lib-caffe-bvlc-opencl-clblast-universal/patch.android/android.fgg.patch3),现在可以使用CLBlast和libDNN编译Caffe。 我在三星S7上检查了分类和基准测试示例-效果很好。 非常抱歉此错误警报,并感谢您发布新的CLBlast-我现在可以在Linux,Windows和Android上的Caffe中使用它。
@gfursin这是使用CPU或GPU(OpenCL)的版本吗? 我以为这是说OpenCL尚未在Windows上运行(或至少在Intel iGPU上尚不可用)。 您在Windows上使用什么?
@ bxk-sonavex
Ben很抱歉延迟回复。 我不在。
引用@ naibaf7
“可以在网络原型文件中选择/覆盖卷积方法(“引擎”)”
因此,在所有卷积层规范中添加条目“ engine:INTEL_SPATIAL”。
以AlexNet为例,编辑$ CAFFE_ROOT / models / bvlc_alexnet / train_val.prototxt文件,并添加以下行以使conv1层使用空间卷积进行计算。 同样更改其他图层
layer {
name: "conv1"
type: "Convolution"
bottom: "data"
top: "conv1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 96
kernel_size: 11
stride: 4
engine: INTEL_SPATIAL <-------------------------- this line!
weight_filler {
type: "gaussian"
std: 0.01
}
bias_filler {
type: "constant"
value: 0
}
}
}
编辑:不好意思,我看到您打开了另一个线程,并且似乎有了更多的进步。
@ bxk-sonavex-我在带有旧Intel 4400 GPU且没有Intel Spatial的Windows上使用Caffe OpenCL版本(带有libDNN和CLBlast)-似乎工作正常,但可能不是最佳选择。 这是Caffe设备的列表(“ ck运行程序:caffe --cmd_key = query_gpu_opencl”):
output_caffe_opencl_devices.txt
以下是具有以上Caffe OpenCL版本和GoogleNet的Windows上图像分类的输出:
output_caffe_opencl_image_classification.txt
在此阶段,我主要检查推理/对象检测(我们正在尝试在所有可能的平台上统一DNN的安装,基准测试和优化),因此我并没有真正强调带有OpenCL的Windows上的其他Caffe功能和模型...
我还尝试使用Intel Spatial ON(“ ck install package:lib-caffe-bvlc-opencl-libdnn-clblast-universal --env.USE_INTEL_SPATIAL = ON”编译Caffe OpenCL),发现与以前相同的2个构建错误@atlury早些时候报道):
output_caffe_build_error_with_intel_spatial.txt
是否也有适用于Linux(Ubuntu 16.04)的构建脚本? 尝试编译时出现错误
@rachithayp请仔细按照说明进行操作,即使在18.0x系列上也可以使用。 我们已经测试过了。
嗨@rachithayp 。 请注意,您可能需要修补内核才能使Intel OpenCL在Ubuntu 16.04上工作: https :
几周前,我设法在Ubuntu 18.04(带有Intel GPU的Lenovo T470p笔记本电脑)上构建了Caffe的OpenCL分支,而没有修补内核,并且几周前通过CK使用了最新的Intel OpenCL:
$ sudo pip install ck
$ ck pull repo --url=https://github.com/ctuning/ck-caffe
$ ck install package:lib-caffe-bvlc-opencl-viennacl-universal --env.USE_INTEL_SPATIAL=ON --env.CAFFE_BUILD_PYTHON=ON
CK将尝试检测可用的编译器,OpenCL库和其他依赖项,并将为Caffe调用cmake。 如果构建成功,则可以使用CK虚拟环境检查安装:
$ ck show env
$ ck virtual env --tags=lib,caffe
> python
import caffe
您还可以尝试如下示例图像分类:
$ ck compile program:caffe-classification-opencl --speed
$ ck run program:caffe-classification-opencl
祝你好运。
cc @ ens-lg4和@psyhtest ...
@atlury我可以使用以下cmake进行编译:
cmake .. -DUSE_CUDA = OFF -DBUILD_docs = 0 -DOPENCL_LIBRARIES = <> -DOPENCL_INCLUDE_DIRS = <>
但是尝试使用INTEL_SPATIAL_ON进行编译会产生以下错误:
cmake .. -DUSE_GREENTEA = ON -DUSE_CUDA = OFF -DUSE_INTEL_SPATIAL = ON -DBUILD_docs = 0 -DOPENCL_LIBRARIES = <> -DOPENCL_INCLUDE_DIRS = <>
/ home / intel / Documents / caffe_src / opencl_caffe / src / caffe / libdnn / libdnn_conv_spatial。 cpp:19 :1:错误:“ LibDNNConvSpatial”未命名类型
LibDNNConvSpatial
^
/ home / intel / Documents / caffe_src / opencl_caffe / src / caffe / libdnn / libdnn_conv_spatial。 cpp:117 :25:错误:'<'标记之前的预期初始化程序
字符串LibDNNConvSpatial
知道有什么问题吗? 另外,opencl分支上没有include / caffe / greentea文件夹,因此我从“ https://github.com/01org/caffe ”复制了它。
@rachithayp
您可以尝试以下章节中的说明吗? 它是我们即将出版的有关opencl caffe的书中安装章节的粗略部分。 谢谢@ naibaf7
希望它能对您有所帮助,并为您的Opencl Caffe事业提供帮助。
@ bxk-sonavex-我在带有旧Intel 4400 GPU且没有Intel Spatial的Windows上使用Caffe OpenCL版本(带有libDNN和CLBlast)-似乎工作正常,但可能不是最佳选择。 这是Caffe设备的列表(“ ck运行程序:caffe --cmd_key = query_gpu_opencl”):
output_caffe_opencl_devices.txt以下是具有以上Caffe OpenCL版本和GoogleNet的Windows上图像分类的输出:
output_caffe_opencl_image_classification.txt在此阶段,我主要检查推理/对象检测(我们正在尝试在所有可能的平台上统一DNN的安装,基准测试和优化),因此我并没有真正强调带有OpenCL的Windows上的其他Caffe功能和模型...
我还尝试使用Intel Spatial ON(“ ck install package:lib-caffe-bvlc-opencl-libdnn-clblast-universal --env.USE_INTEL_SPATIAL = ON”编译Caffe OpenCL),发现与以前相同的2个构建错误@atlury早些时候报道):
output_caffe_build_error_with_intel_spatial.txt
您的HD 4400与caffe一起运行的速度是否比CPU快?
我编译了clCaffe,并在HD 5500上运行它,但是它比CPU(i3 5005U)慢5倍
我不知道为什么
最有用的评论
@atlury
自述文件中有一个
Windows
部分,指导如何在Windows上进行编译和安装。该描述中唯一缺少的步骤是下载ViennaCL-DEV:
https://github.com/viennacl/viennacl-dev
可以将其放在CMake可以找到它的任何路径中,例如,将Caffe克隆到的文件夹旁边。
生成指令与Linux指令不同,因为它是一个自动处理CMake配置和下载依赖项的脚本。
通常,无需担心Windows上的配置,因为它的设计宗旨是工作正常。 但是,我将为您提供一个简短的解释:
(a)不,不。 按照自述文件中的说明使用
scripts/build_win.cmd
。(b)是的,无论您如何编译,始终需要CPU BLAS。 但是
build_win.cmd
将为您解决这个问题,它的默认配置是使用OpenBLAS。(c)是的,需要ViennaCL,从此处克隆: https :
(d) LibDNN是OpenCL GPU的默认卷积引擎,是cuDNN的替代品。
默认情况下,还有其他可用的用于Intel GPU的Intel内核已启用。
(e) ISAAC,clBLAS和CLBlast是严格可选的。 如果要使用它们,则需要在Windows上分别编译它们,并将它们添加到依赖项中。 我不保证或不支持任何这些库的编译,它们由相应的项目维护者支持。
(f)不,在OpenCL分支上,这是不正确的。 此处的默认值为USE_GREENTEA = ON,USE_CUDA = OFF,CPU_ONLY = OFF。
圣诞节假期后,我将更新自述文件。 不幸的是,我现在没有时间进行详细的逐步介绍。
CC: @willyd