Caffe: Richtige Installationsanleitung für Caffe opencl branch für Intel GPU

Erstellt am 16. Dez. 2016  ·  87Kommentare  ·  Quelle: BVLC/caffe

Es tut mir leid, dass ich dies öffnen muss, aber sowohl im Opencl-Github-Zweig als auch in den Google-Foren gibt es keine (aktualisierten) Schritt-für-Schritt-Installationsanweisungen für die Installation von Caffe Opencl auf einer Intel-GPU mit Intel Opencl-Treibern, insbesondere für jemanden, der neu ist.

(a) Funktionieren diese Anweisungen noch?
cmake -DUSE_GREENTEA = ON -DUSE_INTEL_SPATIAL = ON -DUSE_ISAAC = ON path_to_caffe_source
mache -jn
mache -jn runtest

in diesem Zweig https://github.com/BVLC/caffe/tree/opencl? oder

Wie wäre es mit?
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 /

(b) Wird atlaspack noch zum Kompilieren von opencl-caffe benötigt, wenn clblas vorhanden ist ??? Es fragt immer wieder nach Atlaspack ???

(c) Was ist mit Vienna CL? Hängt dieser Zweig noch von ihnen ab? Wird es gebraucht?

(D) Wofür ist libdnn? anstelle von ?

(e) Was ist mit ISAAC?

(f) Der Windows-Zweig spricht zum Beispiel: "Wenn CUDA nicht installiert ist, verwendet Caffe standardmäßig einen CPU_ONLY-Build." Bedeutet dies, dass er in Opencl-Modus in Nicht-Cuda-Builds nicht funktioniert?

Bitte aktualisieren und Schritt für Schritt Anweisungen geben
Vielen Dank

OpenCL question windows

Hilfreichster Kommentar

@atlury
In der Readme-Datei befindet sich ein Abschnitt Windows , der Anleitungen zum Kompilieren und Installieren unter Windows enthält.
Der einzige Schritt, der in dieser Beschreibung fehlt, ist das Herunterladen von ViennaCL-DEV:
https://github.com/viennacl/viennacl-dev

Es kann in einen der Pfade eingefügt werden, in denen CMake es findet, z. B. neben dem Ordner, in den Sie Caffe geklont haben.

Die Build-Anweisungen unterscheiden sich von den Linux-Anweisungen, da es sich um ein Skript handelt, das sich automatisch um die CMake-Konfiguration und das Herunterladen von Abhängigkeiten kümmert.

Normalerweise müssen Sie sich keine großen Gedanken über die Konfiguration unter Windows machen, da diese nur für die Arbeit ausgelegt ist. Ich werde Ihnen jedoch eine kurze Erklärung geben:
(a) Nein und nein. Verwenden Sie scripts/build_win.cmd wie in der Readme-Datei beschrieben.
(b) Ja, egal wie Sie es kompilieren, es wird immer ein CPU-BLAS benötigt. Aber build_win.cmd erledigt das für Sie und die Standardkonfiguration ist die Verwendung von OpenBLAS.
(c) Ja, ViennaCL wird benötigt, klonen Sie von hier: https://github.com/viennacl/viennacl-dev
(d) LibDNN ist die Standardeinstellung der Faltungs-Engine für OpenCL-GPUs und ersetzt cuDNN.
Es gibt auch zusätzliche Intel-Kernel für Intel-GPUs, die standardmäßig verfügbar und aktiviert sind.
(e) ISAAC, clBLAS und CLBlast sind streng optional. Sie müssen diese unter Windows separat kompilieren und zu den Abhängigkeiten hinzufügen, wenn Sie sie verwenden möchten. Ich garantiere oder unterstütze die Kompilierung dieser Bibliotheken nicht, sie werden von den jeweiligen Projektbetreuern unterstützt.
(f) Nein, im OpenCL-Zweig ist dies nicht wahr. Die Standardeinstellung hier ist USE_GREENTEA = ON, USE_CUDA = OFF, CPU_ONLY = OFF.

Ich werde die Readme nach Weihnachten aktualisieren, wenn ich Ferien habe. Leider habe ich momentan keine Zeit für eine detaillierte Schritt-für-Schritt-Anleitung.
CC: @willyd

Alle 87 Kommentare

@atlury
In der Readme-Datei befindet sich ein Abschnitt Windows , der Anleitungen zum Kompilieren und Installieren unter Windows enthält.
Der einzige Schritt, der in dieser Beschreibung fehlt, ist das Herunterladen von ViennaCL-DEV:
https://github.com/viennacl/viennacl-dev

Es kann in einen der Pfade eingefügt werden, in denen CMake es findet, z. B. neben dem Ordner, in den Sie Caffe geklont haben.

Die Build-Anweisungen unterscheiden sich von den Linux-Anweisungen, da es sich um ein Skript handelt, das sich automatisch um die CMake-Konfiguration und das Herunterladen von Abhängigkeiten kümmert.

Normalerweise müssen Sie sich keine großen Gedanken über die Konfiguration unter Windows machen, da diese nur für die Arbeit ausgelegt ist. Ich werde Ihnen jedoch eine kurze Erklärung geben:
(a) Nein und nein. Verwenden Sie scripts/build_win.cmd wie in der Readme-Datei beschrieben.
(b) Ja, egal wie Sie es kompilieren, es wird immer ein CPU-BLAS benötigt. Aber build_win.cmd erledigt das für Sie und die Standardkonfiguration ist die Verwendung von OpenBLAS.
(c) Ja, ViennaCL wird benötigt, klonen Sie von hier: https://github.com/viennacl/viennacl-dev
(d) LibDNN ist die Standardeinstellung der Faltungs-Engine für OpenCL-GPUs und ersetzt cuDNN.
Es gibt auch zusätzliche Intel-Kernel für Intel-GPUs, die standardmäßig verfügbar und aktiviert sind.
(e) ISAAC, clBLAS und CLBlast sind streng optional. Sie müssen diese unter Windows separat kompilieren und zu den Abhängigkeiten hinzufügen, wenn Sie sie verwenden möchten. Ich garantiere oder unterstütze die Kompilierung dieser Bibliotheken nicht, sie werden von den jeweiligen Projektbetreuern unterstützt.
(f) Nein, im OpenCL-Zweig ist dies nicht wahr. Die Standardeinstellung hier ist USE_GREENTEA = ON, USE_CUDA = OFF, CPU_ONLY = OFF.

Ich werde die Readme nach Weihnachten aktualisieren, wenn ich Ferien habe. Leider habe ich momentan keine Zeit für eine detaillierte Schritt-für-Schritt-Anleitung.
CC: @willyd

@ naibaf7
Danke für die schnelle Antwort. Was ist mit Linux-Anweisungen?

Werden OpenCL BLAS und ISAAC noch benötigt?
https://github.com/01org/caffe/wiki/clCaffe

@atlury
Unter Linux gibt es zwei Möglichkeiten: Verwenden Sie CMAKE und 'make all -j8' oder kopieren Sie das Beispiel makefile.config.example nach makefile.config und kompilieren Sie es mit make all -j8; make pycaffe -j8; make runtest -j8 .
Beachten Sie, dass sich die kompilierten Ergebnisse von Makefile und CMAKE unter Linux geringfügig unterscheiden. Das Makefile ist älter, aber einfacher und der CMAKE ist komplexer.

Dieser Zweig ist nicht mit https://github.com/01org/caffe/wiki/clCaffe identisch
Daher hat es unterschiedliche Anforderungen. Die räumlichen Intel-Kernel von dort wurden jedoch in diesen Zweig integriert.

Strenge Anforderungen:

  • ViennaCL, OpenCL und normale Caffe-Anforderungen wie Gflags, HDF5 usw.
  • Sie können das OpenCL SDK entweder mit CUDA, AMD APP SDK oder Intel OpenCL SDK erhalten. Dies gilt sowohl für Windows als auch für Linux. Mac OS X sollte eine eigene OpenCL-Implementierung bereitstellen.

Optionale Anforderungen:

  • clBLAS (von AMD)
  • CLBlast (von @cnugteren)
  • ISAAC
  • cuDNN
  • CUDA

Danke @ naibaf7
Und auch für Linux ist LIBDNN nur für die meisten nVidia- und AMD-Chips? Und wir sollten Intel räumlich für Intel iGPUs verwenden?

@atlury
Intel Spatial unterstützt nicht eine effiziente Rückübertragung und nicht alle Formen von Windungen, aber ja, es ist die schnellste Vorwärtsausbreitung auf Intel iGPUs.
Ich schlage jedoch vor, dass Sie beides versuchen und prüfen, was für Ihre Netzwerke und Geräte am besten funktioniert.

@ naibaf7

Fabian, wird die Windows-Build-Unterstützung das Kompilieren mit Mingw-64 unterstützen? Bitte lassen Sie es mich wissen. Gibt es spezielle Anweisungen dazu? Mocosoft Studio ist zu aufgebläht ..

@atlury Derzeit nein, nicht das ich weiß. @willyd ist der Hauptverantwortliche und Betreuer des Fensterbaus, also kann er das vielleicht beantworten.
Microsoft Studio ist zwar etwas aufgebläht, aber es ist recht praktisch, da @willyd alle Abhängigkeiten für VS2015 und VS2013 vorkompiliert hat. Daher stelle ich mir vor, dass die Verwendung von mingw-64 viel mehr Arbeit bedeutet.

