Caffe: IntelGPUの適切なCaffeopenclブランチのインストール手順

作成日 2016年12月16日  ·  87コメント  ·  ソース: BVLC/caffe

これを開かなければならないことを残念に思いますが、opencl githubブランチとgoogleフォーラムの両方に、特に新しい人のために、IntelOpenclドライバーを使用してIntelGPUにCaffeOpenclをインストールするためのステップバイステップのインストール手順がありません。

(a)これらの指示はまだ機能しますか?
cmake -DUSE_GREENTEA = ON -DUSE_INTEL_SPATIAL = ON -DUSE_ISAAC = ON path_to_caffe_source
make -jn
make -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が存在する場合、opencl-caffeをコンパイルするためにatlaspackはまだ必要ですか? それはアトラスパックを求め続けますか?

(c)ウィーンCLはどうですか? そのブランチはまだそれらに依存していますか? 必要ですか?

(D)libdnnは何のためにありますか? 代わりに ?

(e)ISAACはどうですか?

(f)たとえば、windowsブランチは、「CUDAがインストールされていない場合、CaffeはデフォルトでCPU_ONLYビルドになります」と話します。これは、非cudaビルドのOpenclモードでは機能しないという意味ですか?

親切に更新し、ステップバイステップの説明を提供します
ありがとうございました

OpenCL question windows

最も参考になるコメント

@atlury
Readmeには、Windowsでのコンパイルとインストールの方法を説明するWindowsセクションがあります。
その説明に欠けている唯一のステップは、ViennaCL-DEVをダウンロードすることです。
https://github.com/viennacl/viennacl-dev

Caffeのクローンを作成したフォルダーの隣など、CMakeが検出するパスのいずれかに配置できます。

ビルド手順は、CMakeの構成と依存関係のダウンロードを自動的に処理するスクリプトであるため、Linuxの手順とは異なります。

通常、Windowsは正しく機能するように設計されているため、Windowsでの構成について心配する必要はほとんどありません。 しかし、私はあなたに簡単な説明をします:
(a)いいえおよびいいえ。 Readmeの説明に従って、 scripts/build_win.cmdを使用します。
(b)はい、どのようにコンパイルしても、CPUBLASが常に必要です。 しかし、 build_win.cmdがそれを処理し、デフォルトの構成ではOpenBLASを使用します。
(c)はい、ViennaCLが必要です。ここからクローンを作成してください: https
(d) LibDNNは、OpenCL GPUのデフォルトの畳み込みエンジンであり、cuDNNの代わりになります。
インテルGPU用の追加のインテルカーネルも利用可能で、デフォルトで有効になっています。
(e) ISAAC、clBLAS、およびCLBlastは厳密にオプションです。 これらをWindowsで個別にコンパイルし、使用する場合は依存関係に追加する必要があります。 私はこれらのライブラリのコンパイルを保証またはサポートしていません。それらはそれぞれのプロジェクトメンテナによってサポートされています。
(f)いいえ、OpenCLブランチでは、これは当てはまりません。 ここでのデフォルトは、USE_GREENTEA = ON、USE_CUDA = OFF、CPU_ONLY = OFFです。

クリスマス後、休日があればReadmeを更新します。 残念ながら、今のところ詳細なステップバイステップの時間はありません。
CC: @willyd

全てのコメント87件

@atlury
Readmeには、Windowsでのコンパイルとインストールの方法を説明するWindowsセクションがあります。
その説明に欠けている唯一のステップは、ViennaCL-DEVをダウンロードすることです。
https://github.com/viennacl/viennacl-dev

Caffeのクローンを作成したフォルダーの隣など、CMakeが検出するパスのいずれかに配置できます。

ビルド手順は、CMakeの構成と依存関係のダウンロードを自動的に処理するスクリプトであるため、Linuxの手順とは異なります。

通常、Windowsは正しく機能するように設計されているため、Windowsでの構成について心配する必要はほとんどありません。 しかし、私はあなたに簡単な説明をします:
(a)いいえおよびいいえ。 Readmeの説明に従って、 scripts/build_win.cmdを使用します。
(b)はい、どのようにコンパイルしても、CPUBLASが常に必要です。 しかし、 build_win.cmdがそれを処理し、デフォルトの構成ではOpenBLASを使用します。
(c)はい、ViennaCLが必要です。ここからクローンを作成してください: https
(d) LibDNNは、OpenCL GPUのデフォルトの畳み込みエンジンであり、cuDNNの代わりになります。
インテルGPU用の追加のインテルカーネルも利用可能で、デフォルトで有効になっています。
(e) ISAAC、clBLAS、およびCLBlastは厳密にオプションです。 これらをWindowsで個別にコンパイルし、使用する場合は依存関係に追加する必要があります。 私はこれらのライブラリのコンパイルを保証またはサポートしていません。それらはそれぞれのプロジェクトメンテナによってサポートされています。
(f)いいえ、OpenCLブランチでは、これは当てはまりません。 ここでのデフォルトは、USE_GREENTEA = ON、USE_CUDA = OFF、CPU_ONLY = OFFです。

クリスマス後、休日があればReadmeを更新します。 残念ながら、今のところ詳細なステップバイステップの時間はありません。
CC: @willyd

@ naibaf7
素早い対応に感謝致します。 Linux命令はどうですか?

OpenCL BLASとISAACはまだ必要ですか?
https://github.com/01org/caffe/wiki/clCaffe

