Caffe: 适用于Intel GPU的正确Caffe opencl分支安装说明

创建于 2016-12-16  ·  87评论  ·  资料来源: BVLC/caffe

很抱歉,我必须打开它,但是在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模式下不起作用?

请更新并提供分步说明
谢谢

OpenCL question windows

最有用的评论

@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

所有87条评论

@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空间内核已合并到此分支中。

严格要求:

  • ViennaCL,OpenCL和正常的Caffe要求,例如Gflags,HDF5等。
  • 您可以使用CUDA,AMD APP SDK或Intel OpenCL SDK来获得OpenCL SDK。 对于Windows和Linux都是如此。 Mac OS X应该提供自己的OpenCL实施。

可选要求:

  • clBLAS(来自AMD)
  • CLBlast(来自@cnugteren)
  • ISAAC
  • 人工神经网络
  • CUDA

谢谢@ 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 ]全局内存总计:1708759450

I0108 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 ]全局内存总计:8513761280

I0108 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:: swizzleWeights':重新定义默认参数:参数1 [C:\ Downloads \ caffe-opencl \ build \ src \ caffe \ caffe.vcxproj]

C:\ Downloads \ caffe-opencl \ src \ caffe \ layers \ conv_layer_spatial.cpp(1458):错误C2572:'caffe :: ConvolutionLayerSpatial:: swizzleWeights':重新定义默认参数:参数1 [C:\ Downloads \ caffe-opencl \ build \ src \ caffe \ caffe.vcxproj]

好吧,我会调查一下。
@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

请执行以下操作。

  1. 使用http://cdimage.ubuntu.com/daily-live/current/

  2. 从以下位置安装opencl SDK和opencl运行时(不需要内核补丁)
    https://software.intel.com/zh-CN/intel-opencl/download
    https://software.intel.com/zh-CN/articles/opencl-drivers

  3. 下载https://github.com/BVLC/caffe/tree/opencl
    (a)请在启用Viennacl,libdnn,intel spacespace,opencv等的情况下进行编译。 请创建一个共享库。 我不启用python,因为我不经常使用它。

  4. 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

  1. 使用此程序进行测试
    https://gist.github.com/atlury/f65fd41eb805cc5f77f666a59e71eae2

只要确保input_dim为1(原始格式)而不是10(一次只给它一张图像)(具有3个通道)并且调整大小是自动的即可。
input_dim:1
input_dim:3
input_dim:224
input_dim:224

任何其他帮助都会在skype:atlurygtalk: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缓存进行性能分析。 我怀疑在进行一些更改后它可能会令人满意地工作。

@gfursinCUDA_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-未初始化

  • -构建类型:发布
  • -BUILD_SHARED_LIBS:开
  • -BUILD_python:开
  • -BUILD_matlab:关闭
  • -BUILD_docs:开
  • -CPU_ONLY:关闭
  • -USE_OPENCV:开
  • -USE_FFT:关闭
  • -USE_LEVELDB:开
  • -USE_LMDB:开
  • -USE_NCCL:关闭
  • -ALLOW_LMDB_NOLOCK:关闭
  • -USE_HDF5:打开



    • -依赖关系:

  • -BLAS:是(vecLib)
  • -Boost:是(1.64版)
  • -glog:是
  • -gflags:是
  • -protobuf:是(3.3.0版)
  • -lmdb:是(版本0.9.19)
  • -LevelDB:是(1.20版)
  • -Snappy:是(1.1.4版)
  • -OpenCV:是(2.4.13.2版)
  • -CUDA:否



    • - Python:

  • -口译员:/Users/stambe/anaconda/bin/python2.7(版本2.7.13)
  • -库:/Users/stambe/anaconda/lib/libpython2.7.dylib(版本2.7.13)
  • -NumPy:/Users/stambe/anaconda/lib/python2.7/site-packages/numpy/core/include(1.12.1版)

  • -文献:
  • -氧气:否
  • -config_file:

  • - 安装:
  • -安装路径:/ Users / stambe / Programs / caffe-opencl / build / install

  • -配置完成

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; $ <$>:/ usr / local / lib / libprotobuf.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 Accelerate; / usr / local / lib / libboost_python-mt.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:

(一种)

  • 处理器:Intel i7-7567U 3.5GHz
  • iGPU:Intel Iris Plus 650
    (B)
  • 处理器:Intel i7-4930K 3.4GHz
  • GPU:NVIDIA Geforce GTX 650

我可以在(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)中的给定规格]:

  1. 亚历克斯网

    • 110张/秒,164张/秒(每批= 15)

  2. ResNet50

    • 11张/秒,14张/秒(批处理= 5)

  3. ResNet152

    • 5张/秒,6张/秒(批处理= 2)

以下内容被剥夺了Intel空间:

  1. 亚历克斯网

    • 113张/秒,114张/秒(每批= 15)

  2. ResNet50

    • 9张/秒,14张/秒(批处理= 5)

  3. ResNet152

    • 5张/秒,6张/秒(批处理= 2)

为了完整起见,我还针对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分支。 硬件是

  • 英特尔酷睿i7-7567U CPU @ 3.5GHz
  • 英特尔Iris Plus图形650
  • Windows 10专业版
  • Visual Studio 14 2015年Win64

我在与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:: LibDNNConvSpatial(LibDNNConvConfig配置){
^
/ home / intel / Documents / caffe_src / opencl_caffe / src / caffe / libdnn / libdnn_conv_spatial。 cpp:117 :25:错误:'<'标记之前的预期初始化程序
字符串LibDNNConvSpatial:: generate_fw_defs(){

知道有什么问题吗? 另外,opencl分支上没有include / caffe / greentea文件夹,因此我从“ https://github.com/01org/caffe ”复制了它。

@rachithayp
您可以尝试以下章节中的说明吗? 它是我们即将出版的有关opencl caffe的书中安装章节的粗略部分。 谢谢@ naibaf7

希望它能对您有所帮助,并为您的Opencl Caffe事业提供帮助。

python-deep-learning-installation-chap.pdf

@ 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倍
我不知道为什么

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

lixin7895123 picture lixin7895123  ·  3评论

amit-dat picture amit-dat  ·  3评论

prathmeshrmadhu picture prathmeshrmadhu  ·  3评论

FreakTheMighty picture FreakTheMighty  ·  3评论

malreddysid picture malreddysid  ·  3评论