Ich habe nicht die Absicht, mingw-64 zu unterstützen, da CUDA mingw als Host-Compiler unter Windows nicht unterstützt. Davon abgesehen begrüße ich alle PRs, die sich auf die Unterstützung von mingw64 beziehen, wenn sie dem Build nicht zu viel Komplexität hinzufügen.

@willyd
Cool, was ich dachte. Ich bin in diesem Fall für die Einfachheit, da die Windows-Unterstützung ohne MinGW64 für mich keine große Gefahr darstellt. Es ist etwas vorzuziehen, den Standard-Compiler mit dem jeweiligen Betriebssystem zu verwenden.
Ich mache mir hauptsächlich Sorgen über den Support-Overhead, wenn Leute knifflige Build-Konfigurationen verwenden.

@ naibaf7

Enthält der Windows OpenCl-Build Unterstützung für Engine: SPATIAL? Wenn ich engine: SPATIAL oder engine: INTEL_SPATIAL einbinde, wird einer der folgenden Fehler angezeigt

_Layer conv1 hat unbekannte Engine._
_Fehler beim Parsen des Textformats caffe.NetParameter: 18: 3: Unbekannter Aufzählungswert von "SPATIAL" für das Feld "engine" ._

Das Wiki ist verwirrend. Read.me https://github.com/BVLC/caffe/tree/opencl

Es werden beide _add entry engine: SPATIAL_ für alle Faltungsschichtspezifikationen erwähnt. sowie _ "engine: INTEL_SPATIAL <-------------------------- diese Zeile!" _

Welcher?

Und es läuft gut ohne die Engine: räumlich im Prototxt.

_opencl-caffe-test.exe imagenet_deploy.prototxt bvlc_reference_caffenet.caffemodel imagenet_mean.binaryproto synset_words.txt Truck.jpg
Verwenden Sie eine GPU mit der Geräte-ID 0
---------- Vorhersage für Truck.jpg ----------
0,9872 - "n03417042 Müllwagen, Staubwagen"
0,0110 - "n04467665 Anhänger LKW, Sattelzug, LKW-Rig, Rig, Sattelzugmaschine, Semi"
0,0013 - "n03496892 Mähdrescher, Schnitter"
0,0002 - "n04428191 Dreschmaschine, Dreschmaschine, Dreschmaschine"
0,0001 - "n04461696 Abschleppwagen, Abschleppwagen, Abschleppwagen" _

Auch hier sind einige "andere" Beobachtungen
a) Funktioniert besser, wenn es als DLL kompiliert wird, anstatt als statische. Behebt insbesondere den Fehler _ "Prüfung fehlgeschlagen: registry.count (Typ) == 1 (0 vs. 1) Unbekannter Ebenentyp" _ (Visual Studio 2015)
b) Es scheint nicht die OpenCL.lib aufzunehmen, also besteht die Problemumgehung darin, sie manuell aus dem opencl-sdk-Ordner in den Build-Ordner zu kopieren (wie wird der Name der Pfadvariablen erwartet?)
c) Die im Build-Ordner extrahierten Bibliotheken könnten auf den neuesten Stand gebracht werden (z. B. opencv 3.2 usw.).

Des Weiteren

C: \ Downloads \ xxx.caffe-opencl-build \ bin> caffe device_query
I0108 12: 35: 04.885713 19872 gemeinsam. cpp: 382 ] Geräte insgesamt: 3

I0108 12: 35: 04.888244 19872 gemeinsam. cpp: 383 ] CUDA-Geräte: 0
I0108 12: 35: 04.889102 19872 gemeinsam. cpp: 384 ] OpenCL-Geräte: 3

I0108 12: 35: 04.889681 19872 gemeinsam. cpp: 408 ] Geräte-ID: 0

I0108 12: 35: 04.890744 19872 gemeinsam. cpp: 410 ] Geräte-Backend: OpenCL
I0108 12: 35: 04.891839 19872 common. cpp: 412 ] Details zum Backend: Intel (R) Corporation: OpenCL 1.2
I0108 12: 35: 04.893450 19872 gemeinsam. cpp: 414 ] Gerätehersteller: Intel (R) Corporation
I0108 12: 35: 04.894731 19872 common. cpp: 416 ] Name: Intel (R) HD Graphics 4400
I0108 12: 35: 04.895730 19872 gemeinsam. cpp: 418 ] Globaler Gesamtspeicher: 1708759450

I0108 12: 35: 04.897233 19872 gemeinsam. cpp: 408 ] Geräte-ID: 1
I0108 12: 35: 04.898505 19872 gemeinsam. cpp: 410 ] Geräte-Backend: OpenCL
I0108 12: 35: 04.899590 19872 gemeinsam. cpp: 412 ] Details zum Backend: Intel (R) Corporation: OpenCL 1.2
I0108 12: 35: 04.901091 19872 gemeinsam. cpp: 414 ] Gerätehersteller: Intel (R) Corporation
I0108 12: 35: 04.902592 19872 gemeinsam. cpp: 416 ] Name: Intel (R) Core (TM) i5-4210U-CPU bei 1,70 GHz
I0108 12: 35: 04.904093 19872 gemeinsam. cpp: 418 ] Gesamter globaler Speicher: 8513761280

I0108 12: 35: 04.905594 19872 gemeinsam. cpp: 408 ] Geräte-ID: 2
I0108 12: 35: 04.907114 19872 gemeinsam. cpp: 410 ] Geräte-Backend: OpenCL
I0108 12: 35: 04.908617 19872 gemeinsam. cpp: 412 ] Details zum Backend: Intel (R) Corporation: OpenCL 2.1
I0108 12: 35: 04.910100 19872 gemeinsam. cpp: 414 ] Gerätehersteller: Intel (R) Corporation
I0108 12: 35: 04.911598 19872 gemeinsam. cpp: 416 ] Name: Intel (R) Core (TM) i5-4210U-CPU bei 1,70 GHz
I0108 12: 35: 04.913100 19872 gemeinsam. cpp: 418 ] Gesamter globaler Speicher: 8513761280

Sieht für mich gut aus, obwohl anscheinend sowohl ein neueres OpenCL 2.1 als auch ein älteres OpenCL 1.2 installiert sind. Da es sich immer noch um eine Haswell-CPU handelt, bin ich mir nicht sicher, ob Intel bereits einen 2.1 / 2.0-Treiber für Ihren Chip hat. Sie sollten jedoch versuchen, Ihr OpenCL SDK für Ihre GPU zu aktualisieren.

Wenn Sie INTEL_SPATIAL verwenden möchten, müssen Sie es auch zur Kompilierungszeit aktivieren. Danach wird es zur Standard-Engine auf Intel GPU-Geräten.
Das können Sie hier machen:
https://github.com/BVLC/caffe/blob/opencl/scripts/build_win.cmd#L82
(scripts / build_win.cmd, Zeile 82)

Der räumliche Intel-Kernel wurde jedoch noch nicht gründlich unter Windows getestet.

Ich werde versuchen, opencl sdk zu aktualisieren, und ich habe gerade Ihre Commits gesehen, werde versuchen, sie zu aktivieren, neu zu kompilieren und zu testen und Bericht zu erstatten.
Vielen Dank

Okie mit wenn NICHT DEFINIERT USE_INTEL_SPATIAL setze USE_INTEL_SPATIAL = 1

Build_win.cmd löst den folgenden Fehler aus.

C: \ Downloads \ caffe-opencl \ buildALL_BUILD.vcxproj "(Standardziel) (1) ->
C: \ Downloads \ caffe-opencl \ build \ src \ caffe \ caffe.vcxproj "(Standardziel) (3) ->

(ClCompile-Ziel) -> C: \ Downloads \ caffe-opencl \ src \ caffe \ layer \ conv_layer_spatial.cpp (1453): Fehler C2572: 'caffe :: ConvolutionLayerSpatial:: swizzleWeights ': Neudefinition des Standardarguments: Parameter 1 [C: \ Downloads \ caffe-opencl \ build \ src \ caffe \ caffe.vcxproj]

C: \ Downloads \ caffe-opencl \ src \ caffe \ layer \ conv_layer_spatial.cpp (1458): Fehler C2572: 'caffe :: ConvolutionLayerSpatial:: swizzleWeights ': Neudefinition des Standardarguments: Parameter 1 [C: \ Downloads \ caffe-opencl \ build \ src \ caffe \ caffe.vcxproj]

Ok, ich werde das untersuchen.
@gongzg als Referenz.

Hi an alle,
Vielen Dank für die tolle Arbeit!
Ich habe es geschafft, caffe-opencl unter Windows und Intel HD 4400 mit USE_INTEL_SPATIAL = 0 zu kompilieren und auszuführen (die Kaffeezeit ist leider etwa 2x langsamer als die Ausführung von caffe-cpu auf einem 2-Core i5-4210U, es sei denn, ich mache etwas falsch). Beim Kompilieren mit USE_INTEL_SPATIAL = 1 wird jedoch auch der gleiche Fehler wie bei @atlury angezeigt (und ich glaube, ich habe dieselbe Hardware auf meinem Lenovo X240). Ich bin gespannt, ob die Verwendung von INTEL_SPATIAL dazu beiträgt, dass caffe-opencl auf dieser GPU schneller ausgeführt wird als auf einer CPU ...