@atlury
Linuxでの2つの方法:CMAKEを使用して「makeall -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、およびGflags、HDF5などの通常のCaffe要件。
  • OpenCL SDKは、CUDA、AMD APP SDK、またはIntel OpenCLSDKのいずれかで入手できます。 これは、WindowsとLinuxの両方に当てはまります。 Mac OS Xは、独自のOpenCL実装を提供する必要があります。

オプションの要件:

  • clBLAS(AMDから)
  • CLBlast(@cnugterenから)
  • ISAAC
  • cuDNN
  • CUDA

ありがとう@ naibaf7
また、Linuxの場合、LIBDNNはほとんどのnVidiaおよびAMDチップ専用ですか? そして、Intel iGPUにはIntelSpatialを使用する必要がありますか?

@atlury
Intel Spatialは、効率的なバックプロパゲーションとすべての形状の畳み込みをサポートしているわけではありませんが、はい、InteliGPUで最速のフォワードプロパゲーションです。
ただし、両方を試して、ネットワークとデバイスに最適なものを確認することをお勧めします。

@ naibaf7

ファビアン、WindowsはMingw-64でのコンパイルをサポートしますか? 親切に私に知らせてください。 それに固有の指示があれば? Mocosoftスタジオは肥大化しすぎています。

@atlury現在、いいえ、私が知っていることではありません。 @willydは、Windows構築の主な寄稿者および保守者であるため、おそらく彼はそれに答えることができます。
マイクロソフトスタジオは少し肥大化したかもしれませんが@willydはVS2015とVS2013あちこちすべての依存関係をプリコンパイルするので、それはそれで非常に便利です。 ですから、mingw-64の使用はもっと手間がかかると思います。

CUDAはWindowsのホストコンパイラとしてmingwをサポートしていないため、mingw-64をサポートするつもりはありません。 そうは言っても、ビルドにそれほど複雑さが加わらないのであれば、mingw64のサポートに関連するPRを歓迎します。

@willyd
かっこいい、思った。 この場合、MinGW64なしのWindowsサポートは私にとって大きな落とし穴のようには見えないので、私は単純さを支持しています。 それぞれのオペレーティングシステムで標準コンパイラを使用することをお勧めします。
人々がトリッキーなビルド構成を使用するときのサポートのオーバーヘッドについて、私は主に心配しています。

@ naibaf7

Windows openclビルドにはengine:SPATIALのサポートが含まれていますか? engine:SPATIALまたはengine:INTEL_SPATIALを含めると、次のいずれかのエラーが発生します

_レイヤーconv1のエンジンが不明です。_
_テキスト形式のcaffe.NetParameterの解析エラー:18:3:フィールド「engine」の「SPATIAL」の列挙値が不明です。_

ウィキは混乱していますread.mehttps

すべての畳み込み層の仕様に_addentry engine:SPATIAL_の両方が記載されています。 同様に_ "engine:INTEL_SPATIAL <-------------------------- this line!" _

どれ?

そしてそれはエンジンなしでうまく動作します:prototxtの空間。

_opencl-caffe-test.exe imagenet_deploy.prototxt bvlc_reference_caffenet.caffemodel imagenet_mean.binaryproto synset_words.txt Truck.jpg
デバイスID0の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 vs. 1)不明なレイヤータイプ" _(Visual Studio 2015)
b)OpenCL.libを取得していないようです。回避策は、opencl-sdkフォルダーからビルドフォルダーに手動でコピーすることです(パス変数名は何であると予想されますか?)
c)ビルドフォルダーに抽出されたライブラリは、最新のものにコンパイルできます(たとえば、opencv 3.2など)。

さらに

C:\ Downloads \ xxx.caffe-opencl-build \ bin> caffe device_query
I0108 12:35:04.88571319872共通。 cpp:382 ]総デバイス数:3

I0108 12:35:04.88824419872共通。 cpp:383 ] CUDAデバイス:0
I0108 12:35:04.88910219872共通。 cpp:384 ] OpenCLデバイス:3

I0108 12:35:04.88968119872共通。 cpp:408 ]デバイスID:0

I0108 12:35:04.89074419872共通。 cpp:410 ]デバイスバックエンド:OpenCL
I0108 12:35:04.89183919872共通。 cpp:412 ]バックエンドの詳細:Intel(R)Corporation:OpenCL 1.2
I0108 12:35:04.89345019782共通。 cpp:414 ]デバイスベンダー:Intel(R)Corporation
I0108 12:35:04.89473119872共通。 cpp:416 ]名前:Intel(R)HD Graphics 4400
I0108 12:35:04.89573019872共通。 cpp:418 ]グローバルメモリの合計:1708759450

I0108 12:35:04.89723319872共通。 cpp:408 ]デバイスID:1
I0108 12:35:04.89850519872共通。 cpp:410 ]デバイスバックエンド:OpenCL
I0108 12:35:04.89959019872共通。 cpp:412 ]バックエンドの詳細:Intel(R)Corporation:OpenCL 1.2
I0108 12:35:04.90109119872共通。 cpp:414 ]デバイスベンダー:Intel(R)Corporation
I0108 12:35:04.90259219872共通。 cpp:416 ]名前:Intel(R)Core(TM)i5-4210U CPU @ 1.70GHz
I0108 12:35:04.90409319872共通。 cpp:418 ]グローバルメモリの合計:8513761280