@gfursin Es sollte mit großem Abstand. LibDNN erwartet, dass die GPU eine andere Speicherarchitektur als Intel-Chips hat, sodass sie derzeit nicht optimal läuft.
Wir untersuchen derzeit, wie die Intel-Kernel so repariert werden können, dass sie auch unter Windows funktionieren.

Super! Vielen Dank!

Übrigens, @atlury , bei der Auswahl von Gerät 1 und 2 stürzte die "Kaffeezeit" jedes Mal nach etwa 10 Sekunden ab - hatten Sie das gleiche Verhalten? Vielen Dank!

@gfursin Nein, ich habe keine Caffe-Zeit ausgeführt (ich werde versuchen und berichten). Ich war mit Windows frustriert und wechselte später zu Ubuntu 17.04. Siehe meinen Kommentar hier auf Linux. Es funktioniert mit räumlichen und ich bekomme mehr als 30 fps (VGG) unter Linux. https://github.com/BVLC/caffe/pull/5165

Hier ist ein Intel-Artikel veröffentlicht (clcaffe)
http://www.slideshare.net/IntelSoftware/clcaffe-unleashing-the-power-of-intel-graphics-for-deep-learning-acceleration

Wo die folgenden Benchmarks (Seite 28 GT3-GPU) mit INTEL SPATIAL in Faltungsschichten unterstützt wurden.
Alexnet - 290 Bilder / Sekunde
GoogleNet - 77 Bilder / Sekunde
VGGA - 55 Bilder / Sekunde
Überfeature - 91 Bilder / Sekunde

Ich möchte die Objekterkennung (nicht nur die Klassifizierung) auch mit INTEL SPATIAL testen, aber es gibt nirgendwo ein Beispiel dafür. Ich bezweifle, ob die Caffe Layers schon fertig sind? @ naibaf7 ?

@gongzg Gibt es einen Quellcode für die oben genannten Tests, den wir ausprobieren können?

Weiteres LiDNN wurde entwickelt, um mit tiny-dnn zu arbeiten, was aufregend ist (obwohl es dort nicht viele vorgefertigte Modelle gibt). Ich möchte auch die Quantisierung testen und sehen, wie opencl dort helfen kann (8-Bit, XNOR usw.). Endlich wäre die Objekterkennung in opencl in Echtzeit fantastisch !!! Ich hoffe, @ naibaf7 kann etwas Licht ins Dunkel bringen.

@atlury Ich werde mich nächste Woche bezüglich der schwierigeren Fragen bei Ihnen
Intel Spatial wird automatisch verwendet, wenn Sie mit aktivierter Option kompilieren.
Zur Objektsegmentierung und -erkennung empfehle ich Ihnen, mein ISBI 2016-Papier und meinen technischen Bericht zu lesen. Ich habe dort SK-Net- und U-Net-Architekturen beschrieben, die dies sehr schnell tun können. AlexNet kann in ein solches SK-Net konvertiert werden.
Sie müssen jedoch LibDNN verwenden, um die Speichernutzung in SK / U-Net gering zu halten.

Wow, ich habe gerade Ihre Zeitung gelesen ... das Konzept der Strided-Kernel scheint sehr beeindruckend zu sein. Nicht diesen Thread entführen, aber all diese müssen irgendwann in Opencl unter Windows getestet werden, aber vorher ....

Ist dies eine reine Python-Implementierung? Kein c ++? Gibt es vorgefertigte Modelle? Ist das Repo hier https://github.com/naibaf7/PyGreentea/tree/master/examples ? Ja, ich werde LibDNN verwenden ...

@atlury Ja, die ursprüngliche Schnittstelle war C ++, aber wir haben auf Python umgestellt. Wenn Sie die Daten jedoch über HDF5 oder Ihre eigene C ++ - Schnittstelle bereitstellen möchten, funktioniert dies ebenfalls. Verwenden Sie einfach die Netzwerkgeneratorcodes, die ich in Python zur Verfügung stelle, um den richtigen Prototxt für SK / U-Netzwerke zu erstellen.
Hier ist ein etwas älterer, aber vollständiger technischer Bericht: https://arxiv.org/abs/1509.03371 , der Leistungszahlen enthält, bevor LibDNN programmiert wurde.
Derzeit bieten wir keine vorab trainierten Modelle an, da die Datensätze (EM-Klassifizierung), für die wir diese verwenden, und unsere Ergebnisse noch nicht veröffentlicht wurden.

@atlury Einige der Benchmark-Daten werden mithilfe der Convnet-Benchmarks gemessen und können auf Ihrer Plattform reproduziert werden. Wir haben derzeit keine anderen Beispiele, die wir öffentlich teilen könnten.

@atlury - vielen Dank für Referenzen! Ich hatte in der Vergangenheit viele Probleme bei der Installation und Verwendung von OpenCL für Intel GPU unter Ubuntu (musste den Linux-Kernel neu kompilieren), aber möglicherweise funktionieren die neuesten Treiber einwandfrei - müssen dies überprüfen. Übrigens, in # 5165 haben Sie eine Momentaufnahme einer Webcam + Caffe-Klassifizierung mit FPS-Messungen - darf ich Sie fragen, welches Programm Sie dafür verwendet haben? Vielen Dank!!!

@ gfursin

Bitte machen Sie folgendes.

  1. Verwenden Sie http://cdimage.ubuntu.com/daily-live/current/

  2. Installieren Sie opencl SDK und opencl Laufzeit von (Kernel-Patch ist nicht erforderlich)
    https://software.intel.com/en-us/intel-opencl/download
    https://software.intel.com/en-us/articles/opencl-drivers

  3. Laden Sie https://github.com/BVLC/caffe/tree/opencl herunter
    (a) Bitte kompilieren Sie mit aktiviertem Viennacl, libdnn, Intel Spatial, OpenCV usw. Bitte erstellen Sie eine gemeinsame Bibliothek. Ich aktiviere Python nicht, da ich es nicht oft benutze.

  4. VGG-Kaffeemodell, Prototxt
    Herunterladen
    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

include engine: INTEL_SPATIAL für alle Faltungsebenen in Ihrer deploy.proto

Holen Sie sich die synset_words.txt

  1. Testen Sie mit diesem Programm
    https://gist.github.com/atlury/f65fd41eb805cc5f77f666a59e71eae2

Stellen Sie einfach sicher, dass input_dim 1 (in Ihrem Proto) und nicht 10 (Sie geben jeweils nur ein Bild) mit 3 Kanälen ist und die Größenänderung automatisch erfolgt.
input_dim: 1
input_dim: 3
input_dim: 224
input_dim: 224

Jede zusätzliche Hilfe bringt mich auf gtalk: atlury

Bitte beachten Sie, dass dies nur unter Linux funktioniert und die OpenCl-Unterstützung für Windows noch von @ naibaf7 bearbeitet wird

Vielen Dank @atlury für alle Details - sehr geschätzt - ich werde es bald testen! Übrigens habe ich begonnen, die Installation von Caffe unter Windows (CPU- und OpenCL-Modus) mithilfe von Collective Knowledge Framework zu automatisieren, aber es müssen noch weitere Tests durchgeführt werden: https://github.com/dividiti/ck-caffe
Ich warte auf ein Feedback von meinen Kollegen und wenn es gut funktioniert, werden wir in ein paar Wochen eine offizielle Veröffentlichung veröffentlichen (möglicherweise auch mit Unterstützung für Android-Geräte) ...

Hi an alle. Vielen Dank für die Bibliothek und auch die obigen Diskussionen.

Ich versuche derzeit, das neueste Commit zu erstellen, das den Windows OpenCL- Build mit USE_GREENTEA = 1, USE_LIBDNN = 1 und USE_INTEL_SPATIAL = 1 zusammen mit den erstellten Header-Dateien für ViennaCL behoben hat. Meine build_win.cmd ist hier angehängt: build_win.txt

Auf halbem Weg der Bibliothek wird jedoch immer der folgende Fehler angezeigt:
ninja: build stopped: subcommand failed.
ERROR: Build failed
Im Detail:
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
Entschuldigung, wenn dieser Fehler der gleiche ist wie oben erwähnt.

Versucht auch mit USE_INTEL_SPATIAL = 0, aber mit dem folgenden Fehler:
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

Bitte beraten Sie dazu. Sehr geschätzt.

@ yshen92 Der erste Fehler ist bekannt und wird bearbeitet.
Der zweite Fehler, den Sie normalerweise erhalten, bedeutet, dass Ihre OpenCL-DLL ungültig ist und einige Symbole fehlen. Können Sie uns sagen, welche Hardware Sie haben und welche OpenCL-SDKs Sie installiert haben?
Dieses Problem tritt normalerweise bei OpenCL-SDKs auf, die von nVidia innerhalb von CUDA stammen. Intel- und AMD OpenCL-SDKs sollten mit Version 1.2 und 2.0 in Ordnung sein.

@ naibaf7 Vielen Dank für die Antwort.

Ich baue die Bibliothek auf einem Windows 8 Pro 64-Bit-Dell mit Intel HD Graphics 4000 und NVIDIA NVS 5200M auf. Und gerade das neueste Intel OpenCL SDK v6.3 installiert . Es scheint, dass das OpenCL-Verzeichnis auf das Verzeichnis verweist, das mit CUDA geliefert wird.

Bei dem Versuch, das Intel OpenCL SDK im Build zu verwenden, habe ich CUDA entfernt und FindOpenCL.cmake in den Zeilen 46, 48, 52 und 53 wie folgt

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")
Grundsätzlich müssen nur die Intel SDK-Pfade hinzugefügt werden. Ich bin mir nicht sicher, ob ich es richtig mache. Wie ohne diese kann das Skript das SDK nicht finden.

Ich erhalte jedoch immer noch den gleichen Fehler wie oben (Gebäude ohne Intel Spatial).
Und hier ist meine Konfigurationsdatei, die direkt aus dem Skript als Referenz entnommen wurde.
ConfigInfo.txt
Irgendeine Idee, was ich falsch gemacht habe?

Hallo @atlury, ich habe endlich etwas Zeit gefunden, um Ubuntu 17.04 zu installieren, und es war ganz einfach, Intel GPU-Treiber ohne Kernel-

Es gibt immer noch ein Problem mit dem Kernel-Caching, daher sind die Startkosten sehr hoch, aber @ naibaf7 und @psyhtest versuchen, es zu verbessern. Die zeitliche Lösung, um das Kernel-Caching leicht zu beschleunigen, besteht darin, mit den Umgebungsvariablen VIENNACL_CACHE_PATH und CUDA_CACHE_DISABLE zu spielen (siehe https://github.com/dividiti/ck-caffe/issues/44#issuecomment-277205871).

Ich habe jedoch eine Frage: Ich habe nicht verstanden, wie die Engine hinzugefügt werden soll: INTEL_SPATIAL für alle Faltungsebenen in der Datei deploy.proto? Ich bin immer noch ein Anfänger (ich bin eher auf der Compilerseite und versuche, Unterbibliotheken zu optimieren). Haben Sie etwas dagegen, mir bitte ein Muster zu schicken - wir werden uns sehr freuen!

Noch ein Hinweis: Wenn es von Interesse ist, habe ich Unterstützung hinzugefügt, um Caffe mit OpenCL, ViennaCL und USE_INTEL_SPATIAL über das CK-Framework zusammenzustellen (dh mit einem Klick neu zu erstellen):

ck Installationspaket : lib-caffe-bvlc-opencl-libdnn-clblast-universal --env.USE_INTEL_SPATIAL = ON

Details finden Sie hier: https://github.com/dividiti/ck-caffe/wiki/Installation

Momentan profiliere ich das Wiener CL-Caching auf einigen Plattformen. Ich vermute, dass es nach ein paar Änderungen recht zufriedenstellend funktioniert.

@gfursin : CUDA_CACHE_DISABLE hat den Effekt, dass der NVIDIA-eigene Caching-Mechanismus für Kernel deaktiviert wird, wodurch die Dinge nur verlangsamt werden (natürlich auf NVIDIA-basierten Plattformen). Ich benötige es jedoch für die Cache-Profilerstellung.

@psyhtest - danke für deine Notiz, da ich dich missverstanden habe - ich dachte, es wäre ein seltsamer Fehler und eine zeitliche Problemumgehung;) ...

@ naibaf7 Wie ist der Status der Windows-Unterstützung jetzt? Ich frage mich, ob Sie bereits begonnen haben, an der Aktivierung der Intel Spatial Engine für Windows zu arbeiten.

@gongzg Ich habe angefangen, die Windows-Umgebung auf dem Intel-Laptop einzurichten, um dies zu testen, bin aber noch nicht weiter gekommen. Die Intel Spatial Engine hat also immer noch Kompilierungsprobleme unter Windows, aber der Rest funktioniert.

@ naibaf7 Danke für das Update. Dann werde ich prüfen, ob wir über interne Ressourcen verfügen, um die Probleme mit der Interl Spatial Engine unter Windows zu lösen.

Funktioniert dieser Zweig für Windows und AMD GPU?

Ja, so ist es. AMD-GPUs werden mit LibDNN sowohl unter Windows als auch unter Linux vollständig unterstützt. Die vollständige Unterstützung der Intel GPU wird am 28. April folgen.

@ naibaf7
David, können Sie mich bitte wissen lassen, wenn die Unterstützung für Windows OpenCL mit Python für Intel GPU fertig ist? Ich muss ein paar Dinge testen und berichten.

@hillarycanas - Ich bestätige auch, dass ich es vor einigen Tagen geschafft habe, die OpenCL-Version von Caffe mit libDNN unter AMD unter Windows 10 zu kompilieren und auszuführen (ich habe nur für einen Test eine ziemlich alte AMD E1-2500 APU mit Radeon HD Graphics verwendet). Sie können die Leistungsergebnisse unter http://tinyurl.com/k3dhsc2 (Suche nach AMD) anzeigen.
Ich habe das CK-Paket "lib-caffe-bvlc-opencl-libdnn-viennacl-universal" verwendet, um Caffe unter Windows zu kompilieren und auszuführen (siehe https://github.com/dividiti/ck-caffe/wiki/Installation#AMD_GPU).

Tut mir leid, dass ich mich wieder darum gekümmert habe. Nach dem Feedback der Benutzer haben wir Unterstützung hinzugefügt, um die Caffe-Bibliothek und die Binärdateien für Windows automatisch in das CK zu packen. Jetzt ist es möglich, die Caffe-CPU- und OpenCL-Version mit minimaler Installation auf verschiedenen Windows-Computern zu installieren und zu bewerten:

$ 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
Das ist toll :)
Caffe kann so leicht zum Mainstream werden :)

Hallo,

Ich habe versucht, die offizielle OpenCL-Filiale von caffe zu betreiben:
https://github.com/BVLC/caffe/tree/opencl auf meinem Mac mit den folgenden Hardwaredetails:
Modellname: MacBook Pro
Modellkennung: MacBookPro12,1
Prozessorname: Intel Core i5
Prozessorgeschwindigkeit: 2,7 GHz
Anzahl der Prozessoren: 1
Gesamtzahl der Kerne: 2
L2-Cache (pro Kern): 256 KB
L3-Cache: 3 MB
Speicher: 8 GB
Grafik: Intel Iris Graphics 6100 1536 MB

Ich konnte das Klassifizierungs-Tutorial ohne Probleme ausführen. Wenn ich jedoch in den GPU-Modus wechsle und versuche, net.forward () auszuführen, stirbt der Kernel jedes Mal. Bedeutet dies, dass dieser Zweig von OpenCL Caffe keine integrierte Intel-Grafikkarte unterstützt?

Vielen Dank,

Sal

@saliltambe Der OpenCL-Zweig unterstützt Intel iGPU. Obwohl die meisten Tests auf einem Linux-System durchgeführt werden, sollte es auch auf einem Mac funktionieren. Was ist der spezifische Fehler, den Sie beim Ausführen von net.forward () festgestellt haben?

@gongzg Vielen Dank für die Antwort. Beim Ausführen in einem Jupiter-Notizbuch wird die folgende Fehlermeldung angezeigt: "Der Kernel scheint gestorben zu sein. Er wird automatisch neu gestartet." Ich verwende eine sehr kleine Stapelgröße, daher glaube ich nicht, dass der Kernel aufgrund von Speichermangel stirbt. Außerdem erhalte ich keine Fehlermeldung, wenn ich mit caffe.set_mode_gpu () in den GPU-Modus wechsle. Ich erhalte den Fehler nur, wenn ich net.forward () ausführe.

@saliltambe
Wir brauchen ein bisschen mehr Informationen: Wie haben Sie es kompiliert (Compiler-Version, Caffe-Einstellungen, welche BLAS-Bibliotheken haben Sie aktiviert)?
Können Sie ./build/test/test_all.testbin oder make runtest ausführen (wenn Sie Makefiles verwendet haben)?

@ naibaf7
Hallo Fabian, hier sind die Details:
-- Allgemeines:
- Version: 1.0.0
- Git: unbekannt
- System: Darwin
- C ++ - Compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++

- Geben Sie die CXX-Flags frei: -O3 -DNDEBUG -fPIC -Wall -std = c ++ 11 -DCMAKE_BUILD -Wno-sign-compare -Wno-uninitialized

- Debuggen Sie CXX-Flags: -g -fPIC -Wall -std = c ++ 11 -DCMAKE_BUILD -Wno-sign-compare -Wno-uninitialized

  • - Build-Typ: Release
  • - BUILD_SHARED_LIBS: ON
  • - BUILD_python: ON
  • - BUILD_matlab: AUS
  • - BUILD_docs: ON
  • - CPU_ONLY: AUS
  • - USE_OPENCV: ON
  • - USE_FFT: AUS
  • - USE_LEVELDB: ON
  • - USE_LMDB: ON
  • - USE_NCCL: AUS
  • - ALLOW_LMDB_NOLOCK: AUS
  • - USE_HDF5: ON



    • - Abhängigkeiten:

  • - BLAS: Ja (vecLib)
  • - Boost: Ja (Version 1.64)
  • - Glog: Ja
  • - gflags: Ja
  • - protobuf: Ja (Version 3.3.0)
  • - lmdb: Ja (Ver. 0.9.19)
  • - LevelDB: Ja (Version 1.20)
  • - Bissig: Ja (Version 1.1.4)
  • - OpenCV: Ja (Version 2.4.13.2)
  • - CUDA: Nein



    • - Python:

  • - Dolmetscher: /Users/stambe/anaconda/bin/python2.7 (Version 2.7.13)
  • - Bibliotheken: /Users/stambe/anaconda/lib/libpython2.7.dylib (Version 2.7.13)
  • - NumPy: /Users/stambe/anaconda/lib/python2.7/site-packages/numpy/core/include (Version 1.12.1)

  • - Dokumentation:
  • - Sauerstoff: Nein
  • -- Konfigurationsdatei :

  • -- Installieren:
  • - Installationspfad: / Users / stambe / Programme / caffe-opencl / build / install

  • - Konfiguration abgeschlossen