I0108 12:35:04.90559419872共通。 cpp:408 ]デバイスID:2
I0108 12:35:04.90711419872共通。 cpp:410 ]デバイスバックエンド:OpenCL
I0108 12:35:04.90861719782共通。 cpp:412 ]バックエンドの詳細:Intel(R)Corporation:OpenCL 2.1
I0108 12:35:04.91010019872共通。 cpp:414 ]デバイスベンダー:Intel(R)Corporation
I0108 12:35:04.91159819872共通。 cpp:416 ]名前:Intel(R)Core(TM)i5-4210U CPU @ 1.70GHz
I0108 12:35:04.91310019872共通。 cpp:418 ]グローバルメモリの合計:8513761280

新しいOpenCL2.1と古いOpenCL1.2の両方がインストールされているようですが、私には良さそうです。 それはまだHaswellCPUなので、Intelがすでにチップ用の2.1 /2.0ドライバーを持っているかどうかはわかりません。 ただし、GPU用にOpenCLSDKを更新してみてください。

とにかく、INTEL_SPATIALを使用する場合は、コンパイル時にも有効にする必要があります。 その後、IntelGPUデバイスの標準エンジンになります。
あなたはここでそれを行うことができます:
https://github.com/BVLC/caffe/blob/opencl/scripts/build_win.cmd#L82
(scripts / build_win.cmd、82行目)

ただし、Intel空間カーネルはまだWindowsで完全にテストされていません。

私はopenclsdkを更新しようとします、そして私はちょうどあなたのコミットを見ました、それを有効にし、再コンパイルしてテストしそして報告することを試みます。
ありがとう

USE_INTEL_SPATIALが定義されていない場合はUSE_INTEL_SPATIAL = 1を設定してOkie

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]

わかりました、調べます。
参考のために

こんにちは、みんな、
素晴らしい仕事をありがとう!
USE_INTEL_SPATIAL = 0を使用してWindowsおよびIntelHD 4400でcaffe-openclをコンパイルして実行することができました(何か問題がない限り、カフェ時間は2コアi5-4210Uでcaffe-cpuを実行するよりも悲しいことに約2倍遅くなります)。 ただし、USE_INTEL_SPATIAL = 1でコンパイルすると、@ atluryと同じエラーが発生します(Lenovo X240にも同じハードウェアがあると思います)。 INTEL_SPATIALを使用すると、CPUよりもこのGPUでcaffe-openclの実行が速くなるかどうかを知りたいです...

@gfursinかなりの差で、そうすべきです。 LibDNNは、GPUがIntelチップとは異なるメモリアーキテクチャを備えていることを想定しているため、現時点では最適に動作していません。
現在、Intelカーネルを修正してWindowsでも動作するようにする方法を調査しています。

素晴らしい! どうもありがとう!

ちなみに、 @ atluryは、デバイス1と2を選択すると、約10秒後に毎回「カフェタイム」がクラッシュしました。同じ動作でしたか? ありがとう!

@gfursinいいえ私はカフェタイムを実行しませんでした(私は報告しようとします)。 私はウィンドウに不満を感じ、後にUbuntu17.04に移行しました。 Linuxに関する私のコメントをここで参照してください。 それは空間で動作し、Linuxで30 fps(VGG)以上を取得します。 https://github.com/BVLC/caffe/pull/5165

ここに公開されているIntelの論文があります(clcaffe)
http://www.slideshare.net/IntelSoftware/clcaffe-unleashing-the-power-of-intel-graphics-for-deep-learning-acceleration

以下のベンチマーク(28ページGT3 GPU)は、畳み込みレイヤーでINTELSPATIALを使用してサポートされていました。
Alexnet-290画像/秒
GoogleNet-77画像/秒
VGGA-55画像/秒
オーバーフェイト-91画像/秒

INTEL SPATIALを使用して、オブジェクト検出(分類だけでなく)もテストしたいのですが、そのような例はどこにもありません。 カフェレイヤーの準備ができているかどうか疑問です。 @ naibaf7

@gongzg上記のテストで試すことができるソースコードはありますか?

さらに、LiDNNはエキサイティングなtiny-dnnで動作するように作られています(ただし、事前にトレーニングされたモデルはそれほど多くありません)。 また、量子化をテストして、openclがそこでどのように役立つかを確認したいと思います(8ビット、XNORなど)。 最後に、openclでのリアルタイムのオブジェクト検出は素晴らしいでしょう!!! @ naibaf7が光をいいのですが。

@atlury来週、もっと難しい質問についてお
オプションを有効にしてコンパイルすると、IntelSpatialが自動的に使用されます。
オブジェクトのセグメンテーションと検出については、ISBI2016の論文とテクニカルレポートを読むことをお勧めします。 これを非常に高速に実行できるSK-NetおよびU-Netアーキテクチャについて説明しています。 AlexNetはそのようなSK-Netに変換できます。
ただし、SK / U-Netのメモリ使用量を低く抑えるには、LibDNNを使用する必要があります。

うわー、私はあなたの論文を読んだばかりです... Stridedカーネルの概念は非常に印象的です。 このスレッドをハイジャックしませんが、これらはすべて、最終的にはWindowsの下のOpenclでテストする必要がありますが、その前に...

これはPythonのみの実装ですか? C ++はありませんか? 事前にトレーニングされたモデルはありますか? これはリポジトリがhttps://github.com/naibaf7/PyGreentea/tree/master/examplesであるところですか? はい、LibDNNを使用します...

@atluryはい、元のインターフェースはC ++でしたが、Pythonに切り替えました。 ただし、HDF5または独自のC ++インターフェイスを介してデータを提供する場合も機能します。 私がPythonで提供しているネットワークジェネレーターコードを使用するだけで、SK / Uタイプのネットワーク用の正しいprototxtを作成できます。
これは少し古いですが完全なテクニカルレポートです: https ://arxiv.org/abs/1509.03371、LibDNNがプログラムされる前のパフォーマンス数値が含まれています。
これらを使用するデータセット(EM分類)と結果がまだ公開されていないため、現時点では事前トレーニング済みモデルを提供していません。

@atluryベンチマークデータの一部は、convnet-benchmarksを使用して測定され、プラットフォームで再現できます。 現在、公に共有できる他の例はありません。

@ atlury-参照してくれてありがとう! 過去にUbuntuでIntelGPU用のOpenCLをインストールして使用するのに多くの問題がありました(Linuxカーネルを再コンパイルする必要がありました)が、最新のドライバーは問題なく動作する可能性があります-それを確認する必要があります。 ちなみに、#5165には、FPS測定を使用したWebカメラとカフェの分類のスナップショットがあります。そのためにどのプログラムを使用しましたか。 どうもありがとう!!!

@gfursin

以下を行ってください。

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

  2. opencl SDKとopenclランタイムをインストールします(カーネルパッチは必要ありません)
    https://software.intel.com/en-us/intel-opencl/download
    https://software.intel.com/en-us/articles/opencl-drivers

  3. https://github.com/BVLC/caffe/tree/openclをダウンロードし
    (a)Viennacl、libdnn、intel Spatial、opencvなどを有効にしてコンパイルしてください。 共有ライブラリを作成してください。 私はPythonを頻繁に使用しないため、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

インクルードエンジン:deploy.proto内のすべての畳み込み層のINTEL_SPATIAL

synset_words.txtを取得します

  1. このプログラムを使用してテストする
    https://gist.github.com/atlury/f65fd41eb805cc5f77f666a59e71eae2

input_dimが3チャンネルで10(一度に1つの画像のみを与える)ではなく1(プロト内)であり、サイズ変更が自動的に行われることを確認してください。
input_dim:1
input_dim:3
input_dim:224
input_dim:224

skype:atluryまたはgtalk:atluryで私を騒がせる追加のヘルプ

これはLinuxでのみ機能し、Windowsのopenclサポートはまだ@ naibaf7によって作業されていることに注意してください

すべての詳細について@atluryに感謝します-非常に感謝します-私はすぐにそれをテストします! ちなみに、Collective Knowledge Frameworkを使用してWindows(CPUおよびOpenCLモード)へのCaffeのインストールの自動化を開始しましたが、それでもさらにテストが必要です: https
同僚からのフィードバックを待っています。問題なく動作する場合は、数週間以内に公式リリースを行います(Androidデバイスもサポートする可能性があります)...

こんにちは、みんな。 図書館と上記の議論に感謝します。

私は現在、WindowsOpenCLビルドをUSE_GREENTEA = 1、USE_LIBDNN = 1、USE_INTEL_SPATIAL = 1で修正した最新のコミットを、ViennaCLの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最初のエラーは既知であり、作業中です。
通常発生する2番目のエラーは、OpenCL DLLが無効であり、いくつかのシンボルがないことを意味します。 お持ちのハードウェアとインストールしたOpenCLSDKを教えてください。
この問題は通常、CUDA内のnVidiaからのOpenCLSDKに付属しています。 IntelおよびAMDOpenCL SDKは、バージョン1.2および2.0で問題ないはずです。

@ naibaf7返信ありがとうございます。

Intel HD Graphics4000とNVIDIANVS5200Mを搭載したWindows8 Pro64ビットDellでライブラリを構築しています。 そして、最新のIntel OpenCL SDKv6.3をインストールしました。 OpenCLディレクトリがCUDAに付属しているディレクトリを指しているようです。

そのため、ビルドでIntel OpenCL SDKを使用するために、CUDAを削除し、次のように46、48、52、53FindOpenCL.cmakeにかなり大雑把な変更を

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")
基本的には、IntelSDKパスを追加するだけです。 私がそれを正しくやっているかどうかはわかりませんが。 これらがないと、スクリプトはSDKを見つけることができません。

ただし、上記と同じエラーが発生します(Intel Spatialなしでビルド)。
これが、参照用にスクリプトから直接取得した構成ファイルです。
ConfigInfo.txt
私が何を間違えたのか分かりますか?

こんにちは@ atlury-私はついに