CMake-Warnung (dev) in src / caffe / CMakeLists.txt:

Die Richtlinie CMP0022 ist nicht festgelegt: INTERFACE_LINK_LIBRARIES definiert die Verbindungsschnittstelle. Führen Sie "cmake --help-policy CMP0022" aus, um Richtliniendetails zu erhalten. Verwenden Sie den Befehl cmake_policy, um die Richtlinie festzulegen und diese Warnung zu unterdrücken.
Das Ziel "caffe" hat eine INTERFACE_LINK_LIBRARIES-Eigenschaft, die sich von den LINK_INTERFACE_LIBRARIES-Eigenschaften unterscheidet.

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 / Inhalt / Entwickler / Plattformen / MacOSX.Plattform / Entwickler / SDKs / MacOSX10.12.sdk / System / Bibliothek / 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_hgu; lcblas; -framework Accelerate; /usr/local/lib/libboost_python-mt.dylib

Wenn ich make runtest -j8 ausführe, wird folgende Fehlermeldung angezeigt:
stambe- osx: baue stambe $ make runtest -j8
[1%] Gebauter Ziel-Test
[2%] Gebautes Ziel-Caffeproto
[71%] Gebautes Zielcaffe
[71%] Erstellen des CXX-Objekts src / caffe / test / CMakeFiles / test.testbin.dir / test_deconvolution_layer.cpp.o
[72%] Erstellen des CXX-Objekts src / caffe / test / CMakeFiles / test.testbin.dir / test_db.cpp.o
[73%] Erstellen des CXX-Objekts src / caffe / test / CMakeFiles / test.testbin.dir / test_eltwise_layer.cpp.o
[73%] Erstellen des CXX-Objekts src / caffe / test / CMakeFiles / test.testbin.dir / test_dummy_data_layer.cpp.o
[73%] Erstellen des CXX-Objekts src / caffe / test / CMakeFiles / test.testbin.dir / test_embed_layer.cpp.o
[73%] Erstellen des CXX-Objekts src / caffe / test / CMakeFiles / test.testbin.dir / test_euclidean_loss_layer.cpp.o
[73%] Erstellen des CXX-Objekts src / caffe / test / CMakeFiles / test.testbin.dir / test_filter_layer.cpp.o
[75%] Erstellen des CXX-Objekts src / caffe / test / CMakeFiles / test.testbin.dir / test_filler.cpp.o
/ Users / stambe / Programme / caffe-opencl / src / caffe / test / test_db. cpp: 23 : 27: Fehler: Verwendung von nicht deklariertem
Kennung 'EXAMPLES_SOURCE_DIR'
root_images_ (string (EXAMPLES_SOURCE_DIR) + string ("images /")) {}

Gibt es ein Problem mit meiner Installation? Bitte beachten Sie, dass ich keine Probleme habe, caffe auf der CPU auszuführen.

Vielen Dank,
Sal

Dank der angegebenen Hinweise und Hinweise konnte ich Caffe OpenCL erfolgreich auf zwei separaten Computern mit den folgenden Spezifikationen erstellen und ausführen:

(EIN)

  • CPU: Intel i7-7567U 3,5 GHz
  • iGPU: Intel Iris Plus 650
    (B)
  • CPU: Intel i7-4930K 3,4 GHz
  • GPU: NVIDIA Geforce GTX 650

Ich könnte AlexNet, ResNet50 und ResNet152 sowohl auf (A) als auch auf (B) ohne Probleme ausführen. Das einzige Problem, das ich habe, ist die Stapelverarbeitung in ResNets unter (A) - die vorhergesagte Klasse ist niemals korrekt. Da die Angelegenheit nur im Batch-Prozess von (A) UND nur von ResNets auftritt, könnte die Hauptursache meiner Meinung nach von LibDNN und insbesondere von Intels räumlichem Kernel stammen. Ich könnte die Intel-Engine deaktivieren, aber dann würde sie nicht die Geschwindigkeit erreichen, mit der ich jetzt übermäßig zufrieden bin.

Noch mehr Hinweise und Hinweise zu diesem? Danke im Voraus.

@gongzg Gibt es Hinweise darauf, warum der räumliche Kernel Probleme mit der Stapelverarbeitung haben könnte?

@ naibaf7 Es gibt einige Fehler in der aktuellen räumlichen Faltungs-Engine und ich habe noch keine Zeit, diese PR an die vorgelagerte OpenCL-Niederlassung zu senden. Ein Grund dafür ist, dass alle meine aktuellen Arbeiten von der FP16-PR abhängen. Daher möchte ich warten, bis der FP16-Patch überprüft und zusammengeführt wurde. Im Moment möchte ich Inferenzoptimierungszweig von github.com/01org/caffe zu behoben ist. Die entsprechende Wiki-Seite befindet sich im Intel OpenCL Caffe Wiki

@jstumpin Es ist besser, die Layer-Fusion für Resnet anzuwenden, und Sie werden einen spürbaren Leistungsgewinn sehen.

Rundum tolle Hinweise (und auch Neuigkeiten). Ich habe schon einmal von github.com/01org/caffe gehört, war aber nicht sehr begeistert, da ich mich für die Windows-Bereitstellung entscheiden muss. Ich erhalte [Angaben in (A)]:

  1. AlexNet

    • 110 Bilder / s, 164 Bilder / s (Stapel = 15)

  2. ResNet50

    • 11 Bilder / Sek., 14 Bilder / Sek. (Stapel = 5)

  3. ResNet152

    • 5 Bilder / Sek., 6 Bilder / Sek. (Stapel = 2)

Folgendes wird von Intel räumlich beraubt:

  1. AlexNet

    • 113 Bilder / Sek., 114 Bilder / Sek. (Stapel = 15)

  2. ResNet50

    • 9 Bilder / Sek., 14 Bilder / Sek. (Stapel = 5)

  3. ResNet152

    • 5 Bilder / Sek., 6 Bilder / Sek. (Stapel = 2)

Der Vollständigkeit halber habe ich auch ein Benchmarking mit OpenCV 3.3.0 und Caffes reiner CPU durchgeführt (mit Intel MKL sind dies alle). Es genügt zu sagen, dass nur die CPU ein No-Go ist, unabhängig von der Netzwerktopologie. Ich reduziere die Stapelgröße, wenn die Netzwerkkomplexität mit System (B) fair wird, da der GPU-Speicher begrenzt ist. Darüber hinaus habe ich keinen Gewinn über diese experimentierten Chargengrößen hinaus beobachtet. Übrigens ist (B) tatsächlich mit NVIDIA Quadro K4200 ausgestattet, nicht mit Geforce, wie ursprünglich angekündigt (dies ist ohnehin irrelevant, da wir (B) für die Bereitstellung anstreben).

Machen:
[1] Baue Caffe aus einem inferenzoptimierten Zweig neu auf
[2] Schichtfusion anwenden und Leistung neu bewerten

Vielen Dank!

@jstumpin , klonen , lesen Sie bitte die README-Datei, um Anweisungen zum Erstellen unter Windows zu erhalten. Wenn Sie ein Problem gefunden haben, öffnen Sie dort einfach ein Ticket.

@gongzg Ja Überprüfung & Refactor des FP16 ist in Bearbeitung.

Warum überschreitet der Vorhersagewert 1, obwohl die Bezeichnung korrekt ist? Dies gilt bei Verwendung von OpenCL mit oder ohne Intel Spatial (nur CPU ist in Ordnung). Sollte die Ausgabe von softmax nicht probabilistisch sein?

Ich versuche den neuesten OpenCL-Zweig auf meinem Intel NUC. Die Hardware ist

  • Intel Core i7-7567U CPU bei 3,5 GHz
  • Intel Iris Plus Graphics 650
  • Windows 10 Pro
  • Visual Studio 14 2015 Win64

Ich habe das neueste viennacl in einen Ordner parallel zum Caffe-Ordner geklont. Dann führe ich scripts/build_win.cmd ohne es zu ändern (da ich keine Notwendigkeit sah, es zu ändern). Aber bekommen Sie einen seltsamen Fehler, der nicht in allen obigen Diskussionen zu finden ist. Bitte sehen Sie in der Ausgabe unten. Bevor ich dorthin gehe, ist eine weitere Information, dass ich windows erfolgreich aufgebaut habe.

Hier ist die Ausgabe von build_win.cmd . Wirklich dankbar, wenn mir jemand dabei helfen könnte!

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