カーネルキャッシングにはまだ問題があるため、起動コストは非常に高くなりますが、 @ naibaf7@psyhtestはそれを改善しようとしています。 カーネルキャッシュをわずかに高速化するための一時的な解決策は、環境変数VIENNACL_CACHE_PATHおよびCUDA_CACHE_DISABLEを操作することです(https://github.com/dividiti/ck-caffe/issues/44#issuecomment-277205871を参照)。

質問があります:deploy.protoのすべての畳み込み層にエンジン:INTEL_SPATIALを追加する方法がわかりませんでしたか? 私はまだ初心者ユーザーです(私はサブライブラリを最適化しようとしているコンパイラ側にいます)。 サンプルを送っていただけませんか。よろしくお願いします。

別の注意:興味がある場合は、CKフレームワークを介してOpenCL、ViennaCL、USE_INTEL_SPATIALでCaffeをアセンブルするサポートを追加しました(つまり、ワンクリックで再構築します)。

ckインストールパッケージ:lib-caffe-bvlc-opencl-libdnn-clblast-universal --env.USE_INTEL_SPATIAL = ON

詳細については、 https

現在、いくつかのプラットフォームでViennaCLキャッシングのプロファイリングを行っています。 いくつかの変更を加えると、十分に機能する可能性があると思います。

@gfursinCUDA_CACHE_DISABLEは、NVIDIA独自のカーネルのキャッシュメカニズムを無効にする効果があるため、速度が低下するだけです(もちろん、NVIDIA搭載プラットフォームの場合)。 ただし、キャッシュプロファイリングには必要です。

@ psyhtest-私はあなたを誤解していたのであなたのメモに感謝します-それは奇妙なバグであり一時的な回避策だと思いました;)..。

@ naibaf7現在のWindowsサポートのステータスはどうなっていますか? あなたはすでにウィンドウズのインテル空間エンジンの有効化にも取り組み始めたのだろうか。

@gongzgこれをテストするために、IntelラップトップでWindows環境の

@ naibaf7更新していただきありがとうございます。 次に、Windowsの内部空間エンジンの問題を解決するための内部リソースがあるかどうかを確認します。

このブランチはWindowsとAMDGPUで機能していますか?

はい、そうです。 AMD GPUは、WindowsとLinuxの両方でLibDNNで完全にサポートされています。 完全なIntelGPUサポートは4月28日に続きます。

@ naibaf7
デビッド、WindowsOpenCLのサポートがIntelGPU用のPythonで準備ができたら教えてください。 テストして報告することがいくつかあります。

@ hillarycanas-数日前にWindows10を搭載したAMDでlibDNNを使用してOpenCLバージョンのCaffeをコンパイルして実行したことも確認しました(テストのために、かなり古いAMD E1-2500APUとRadeonHD Graphicsを使用しました)。 パフォーマンスの結果は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ライブラリとバイナリをCKに自動的にパッケージ化するサポートを追加し、最小限のインストールでさまざまなWindowsマシンにCaffeCPUと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の公式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カフェのこのブランチがIntel統合グラフィックカードをサポートしていないことを意味しますか?

ありがとう、

サル

@saliltambe OpenCLブランチは、

@gongzg返信ありがとうございます。 jupyter Notebookで実行すると、「カーネルが停止したようです。自動的に再起動します。」というエラーメッセージが表示されます。 非常に小さいバッチサイズを実行しているので、メモリ不足が原因でカーネルが停止することはないと思います。 さらに、caffe.set_mode_gpu()を使用してGPUモードに切り替えても、エラーは発生しません。 net.forward()を実行した場合にのみエラーが発生します。

@saliltambe
もう少し情報が必要です:どのようにコンパイルしましたか(コンパイラバージョン、Caffe設定、どのBLASライブラリを有効にしましたか)?
./build/test/test_all.testbinを実行できますか、それともmake runtestを実行できますか(Makefileを使用した場合)?

@ naibaf7
こんにちはファビアン、ここに詳細があります:
-一般:
-バージョン: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-uninitialized

-デバッグCXXフラグ:-g -fPIC -Wall -std = c ++ 11 -DCMAKE_BUILD -Wno-sign-compare -Wno-uninitialized

  • -ビルドタイプ:リリース
  • --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)
  • -ブースト:はい(バージョン1.64)
  • --glog:はい
  • --gflags:はい
  • --protobuf:はい(ver。3.3.0)
  • --lmdb:はい(ver。0.9.19)
  • --LevelDB:はい(ver。1.20)
  • --Snappy:はい(ver。1.1.4)
  • --OpenCV:はい(バージョン2.4.13.2)
  • --CUDA:いいえ



    • --Python:

  • -インタプリタ:/Users/stambe/anaconda/bin/python2.7(ver。2.7.13)
  • -ライブラリ:/Users/stambe/anaconda/lib/libpython2.7.dylib(ver 2.7.13)
  • --NumPy:/Users/stambe/anaconda/lib/python2.7/site-packages/numpy/core/include(ver 1.12.1)

  • -文書化:
  • --Doxygen:いいえ
  • --config_file:

  • -インストール:
  • -インストールパス:/ Users / stambe / Programs / caffe-opencl / build / install

  • -構成が完了しました

src / caffe / CMakeLists.txtのCMake警告(dev):

ポリシーCMP0022が設定されていません:INTERFACE_LINK_LIBRARIESはリンクインターフェイスを定義します。 ポリシーの詳細については、「cmake--help-policyCMP0022」を実行してください。 cmake_policyコマンドを使用してポリシーを設定し、この警告を抑制します。
ターゲット「caffe」には、LINK_INTERFACE_LIBRARIESプロパティとは異なるINTERFACE_LINK_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/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/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;-フレームワーク加速; /usr/local/lib/libboost_python-mt.dylib

make runtest -j8を実行すると、次のエラーが発生します。
stambe- osx:build stambe $ make runtest -j8
[1%]ビルドされたターゲットgtest
[2%]ターゲットカフェプロトを構築
[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を実行するのに問題がないことに注意してください。

ありがとう、
サル

与えられたポインターとリードのおかげで、私は次の仕様の2つの別々のマシンでCaffeOpenCLを正常にビルドして実行することができました。

(A)

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

AlexNet、ResNet50、ResNet152を(A)と(B)の両方で問題なく実行できました。 私が抱えている唯一の問題は、(A)のResNetでのバッチ処理です-予測されたクラスは決して正しくありません。 問題は(A)とResNetsのバッチプロセスでのみ発生するため、根本的な原因はLibDNN、より具体的にはIntelの空間カーネルに起因している可能性があると思います。 Intelエンジンを無効にすることはできましたが、それでは、今は満足しすぎている速度には到達しませんでした。

これ以上のポインタとリードはありますか? 前もって感謝します。

@gongzg空間カーネルでバッチ処理に問題が発生する可能性がある理由についての

@ naibaf7現在の空間畳み込みエンジンにはいくつかのバグがあり、それらのPRをアップストリームのOpenCLブランチに送信する時間がまだありません。 その理由の一部は、現在の作業がすべてFP16 PRに依存しているため、FP16パッチがレビューされてマージされるのを待ちたいということです。 今のところ、 @ jstumpinにgithub.com/01org/caffeのinference-optimizeブランチを試して、問題がなくなったかどうかを確認することをお勧めします。 対応するwikiページはIntelOpenCL caffewikiにあります

@jstumpin resnetにレイヤーフュージョンを適用することをお勧めします。そうすれば、顕著なパフォーマンスの向上が見られます。

すべての周りの素晴らしいポインタ(そしてニュースも)。 以前にgithub.com/01org/caffeについて聞いたことがありますが、Windowsの展開を余儀なくされているため、あまり熱心ではありませんでした。 [(A)で指定された仕様]を取得しています:

  1. AlexNet

    • 110画像/秒、164画像/秒(バッチ= 15)

  2. ResNet50

    • 11画像/秒、14画像/秒(バッチ= 5)

  3. ResNet152

    • 5画像/秒、6画像/秒(バッチ= 2)

以下は、Intelの空間を奪われています。

  1. AlexNet

    • 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でビルドする手順についてREADMEを確認してください。 問題を見つけた場合は、そこでチケットを開いてください。

@gongzgはい

ラベルは正しいのに、予測値が1を超えるのはなぜですか? これは、Intel Spatialの有無にかかわらずOpenCLを使用する場合に当てはまります(CPUのみで問題ありません)。 softmaxの出力は確率的であるべきではありませんか?

IntelNUCで最新のOpenCLブランチを試しています。 ハードウェアは

  • Intel Core i7-7567U CPU @ 3.5GHz
  • インテルアイリスプラスグラフィックス650
  • Windows 10 Pro
  • Visual Studio 14 2015 Win64

Caffeフォルダーと並行するフォルダーに最新のviennaclのクローンを作成しました。 次に、 scripts/build_win.cmdを変更せずに実行します(変更する必要がないため)。 しかし、上記のすべての説明には見られない奇妙なエラーが発生します。 以下の出力を参照してください。 そこに行く前に、もう1つの情報は、 windowsブランチを正常に構築したことです。

これがbuild_win.cmdの出力です。 誰かがこれについて私を助けることができれば本当に感謝します!

================================

c:\ DL \ caffe \ scripts> build_win.cmd
指定されたドライブが見つかりません。
指定されたドライブが見つかりません。
情報:================================================ ============
情報:要約:
情報:================================================ ============
情報:MSVC_VERSION = 14
情報:WITH_NINJA = 0
情報:CMAKE_GENERATOR = "Visual Studio 14 2015 Win64"
情報:CPU_ONLY = 0
情報:USE_CUDA = 0
情報:CUDA_ARCH_NAME =自動
情報:USE_CUDNN = 0
情報:USE_GREENTEA = 1
情報:USE_LIBDNN = 1
情報:USE_OPENMP = 0
情報:USE_INDEX64 =
情報:USE_INTEL_SPATIAL = 0
情報:DISABLE_DEVICE_HOST_UNIFIED_MEMORY = 0
情報:CMAKE_CONFIG =リリース
情報:USE_NCCL = 0
情報:CMAKE_BUILD_SHARED_LIBS = 0
情報:PYTHON_VERSION = 2
情報:BUILD_PYTHON = 1
情報:BUILD_PYTHON_LAYER = 1
情報:BUILD_MATLAB = 0
情報:PYTHON_EXE = "python"
情報:RUN_TESTS = 0
情報:RUN_LINT = 0
情報:RUN_INSTALL = 0
情報:================================================ ============
--Windows10.0.15063を対象とするWindowsSDKバージョンの選択。
--CコンパイラのIDはMSVC19.0.24215.1です。
--CXXコンパイラIDはMSVC19.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
-ブーストバージョン:1.61.0
-次のBoostライブラリが見つかりました:
-システム
- 糸
- ファイルシステム
-クロノ
- 日付時刻
-アトミック
-見つかったGFlags:C:/Users/NUC-Sonavex/.caffe/dependencies/libraries_v140_x64_py35_1.1.0/libraries/include
-見つかったgflags(include:C:/Users/NUC-Sonavex/.caffe/dependencies/libraries_v140_x64_py35_1.1.0/libraries/include、library:gflags_shared)
-見つかったGlog:C:/Users/NUC-Sonavex/.caffe/dependencies/libraries_v140_x64_py35_1.1.0/libraries/include
-見つかったglog(include:C:/Users/NUC-Sonavex/.caffe/dependencies/libraries_v140_x64_py35_1.1.0/libraries/include、library: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; debug; 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が見つかりました(include:C:/Users/NUC-Sonavex/.caffe/dependencies/libraries_v140_x64_py35_1.1.0/libraries/include、library:snappy_static; optimized; 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 / Modules / 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 / caffeinference-optimizeブランチを試してください。 Intelプラットフォームの詳細な手順については、次のwikiを参照してください。
https://github.com/01org/caffe/wiki/clCaffe

@gongzg Intel OpenCL実装の一部がWindowsで機能しないことを役に立たないかもしれません。 しかし、あなたが知っているように、それに取り組んでいます:)

@ naibaf7これは、このブランチがWindows上のIntel iCPUでまったく機能していないことを意味しますか? 次に、Intel iGPUを搭載したWindowsでOpenCLをサポートするCaffeバージョンはどこにありますか?

@gongzg提案した

@ bxk-sonavex動作しますが、Intelの畳み込みでは動作しないため、パフォーマンスが最適ではありません。
現時点ではそれを見つけることができないと思いますが、私は解決策に取り組んでいます。
あなたの問題は、OpenCLヘッダーの欠落と関係があります。 どのOpenCLをインストールしましたか? Intel SDK?

@ naibaf7はい、Intel SDKv6.3を使用しています。 私はここ(https://github.com/BVLC/caffe/issues/5575)で回避策を見つけました、そしてそれは私のために働きます。 これで、openclブランチがコンパイルされました。 さらに、examplesフォルダーにあるmnistサンプルを使用してビルドをテストしました。 CPUを使用する場合(lenet_solver.prototxtを変更することにより)、train_lenetは問題なく実行され、最終的なトレーニング精度は0.9902であり、これは予想どおりです。

I1107 13:53:43.1397473512ソルバー。 cpp:421 ]テストネット出力#0:精度= 0.9902
I1107 13:53:43.1397473512ソルバー。 cpp:421 ]テストネット出力#1:損失= 0.0277191(* 1 = 0.0277191損失)

ただし、GPUを使用すると、「caffe.exeが機能しなくなりました」というエラーメッセージウィンドウが表示され、精度は0.1009になります。

I1107 14:11:15.65179787872ソルバー。 cpp:421 ]テストネット出力#0:精度= 0.1009
I1107 14:11:15.65179787872ソルバー。 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:ビルドが停止しました:サブコマンドが失敗しました。