c: \ DL \ caffe \ scripts> build_win.cmd
Das System kann das angegebene Laufwerk nicht finden.
Das System kann das angegebene Laufwerk nicht finden.
INFO: ============
INFO: Zusammenfassung:
INFO: ============
INFO: MSVC_VERSION = 14
INFO: WITH_NINJA = 0
INFO: CMAKE_GENERATOR = "Visual Studio 14 2015 Win64"
INFO: CPU_ONLY = 0
INFO: USE_CUDA = 0
INFO: CUDA_ARCH_NAME = Auto
INFO: USE_CUDNN = 0
INFO: USE_GREENTEA = 1
INFO: USE_LIBDNN = 1
INFO: USE_OPENMP = 0
INFO: USE_INDEX64 =
INFO: USE_INTEL_SPATIAL = 0
INFO: DISABLE_DEVICE_HOST_UNIFIED_MEMORY = 0
INFO: CMAKE_CONFIG = Release
INFO: USE_NCCL = 0
INFO: CMAKE_BUILD_SHARED_LIBS = 0
INFO: PYTHON_VERSION = 2
INFO: BUILD_PYTHON = 1
INFO: BUILD_PYTHON_LAYER = 1
INFO: BUILD_MATLAB = 0
INFO: PYTHON_EXE = "Python"
INFO: RUN_TESTS = 0
INFO: RUN_LINT = 0
INFO: RUN_INSTALL = 0
INFO: ============
- Auswahl der Windows SDK-Version für Windows 10.0.15063.
- Die C-Compiler-Identifikation lautet MSVC 19.0.24215.1
- Die CXX-Compiler-Identifikation lautet MSVC 19.0.24215.1
- Überprüfen Sie, ob der C-Compiler funktioniert: C: / Programme (x86) / Microsoft Visual Studio 14.0 / VC / bin / x86_amd64 / cl.exe
- Überprüfen Sie, ob der C-Compiler funktioniert: C: / Programme (x86) / Microsoft Visual Studio 14.0 / VC / bin / x86_amd64 / cl.exe - funktioniert
- Erkennen von C-Compiler-ABI-Informationen
- Erkennen von C-Compiler-ABI-Informationen - erledigt
- Überprüfen Sie, ob der CXX-Compiler funktioniert: C: / Programme (x86) / Microsoft Visual Studio 14.0 / VC / bin / x86_amd64 / cl.exe
- Überprüfen Sie, ob der CXX-Compiler funktioniert: C: / Programme (x86) / Microsoft Visual Studio 14.0 / VC / bin / x86_amd64 / cl.exe - funktioniert
- Erkennen von CBI-Compiler-ABI-Informationen
- Erkennen von CBI-Compiler-ABI-Informationen - fertig
- Erkennen von CXX-Kompilierungsfunktionen
- Erkennen von CXX-Kompilierungsfunktionen - fertig
- PythonInterp gefunden: C: /Users/NUC-Sonavex/AppData/Local/Programs/Python/Python35/python.exe (geeignete Version "3.5.3" gefunden, mindestens "2.7" erforderlich)
- Auf der Suche nach pthread.h
- Auf der Suche nach pthread.h - nicht gefunden
- Gefundene Themen: WAHR
- Boost-Version: 1.61.0
- Folgende Boost-Bibliotheken gefunden:
-- System
-- Faden
-- Dateisystem
- Chrono
-- Terminzeit
- atomar
- GFlags gefunden: C: /Users/NUC-Sonavex/.caffe/dependencies/libraries_v140_x64_py35_1.1.0/libraries/include
- Gefundene gflags (einschließlich: C: /Users/NUC-Sonavex/.caffe/dependencies/libraries_v140_x64_py35_1.1.0/libraries/include, Bibliothek: gflags_shared)
- Glog gefunden: C: /Users/NUC-Sonavex/.caffe/dependencies/libraries_v140_x64_py35_1.1.0/libraries/include
- Gefundener Glog (einschließlich: C: /Users/NUC-Sonavex/.caffe/dependencies/libraries_v140_x64_py35_1.1.0/libraries/include, Bibliothek: glog)
- Protobuf gefunden: C: /Users/NUC-Sonavex/.caffe/dependencies/libraries_v140_x64_py35_1.1.0/libraries/bin/protoc.exe (gefundene Version "3.1.0")
- PROTOBUF Compiler gefunden: C: /Users/NUC-Sonavex/.caffe/dependencies/libraries_v140_x64_py35_1.1.0/libraries/bin/protoc.exe
- LMDB gefunden: C: /Users/NUC-Sonavex/.caffe/dependencies/libraries_v140_x64_py35_1.1.0/libraries/include
- lmdb gefunden (einschließlich: C: /Users/NUC-Sonavex/.caffe/dependencies/libraries_v140_x64_py35_1.1.0/libraries/include, Bibliothek: lmdb)
- LevelDB gefunden: C: /Users/NUC-Sonavex/.caffe/dependencies/libraries_v140_x64_py35_1.1.0/libraries/include
- LevelDB gefunden (einschließlich: C: /Users/NUC-Sonavex/.caffe/dependencies/libraries_v140_x64_py35_1.1.0/libraries/include, Bibliothek: leveldb)
- ZLIB gefunden: optimiert; C: /Users/NUC-Sonavex/.caffe/dependencies/libraries_v140_x64_py35_1.1.0/libraries/lib/caffezlib.lib; debug; C: /Users/NUC-Sonavex/.caffe/dependencies/librx__p_ .1.0 / library / lib / caffezlibd.lib (gefundene Version "1.2.8")
- Snappy gefunden: C: /Users/NUC-Sonavex/.caffe/dependencies/libraries_v140_x64_py35_1.1.0/libraries/include
- Snappy gefunden (einschließlich: C: /Users/NUC-Sonavex/.caffe/dependencies/libraries_v140_x64_py35_1.1.0/libraries/include, Bibliothek: snappy_static; optimiert; C: /Users/NUC-Sonavex/.caffe/dependencies/librx__p_ .1.0 / library / lib / caffezlib.lib; debug; C: /Users/NUC-Sonavex/.caffe/dependencies/libraries_v140_x64_py35_1.1.0/libraries/lib/caffezlibd.lib)
- - CUDA ist deaktiviert. Bauen ohne ...
- Found ViennaCL gehören: C: / DL / viennacl
CMake-Fehler: Die folgenden Variablen werden in diesem Projekt verwendet, jedoch auf NOTFOUND gesetzt.
Bitte stellen Sie sie ein oder stellen Sie sicher, dass sie in den CMake-Dateien richtig eingestellt und getestet sind:
OPENCL_INCLUDE_DIRS
Wird als Include-Verzeichnis in Verzeichnis C verwendet: / DL / caffe / scripts / build / CMakeFiles / CMakeTmp
_OPENCL_64_LIBRARIES
verknüpft mit dem Ziel "cmTC_7259e" im Verzeichnis C: / DL / caffe / scripts / build / CMakeFiles / CMakeTmp

CMake-Fehler bei cmake / Modules / FindOpenCL. cmake: 106 (TRY_COMPILE):
Fehler beim Konfigurieren des Testprojekt-Build-Systems.
Call Stack (letzter Anruf zuerst):
cmake / Modules / FindViennaCL. cmake: 37 (find_package)
cmake / Abhängigkeiten. cmake: 116 (find_package)
CMakeLists. txt: 127 (einschließen)

- Bei unvollständiger Konfiguration sind Fehler aufgetreten!
Siehe auch "C: /DL/caffe/scripts/build/CMakeFiles/CMakeOutput.log".
Siehe auch "C: /DL/caffe/scripts/build/CMakeFiles/CMakeError.log".
FEHLER: Konfiguration fehlgeschlagen

@ bxk-sonavex Wie oben erwähnt, wurden einige der Intel-spezifischen Patches nicht überprüft und zusammengeführt. Versuchen Sie es also mit github.com/01org/caffe inference-optimize branch. Im folgenden Wiki finden Sie detaillierte Anweisungen zur Intel-Plattform:
https://github.com/01org/caffe/wiki/clCaffe

@gongzg Das

@ naibaf7 Bedeutet das, dass dieser Zweig überhaupt nicht mit Intel iCPU unter Windows funktioniert? Wo finde ich dann eine Caffe-Version, die OpenCL unter Windows mit Intel iGPU unterstützt?

@gongzg Ist das clCaffe, das Sie vorgeschlagen haben, unter Windows mit Intel iGPU zu arbeiten?

@ bxk-sonavex Es wird funktionieren, aber nicht mit den Intel-Windungen, daher nicht optimale Leistung.
Im Moment denke ich, dass Sie das nicht finden können, aber ich arbeite an einer Lösung.
Ihr Problem hat mehr mit fehlenden OpenCL-Headern zu tun. Welches OpenCL haben Sie installiert? Das Intel SDK?

@ naibaf7 Ja, ich verwende Intel SDK v6.3. Ich habe hier eine Problemumgehung gefunden (https://github.com/BVLC/caffe/issues/5575) und sie funktioniert für mich. Jetzt habe ich den opencl-Zweig kompiliert. Außerdem habe ich meinen Build anhand des im Beispielordner bereitgestellten Beispiels mnist getestet. Bei Verwendung der CPU (durch Ändern von lenet_solver.prototxt) lief train_lenet problemlos und die endgültige Trainingsgenauigkeit beträgt 0,9902, was wie erwartet ist.

I1107 13: 53: 43.139747 3512 Solver. cpp: 421 ] Test Nettoausgabe # 0: Genauigkeit = 0,9902
I1107 13: 53: 43.139747 3512 Solver. cpp: 421 ] Test-Nettoleistung Nr. 1: Verlust = 0,0277191 (* 1 = 0,0277191 Verlust)

Bei Verwendung der GPU wurde jedoch das Fehlermeldungsfenster "caffe.exe funktioniert nicht mehr" angezeigt, und die Genauigkeit beträgt nur 0,1009.

I1107 14: 11: 15.651798 7872 Solver. cpp: 421 ] Test Nettoausgabe # 0: Genauigkeit = 0,1009
I1107 14: 11: 15.651798 7872 Solver. cpp: 421 ] Test-Nettoleistung Nr. 1: Verlust = 87,31 (* 1 = 87,31 Verlust)

Könnten Sie mir einige Hinweise geben, was passiert ist? Wie man es löst? Oder ist das die Sache, die @gongzg erwähnt hat?

Dies ist möglicherweise nicht hilfreich, da einige Teile der Intel OpenCL-Implementierung unter Windows nicht funktionieren. Aber daran zu arbeiten, wie du weißt :)

Die Orte, die ich gegenüber dem Standardwert build_win.cmd geändert habe, sind

set WITH_NINJA=1 
set CMAKE_BUILD_SHARED_LIBS=1 
set PYTHON_VERSION=3 
set RUN_INSTALL=1

Soll ich die USE_INTEL_SPATIAL einstellen?

Wenn USE_INTEL_SPATIAL = 1 gesetzt ist, kann der Zweig nicht kompiliert werden. Der Fehler ist

ninja: build gestoppt: Unterbefehl fehlgeschlagen.

@ naibaf7 Die 01org-Version funktioniert jetzt unter Windows einwandfrei. Ich bin immer noch mit anderen Dingen beschäftigt, daher habe ich nicht genug Zeit, um alle Korrekturen an diesen OpenCL-Zweig zu senden. Werde das tun, wenn ich in naher Zukunft etwas Zeit habe. @ bxk-sonavex Sie können die 01org-Version auf der Wiki-Seite ausprobieren. Wenn Sie darauf ein Problem haben, lassen Sie es mich bitte wissen.

@gongzg Danke! Nach den Anweisungen auf https://github.com/01org/caffe/wiki/clCaffe#windows -support-for-intel-gen-plattform wurde folgende Fehlermeldung angezeigt:

fatal error C1083: Cannot open include file: 'caffe/proto/caffe.pb.h': No such file or directory

Zu Ihrer Information:
https://github.com/ptillet/isaac.git ist nur mit NVIDIA-Hardware kompatibel und kann nicht einmal kompiliert werden. Daher klone ich https://github.com/intel/isaac.

AKTUALISIEREN:
Manuell generiert die Dateien über

build\libraries\bin\protoc.exe src\caffe\proto\caffe.proto --cpp_out=.\

Angeblich sollen die Dateien automatisch generiert werden.

Dann habe ich folgenden Fehler bekommen:

"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 und das dritte Mal erstellt ...

@ bxk-sonavex Es scheint, dass es bereits erfolgreich erstellt wurde. Sie müssen die DLL-Dateien in das Verzeichnis der ausführbaren Dateien kopieren:
""
Beachten Sie, dass Sie nach erfolgreichem Abschluss der Erstellung, bevor Sie versuchen, die Anwendung auszuführen, die Dateien dl.dll (dlfcn) und isaac.dll (isaac) in dasselbe Verzeichnis kopieren oder in ein Systemverzeichnis ablegen müssen.
""

@gongzg Die Ordner der beiden DLLs im

"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

Ich verwende Intel Iris Plus Graphics 650 und intel_sdk_for_opencl_setup_6.3.0.1904. Irgendwelche Gedanken und Lösungen?

@ bxk-sonavex Sie müssen Ihren Intel Graphics-Treiber auf die neueste Version aktualisieren.

@gongzg Danke, das hat den Kompilierungsfehler behoben. Beim Ausführen der Tests habe ich eine ganze Reihe von Fehlern erhalten (möglicherweise nicht alle abgefangen)

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

Sollten diese Fehler betroffen sein?

Wie auch immer, ich teste den Build anhand des mnist-Beispiels. Es ist extrem langsam , sogar viel langsamer als das ursprüngliche Caffe mit CPU. Und es gibt einige Warnungen (mehrmals wiederholt)

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'

Irgendeine Idee?

@ bxk-sonavex

Warum arbeitest du vorerst nicht mit Caffe unter Linux? Ich denke, Entwickler konzentrieren sich mehr darauf, dass der FP16-, INT8-Code usw. reibungslos funktioniert, insbesondere naibaf7 (david).

Die richtige Windows-Unterstützung wird irgendwann kommen.

Nur ein Vorschlag.

@atlury Ich würde gerne !!! Aber unser System ist Windows 10 + Intel Iris ... Haben Sie eine Idee, wann die Windows-Unterstützung kommen wird? Oder funktioniert eine andere DL-Plattform (mit GPU)?

@gongzg Ich möchte Sie nur mit der Leistung aktualisieren
CPU: 7 Minuten 33 Sekunden, Genauigkeit = 0,9914
GPU: 29 Minuten 34 Sekunden, Genauigkeit = 0,8406

Ich frage mich, was die Leistung unter Linux ist. Dann könnte ich eine grundlegende Vorstellung davon haben, wie schnell die Verwendung der Intel GPU (OpenCL) im Vergleich zur CPU ist. Vielen Dank!!

@ bxk-sonavex

Ben hast du die opencl-Kernel aktiviert? Haben Sie versucht, INTEL_SPATIAL zu verwenden?

@atlury Was meinst du mit "aktiviere die OpenCl-Kernel"? Ja, ich habe die Anweisungen hier befolgt (https://github.com/01org/caffe/wiki/clCaffe#how-to-build) und in der Befehlszeile "USE_INTEL_SPATIAL = 1 gesetzt" (die Datei build_win.cmd nicht direkt geändert) ).

AKTUALISIEREN:
INFO: ============
INFO: Zusammenfassung:
INFO: ============
INFO: MSVC_VERSION = 14
INFO: WITH_NINJA = 0
INFO: CMAKE_GENERATOR = "Visual Studio 14 2015 Win64"
INFO: CPU_ONLY = 0
INFO: USE_CUDA = 0
INFO: USE_CUDNN = 0
INFO: USE_GREENTEA = 1
INFO: USE_LIBDNN = 1
INFO: USE_OPENMP = 0
INFO: USE_INDEX64 =
INFO: USE_INTEL_SPATIAL = 1
INFO: USE_ISAAC = 1
INFO: CMAKE_CONFIG = Release
INFO: USE_NCCL = 0
INFO: CMAKE_BUILD_SHARED_LIBS = 0
INFO: PYTHON_VERSION = 2
INFO: BUILD_PYTHON = 0
INFO: BUILD_PYTHON_LAYER = 0
INFO: BUILD_MATLAB = 0
INFO: PYTHON_EXE = "Python"
INFO: RUN_TESTS = 1
INFO: RUN_LINT = 0
INFO: RUN_INSTALL = 1
INFO: ============

@ bxk-sonavex

Ben müssen Sie INTEL_SPATIAL für alle Faltungsebenen in Ihre deploy.proto aufnehmen. Ich habe es persönlich in Echtzeit unter Linux getestet.

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

"Ich habe auf einem Intel-TV-Stick, einer Webcam mit Intel Spatial-Kerneln und einem 19-Lagen-Vgg-Modell getestet. Ich kann eine Echtzeitklassifizierung und alles unter 3,5 Watt erhalten."

Windows sollte auch funktionieren.

@ bxk-sonavex für das Problem in der 01org-Version, bitte öffnen Sie dort ein Problem. Es gibt einige Testfehler aufgrund von FP16-Präzisionsproblemen bei diesen Gradiententestfällen, die nicht kritisch sind. Die Leistung ist extrem langsam, was durch die automatische Abstimmung verursacht werden sollte. Es sollte viel schneller sein, wenn Sie es erneut ausführen. Sie können zunächst versuchen, mithilfe des Builds / tools / caffe die Vorwärtsleistung für AlexNet zu messen.

Übrigens ist mir gerade aufgefallen, dass @CNugteren vor einigen Tagen eine neue Version 1.2.0 seiner automatisch abgestimmten CLBlast-Bibliothek veröffentlicht hat. Ich habe es überprüft und es scheint mit Caffe auf meinem Windows 10 Lenovo Laptop mit alter Intel 4400 GPU (sowie unter Linux) zu funktionieren - daher kann es eine nette Ergänzung zu Caffe sein, da die vorherige CLBlast-Version unter Windows fehlerfrei war!

Wenn Sie interessiert sind, können Sie die Geschwindigkeit von Caffe mit LibDNN und CLBlast beispielsweise unter SqueezeDet wie folgt überprüfen (das gleiche Verfahren unter Windows und 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

Es wird einige Zeit dauern, bis CK versucht, Ihre Umgebung und Compiler zu erkennen.
und erstellt dann alle erforderlichen Abhängigkeiten von Ihrem Computer neu.

Danach können Sie einfach SqueezeDet installieren und die interne Zeit ausführen:

$ ck install package:caffemodel-deepscale-squeezenet-1.1
$ ck run program:caffe --cmd_key=time_gpu

Der erste Lauf kann aufgrund der Kernel-Kompilierung und des Caching etwas langsam sein, sodass der zweite Lauf viel schneller ist!

Sie können auch die Bildklassifizierung vergleichen:

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

Nicht mit Intel verwandt, sondern nur ein Hinweis darauf, dass beim Kompilieren von Caffe mit CLBlast 1.2.0 für Android ARM64 mit Android GCC 4.9.x ("to_string" in der Standardklasse nicht gefunden) ein kleiner Fehler zu sein scheint:

$ 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

Es wäre schön, das Problem zu beheben, da CLBlast 1.1.0 unter Android einwandfrei funktioniert. In diesem Fall funktioniert es mit Caffe auf allen Plattformen.

Ich hoffe, es hilft weiter und wünsche Ihnen ein schönes Wochenende!

Es scheint einen kleinen Fehler beim Kompilieren von Caffe mit CLBlast 1.2.0 für Android ARM64 unter Verwendung von Android GCC 4.9.x zu geben ("to_string" wurde in der Standardklasse nicht gefunden):

Sie sind sich nicht sicher, ob Sie meinen, dass dies ein Fehler in CLBlast oder in Caffe ist? In jedem Fall hat CLBlast dies in einem speziellen Android-Header implementiert. Vielleicht könnte das auch in Caffe verwendet werden?

@CNugteren - Ich habe gerade überprüft und das Problem ist nicht in CLBlast. Ich habe gerade einen Patch im CK vergessen, der LibDNN für Android reparierte (also meine Schuld). Ich habe es hinzugefügt (https://github.com/dividiti/ck-caffe/blob/master/package/lib-caffe-bvlc-opencl-clblast-universal/patch.android/android.fgg.patch3) und es ist jetzt Es ist möglich, Caffe mit CLBlast und libDNN zu kompilieren. Ich habe die Klassifizierungs- und Benchmarking-Beispiele auf meinem Samsung S7 überprüft - funktioniert einwandfrei. Entschuldigen Sie diesen Fehlalarm und danke, dass Sie einen neuen CLBlast veröffentlicht haben. Ich kann ihn jetzt in Caffe unter Linux, Windows und Android verwenden.

@gfursin Ist dies eine Version mit CPU oder GPU (OpenCL)? Ich dachte, es heißt, dass OpenCL noch nicht unter Windows funktioniert (oder zumindest noch nicht mit Intel iGPU). Was verwenden Sie unter Windows?

@ bxk-sonavex

Ben entschuldigt sich für die Verzögerung bei der Antwort. Ich war weg.

Um @ naibaf7 zu zitieren
"Die Faltungsmethode (" Engine ") kann alternativ in der Netzwerk-Prototxt-Datei ausgewählt / überschrieben werden."

Fügen Sie daher den Eintrag "engine: INTEL_SPATIAL" zu allen Faltungsschichtspezifikationen hinzu.

Nehmen Sie als Beispiel AlexNet, bearbeiten Sie die Datei mit dem Namen $ CAFFE_ROOT / models / bvlc_alexnet / train_val.prototxt und fügen Sie die folgende Zeile hinzu, damit die Ebene conv1 mithilfe der räumlichen Faltung berechnet wird. Ändern Sie ebenfalls andere Ebenen

 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
     }
   }
 }