@ naibaf701orgバージョンは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を無効にし、3回目のビルド...

@ bxk-sonavexすでに正常に構築されているようです。 dllファイルを実行可能ファイルのディレクトリにコピーする必要があります。
「」
ビルドが正常に完了した後、アプリケーションを実行する前に、dl.dll(dlfcn)とisaac.dll(isaac)を同じディレクトリにコピーするか、システムディレクトリに配置する必要があることに注意してください。
「」

@gongzg 2つの

"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 Graphics650とintel_sdk_for_opencl_setup_6.3.0.1904を使用しています。 何か考えや解決策はありますか?

@ bxk-sonavex IntelGraphicsドライバーを最新バージョンに更新する必要があります。

@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(david)です。

適切な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

ベンはopenclカーネルを有効にしましたか? INTEL_SPATIALを使用してみましたか?

@atlury 「openclカーネルを有効にする」とはどういう意味ですか? はい、こちらの手順(https://github.com/01org/caffe/wiki/clCaffe#how-to-build)に従い、コマンドラインで「setUSE_INTEL_SPATIAL = 1」を実行しました(build_win.cmdファイルを直接変更するのではありません)。 )。

更新:
情報:================================================ ============
情報:要約:
情報:================================================ ============
情報:MSVC_VERSION = 14
情報:WITH_NINJA = 0
情報: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
情報:USE_INDEX64 =
情報:USE_INTEL_SPATIAL = 1
情報:USE_ISAAC = 1
情報:CMAKE_CONFIG =リリース
情報:USE_NCCL = 0
情報:CMAKE_BUILD_SHARED_LIBS = 0
情報:PYTHON_VERSION = 2
情報:BUILD_PYTHON = 0
情報:BUILD_PYTHON_LAYER = 0
情報:BUILD_MATLAB = 0
情報:PYTHON_EXE = "python"
情報:RUN_TESTS = 1
情報:RUN_LINT = 0
情報:RUN_INSTALL = 1
情報:================================================ ============

@ bxk-sonavex

ベンあなたはあなたのdeploy.protoのすべての畳み込み層のためにINTEL_SPATIALを含める必要があるでしょう。 私はLinuxでリアルタイムで個人的にテストしました。

https://github.com/BVLC/caffe/pull/5165

「Intelのテレビスティック、Intel Spatialカーネルを使用し、19層のvggモデルを使用するWebカメラでテストしました。リアルタイムの分類を取得でき、すべて3.5ワット未満です。」

Windowsも動作するはずです。

@ bxk-sonavex 01orgバージョンの問題については、そこで問題を開いてください。 重要ではないこれらの勾配テストケースでのFP16精度の問題が原因で、いくつかのテストが失敗します。 パフォーマンスが非常に遅いため、自動調整が原因です。 もう一度実行すると、はるかに高速になるはずです。 まず、build / tools / caffeを使用して、AlexNetのフォワードパフォーマンスを測定してみてください。

ちなみに、私はちょうど@CNugterenは数日前に彼の自動調整CLBlastライブラリの新しい1.2.0バージョンをリリースしていることに気づきました。 確認したところ、古いIntel 4400GPUを搭載したWindows10 Lenovoラップトップ(およびLinux)でCaffeで動作しているようです。したがって、以前のCLBlastバージョンはWindowsでセグメント障害が発生していたため、Caffeに追加することもできます。

興味がある場合は、たとえば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

最初の実行はカーネルのコンパイルとキャッシュのために少し遅くなる可能性があるため、2番目の実行ははるかに高速になります!

画像分類をベンチマークすることもできます。

$ ck pull repo:ctuning-datasets-min
$ ck run program:caffe --cmd_key=classify

Intelとは関係ありませんが、Android GCC4.9.xを使用してAndroidARM64用のCLBlast1.2.0でCaffeをコンパイルするときにマイナーなバグがあるようです(「to_string」はstdクラスにありません)。

$ 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 GCC4.9.xを使用してAndroidARM64用のCLBlast1.2.0でCaffeをコンパイルすると、マイナーなバグがあるようです( "to_string"はstdクラスにありません):

これがCLBlastまたはCaffeのバグであるかどうかわかりませんか? いずれにせよ、CLBlastはこれを特別なAndroidヘッダーに実装しています。 おそらくそれはCaffe内でも使用できますか?

@ CNugteren-チェックしたところ、問題はCLBlastにはありません。 Android用のLibDNNを修正していたCKのパッチを忘れてしまいました(私のせいです)。 追加しました(https://github.com/dividiti/ck-caffe/blob/master/package/lib-caffe-bvlc-opencl-clblast-universal/patch.android/android.fgg.patch3)。 CLBlastとlibDNNを使用してCaffeをコンパイルすることが可能です。 私はSamsungS7で分類とベンチマークの例を確認しました-正常に動作します。 この誤警報をお詫びし、新しいCLBlastをリリースしていただきありがとうございます。Linux、Windows、AndroidのCaffeで使用できるようになりました。

@gfursinこれはCPUまたはGPU(OpenCL)を使用するバージョンですか? OpenCLはまだWindowsで動作していない(または少なくともIntel iGPUではまだ動作していない)と言っていると思いました。 Windowsで何を使用していますか?

@ bxk-sonavex

ベンは返答が遅れてすみません。 私は不在でした。

@ naibaf7を引用するには
「畳み込み法(「エンジン」)は、ネットワークprototxtファイルで選択/上書きすることもできます」

したがって、エントリ「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-IntelSpatialのない古いIntel4400GPUを搭載したWindowsでCaffeOpenCLバージョン(libDNNとCLBlastを使用)を使用しています-正常に動作しているようですが、最適ではない可能性があります。 Caffeデバイスのリストは次のとおりです( "ck run program:caffe --cmd_key = query_gpu_opencl"):
output_caffe_opencl_devices.txt

上記のCaffeOpenCLバージョンとGoogleNetを使用したWindowsでの画像分類からの出力は次のとおりです。
output_caffe_opencl_image_classification.txt

私は主にこの段階で推論/オブジェクト検出をチェックします(DNNのインストール、ベンチマーク、最適化をすべての可能なプラットフォームで統合しようとしています)ので、OpenCLを使用するWindows上の他のCaffe機能とモデルを実際に強調しませんでした...

また、Intel SpatialON( "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 。 インテルOpenCLをUbuntu16.04で動作させるには、カーネルにパッチを適用する必要があることに注意してください: https

数週間前、カーネルにパッチを適用せずに、CK経由で最新のIntel OpenCLを使用して、Ubuntu 18.04(IntelGPUを搭載したLenovoT470pラップトップ)でCaffeの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 config){
^
/ 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カフェに関する次の本からのインストールの章の大まかなカットです。 ありがとう@ naibaf7

私はそれがいくつかの光を投げ、あなたのopenclカフェの努力であなたを助けることを願っています。

python-deep-learning-installation-chap.pdf

@ bxk-sonavex-IntelSpatialのない古いIntel4400GPUを搭載したWindowsでCaffeOpenCLバージョン(libDNNとCLBlastを使用)を使用しています-正常に動作しているようですが、最適ではない可能性があります。 Caffeデバイスのリストは次のとおりです( "ck run program:caffe --cmd_key = query_gpu_opencl"):
output_caffe_opencl_devices.txt

上記のCaffeOpenCLバージョンとGoogleNetを使用したWindowsでの画像分類からの出力は次のとおりです。
output_caffe_opencl_image_classification.txt

私は主にこの段階で推論/オブジェクト検出をチェックします(DNNのインストール、ベンチマーク、最適化をすべての可能なプラットフォームで統合しようとしています)ので、OpenCLを使用するWindows上の他のCaffe機能とモデルを実際に強調しませんでした...

また、Intel SpatialON( "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はCPUよりもカフェで高速に動作しますか?
clCaffeをコンパイルし、HD 5500で実行しましたが、CPU(i3 5005U)の5倍の速度です。
理由はわかりません。

このページは役に立ちましたか?
0 / 5 - 0 評価