Edit: Mein schlechtes ich sehe du hast einen anderen Thread geöffnet und scheint ein bisschen weiter fortgeschritten zu sein.

@ bxk-sonavex - Ich verwende die Caffe OpenCL-Version (mit libDNN und CLBlast) unter Windows mit alter Intel 4400-GPU OHNE Intel Spatial - es scheint gut zu funktionieren, ist aber möglicherweise nicht optimal. Hier ist die Liste der Caffe-Geräte ("ck run program: caffe --cmd_key = query_gpu_opencl"):
output_caffe_opencl_devices.txt

Hier ist die Ausgabe der Bildklassifizierung unter Windows mit der oben genannten Caffe OpenCL-Version und GoogleNet:
output_caffe_opencl_image_classification.txt

In dieser Phase überprüfe ich hauptsächlich die Inferenz- / Objekterkennung (wir versuchen, die DNN-Installation, das Benchmarking und die Optimierung auf allen möglichen Plattformen zu vereinheitlichen), sodass ich andere Caffe-Funktionen und -Modelle unter Windows mit OpenCL nicht wirklich betont habe ...

Ich habe auch gerade versucht, Caffe OpenCL mit Intel Spatial ON zu kompilieren ("ck-Installationspaket: lib-caffe-bvlc-opencl-libdnn-clblast-universal --env.USE_INTEL_SPATIAL = ON") und beobachte die gleichen 2 Build-Fehler wie zuvor früher berichtet von @atlury):
output_caffe_build_error_with_intel_spatial.txt

Gibt es auch ein Build-Skript für Linux (Ubuntu 16.04)?. Beim Kompilieren werden Fehler angezeigt

@rachithayp Befolgen Sie die Anweisungen sorgfältig, es funktioniert auch bei 18.0x-Serien. Wir haben es getestet.

Hallo @rachithayp . Nur ein Hinweis, dass Sie wahrscheinlich den Kernel patchen müssen, damit Intel OpenCL unter Ubuntu 16.04 funktioniert: https://github.com/dividiti/ck-caffe/wiki/Installation#Intel_CPUGPU_Linux .

Ich habe es vor einigen Wochen geschafft, den OpenCL-Zweig von Caffe auf meinem Ubuntu 18.04 (Lenovo T470p-Laptop mit Intel-GPU) ohne Patch-Kernel und mit dem neuesten Intel OpenCL über CK zu erstellen:

$ 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 versucht, Ihre verfügbaren Compiler, OpenCL-Bibliotheken und andere Abhängigkeiten zu erkennen, und ruft cmake für Caffe auf. Wenn der Build erfolgreich ist, können Sie die Installation mit CK Virtual Env überprüfen:

$ ck show env
$ ck virtual env --tags=lib,caffe
> python
import caffe

Sie können auch eine Beispielbildklassifizierung wie folgt versuchen:

$ ck compile program:caffe-classification-opencl --speed
$ ck run program:caffe-classification-opencl

Viel Glück.

cc @ ens-lg4 und @psyhtest ...

@atlury Ich konnte mit dem folgenden cmake kompilieren:
cmake .. -DUSE_CUDA = OFF -DBUILD_docs = 0 -DOPENCL_LIBRARIES = <> -DOPENCL_INCLUDE_DIRS = <>

Der Versuch, mit INTEL_SPATIAL_ON zu kompilieren, führt jedoch zu folgenden Fehlern:
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: Fehler: 'LibDNNConvSpatial' benennt keinen Typ
LibDNNConvSpatial:: LibDNNConvSpatial (LibDNNConvConfig config) {
^
/ home / intel / Documents / caffe_src / opencl_caffe / src / caffe / libdnn / libdnn_conv_spatial. cpp: 117 : 25: Fehler: Erwarteter Initialisierer vor dem Token '<'
Zeichenfolge LibDNNConvSpatial:: generate_fw_defs () {

Irgendeine Idee, was falsch sein könnte? Außerdem gibt es im opencl-Zweig keinen Ordner include / caffe / greentea, daher habe ich ihn von " https://github.com/01org/caffe " kopiert.

@rachithayp
Können Sie die Anleitung aus dem folgenden Kapitel ausprobieren? Es ist ein grober Ausschnitt aus dem Installationskapitel aus unserem kommenden Buch über opencl caffe. Vielen Dank an naibaf7

Ich hoffe, es wird etwas Licht werfen und Ihnen bei Ihren Bemühungen um ein offenes Café helfen.

python-deep-learning-installation-chap.pdf

@ bxk-sonavex - Ich verwende die Caffe OpenCL-Version (mit libDNN und CLBlast) unter Windows mit alter Intel 4400-GPU OHNE Intel Spatial - es scheint gut zu funktionieren, ist aber möglicherweise nicht optimal. Hier ist die Liste der Caffe-Geräte ("ck run program: caffe --cmd_key = query_gpu_opencl"):
output_caffe_opencl_devices.txt

Hier ist die Ausgabe der Bildklassifizierung unter Windows mit der oben genannten Caffe OpenCL-Version und GoogleNet:
output_caffe_opencl_image_classification.txt

In dieser Phase überprüfe ich hauptsächlich die Inferenz- / Objekterkennung (wir versuchen, die DNN-Installation, das Benchmarking und die Optimierung auf allen möglichen Plattformen zu vereinheitlichen), sodass ich andere Caffe-Funktionen und -Modelle unter Windows mit OpenCL nicht wirklich betont habe ...

Ich habe auch gerade versucht, Caffe OpenCL mit Intel Spatial ON zu kompilieren ("ck-Installationspaket: lib-caffe-bvlc-opencl-libdnn-clblast-universal --env.USE_INTEL_SPATIAL = ON") und beobachte die gleichen 2 Build-Fehler wie zuvor früher berichtet von @atlury):
output_caffe_build_error_with_intel_spatial.txt

läuft dein HD 4400 mit caffe schneller als mit der CPU?
Ich habe clCaffe kompiliert und auf meinem HD 5500 ausgeführt, aber es ist fünfmal langsamer als die CPU (i3 5005U).
Ich weiß nicht warum.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen