Caffe: Instructions d'installation appropriées de la branche OpenCl Caffe pour Intel GPU

Créé le 16 déc. 2016  ·  87Commentaires  ·  Source: BVLC/caffe

Je suis désolé de devoir ouvrir cela, mais à la fois dans la branche github opencl et les forums Google n'ont pas d'instructions d'installation étape par étape (mises à jour) pour installer Caffe Opencl sur un processeur graphique Intel avec des pilotes Intel Opencl, en particulier pour quelqu'un de nouveau.

(a) Ces instructions fonctionnent-elles toujours?
cmake -DUSE_GREENTEA = ON -DUSE_INTEL_SPATIAL = ON -DUSE_ISAAC = ON chemin_à_la_source_caffe
faire -jn
make -jn runtest

sur cette branche https://github.com/BVLC/caffe/tree/opencl? ou alors

Qu'en est-il de?
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 -DBUIL OFFD_matlabaffe = OFF -DBUIL OFFD_matlabaffe = OFF -DBUILD_matlabaffe

(b) Atlaspack est-il toujours nécessaire pour compiler opencl-caffe quand clblas est là ??? Il ne cesse de demander atlaspack ???

(c) qu'en est-il de Vienna CL? Cette branche dépend-elle encore d'eux? Est-ce nécessaire?

(D) À quoi sert libdnn? au lieu de ?

(e) Qu'en est-il d'ISAAC?

(f) Par exemple, la branche Windows parle "Si CUDA n'est pas installé, Caffe utilisera par défaut une version CPU_ONLY" Cela signifie-t-il qu'il ne fonctionnera pas en mode Opencl dans les versions non-cuda?

Veuillez mettre à jour et fournir des instructions étape par étape
Merci

OpenCL question windows

Commentaire le plus utile

@atlury
Il y a une section Windows dans le Readme qui guide comment compiler et installer sur Windows.
La seule étape manquante dans cette description est le téléchargement de ViennaCL-DEV:
https://github.com/viennacl/viennacl-dev

Il peut être placé dans n'importe lequel des chemins où CMake le trouvera, par exemple à côté du dossier dans lequel vous avez cloné Caffe.

Les instructions de construction sont différentes des instructions Linux, car il s'agit d'un script qui s'occupe automatiquement de la configuration de CMake et du téléchargement des dépendances.

Habituellement, il n'y a pas besoin de s'inquiéter de la configuration sous Windows, car il est conçu pour fonctionner. Cependant, je vais vous donner une explication rapide:
(a) Non et non. Utilisez scripts/build_win.cmd comme décrit dans le Readme.
(b) Oui, peu importe comment vous le compilez, un CPU BLAS est toujours nécessaire. Mais build_win.cmd s'en chargera pour vous, et sa configuration par défaut est d'utiliser OpenBLAS.
(c) Oui, ViennaCL est nécessaire, clonez à partir d'ici: https://github.com/viennacl/viennacl-dev
(d) LibDNN est le moteur de convolution par défaut pour les GPU OpenCL, en remplacement de cuDNN.
Il existe également des noyaux Intel supplémentaires pour les GPU Intel disponibles et activés par défaut.
(e) ISAAC, clBLAS et CLBlast sont strictement facultatifs. Vous devez les compiler séparément sous Windows et les ajouter aux dépendances si vous souhaitez les utiliser. Je ne garantis ni ne soutiens la compilation de l'une de ces bibliothèques, elles sont prises en charge par les responsables de projet respectifs.
(f) Non, sur la branche OpenCL, ce n'est pas vrai. La valeur par défaut ici est USE_GREENTEA = ON, USE_CUDA = OFF, CPU_ONLY = OFF.

Je mettrai à jour le fichier Lisez-moi après Noël lorsque j'aurai des vacances. Je n'ai malheureusement pas le temps pour une étape par étape détaillée pour le moment.
CC: @willyd

Tous les 87 commentaires

@atlury
Il y a une section Windows dans le Readme qui guide comment compiler et installer sur Windows.
La seule étape manquante dans cette description est le téléchargement de ViennaCL-DEV:
https://github.com/viennacl/viennacl-dev

Il peut être placé dans n'importe lequel des chemins où CMake le trouvera, par exemple à côté du dossier dans lequel vous avez cloné Caffe.

Les instructions de construction sont différentes des instructions Linux, car il s'agit d'un script qui s'occupe automatiquement de la configuration de CMake et du téléchargement des dépendances.

Habituellement, il n'y a pas besoin de s'inquiéter de la configuration sous Windows, car il est conçu pour fonctionner. Cependant, je vais vous donner une explication rapide:
(a) Non et non. Utilisez scripts/build_win.cmd comme décrit dans le Readme.
(b) Oui, peu importe comment vous le compilez, un CPU BLAS est toujours nécessaire. Mais build_win.cmd s'en chargera pour vous, et sa configuration par défaut est d'utiliser OpenBLAS.
(c) Oui, ViennaCL est nécessaire, clonez à partir d'ici: https://github.com/viennacl/viennacl-dev
(d) LibDNN est le moteur de convolution par défaut pour les GPU OpenCL, en remplacement de cuDNN.
Il existe également des noyaux Intel supplémentaires pour les GPU Intel disponibles et activés par défaut.
(e) ISAAC, clBLAS et CLBlast sont strictement facultatifs. Vous devez les compiler séparément sous Windows et les ajouter aux dépendances si vous souhaitez les utiliser. Je ne garantis ni ne soutiens la compilation de l'une de ces bibliothèques, elles sont prises en charge par les responsables de projet respectifs.
(f) Non, sur la branche OpenCL, ce n'est pas vrai. La valeur par défaut ici est USE_GREENTEA = ON, USE_CUDA = OFF, CPU_ONLY = OFF.

Je mettrai à jour le fichier Lisez-moi après Noël lorsque j'aurai des vacances. Je n'ai malheureusement pas le temps pour une étape par étape détaillée pour le moment.
CC: @willyd

@ naibaf7
Merci pour la réponse rapide. Qu'en est-il des instructions Linux?

OpenCL BLAS et ISAAC sont-ils toujours nécessaires?
https://github.com/01org/caffe/wiki/clCaffe

@atlury
Deux façons sous Linux: utilisez CMAKE et utilisez 'make all -j8' ou copiez le makefile.config.example dans makefile.config et compilez en utilisant make all -j8; make pycaffe -j8; make runtest -j8 .
Notez que les résultats compilés de Makefile et CMAKE sont légèrement différents sous Linux. Le Makefile est plus ancien, mais plus simple, et le CMAKE est plus complexe.

Cette branche n'est pas la même que https://github.com/01org/caffe/wiki/clCaffe
il a donc des exigences différentes. Cependant, les noyaux spatiaux Intel de là ont été fusionnés dans cette branche.

Exigences strictes:

  • ViennaCL, OpenCL et les exigences normales de Caffe telles que Gflags, HDF5, etc.
  • Vous pouvez obtenir le SDK OpenCL avec CUDA, AMD APP SDK ou Intel OpenCL SDK. Cela est vrai pour Windows et Linux. Mac OS X devrait fournir sa propre implémentation OpenCL.

Exigences facultatives:

  • clBLAS (d'AMD)
  • CLBlast (de @cnugteren)
  • ISAAC
  • cuDNN
  • CUDA

Merci @ naibaf7
Et aussi pour Linux, LIBDNN est pour la plupart des puces nVidia et AMD uniquement? Et nous devrions utiliser Intel Spatial pour les iGPU Intel?

@atlury
Intel Spatial ne prend pas en charge la propagation arrière efficace et pas toutes les formes de convolutions, mais oui, c'est la propagation avant la plus rapide sur les iGPU Intel.
Mais je vous suggère d'essayer les deux et de vérifier ce qui fonctionne le mieux pour vos réseaux et vos appareils.

@ naibaf7

Fabian, la compilation de Windows sera-t-elle compatible avec Mingw-64. Veuillez me le faire savoir. Si des instructions spécifiques à cela? Le studio Mocosoft est trop gonflé.

@atlury Actuellement non, pas à ma connaissance. @willyd est le principal contributeur et mainteneur de windows building, alors peut-être qu'il peut répondre à cela.
Bien que Microsoft Studio puisse être un peu gonflé, c'est assez pratique car @willyd a précompilé toutes les dépendances de VS2015 et VS2013. J'imagine donc que l'utilisation de mingw-64 demande beaucoup plus de travail.

Je n'ai pas l'intention de prendre en charge mingw-64 car CUDA ne prend pas en charge mingw en tant que compilateur hôte sur Windows. Cela étant dit, je souhaite la bienvenue à tous les PR liés au support mingw64 s'ils n'ajoutent pas trop de complexité à la construction.

@willyd
Cool, ce que je pensais. Je suis dans ce cas favorable à la simplicité, car le support de Windows sans MinGW64 ne me semble pas être un écueil majeur. Il est quelque peu préférable d'utiliser le compilateur standard avec chaque système d'exploitation respectif.
Je suis surtout préoccupé par la surcharge du support lorsque les gens utilisent des configurations de construction délicates.

@ naibaf7

La version Windows OpenCl inclut-elle la prise en charge du moteur: SPATIAL? Lorsque j'inclus moteur: SPATIAL ou moteur: INTEL_SPATIAL, il obtient l'une des erreurs suivantes

_Layer conv1 a un moteur inconnu._
_Erreur lors de l'analyse du format texte caffe.NetParameter: 18: 3: Valeur d'énumération inconnue de "SPATIAL" pour le champ "engine".

Le wiki est déroutant read.me https://github.com/BVLC/caffe/tree/opencl

Il mentionne à la fois _add entry engine: SPATIAL_ à toutes les spécifications de la couche de convolution. ainsi que _ "moteur: INTEL_SPATIAL <-------------------------- cette ligne!" _

Lequel?

Et cela fonctionne bien sans le moteur: spatial en prototxt.

_opencl-caffe-test.exe imagenet_deploy.prototxt bvlc_reference_caffenet.caffemodel imagenet_mean.binaryproto synset_words.txt truck.jpg
Utiliser le GPU avec l'ID d'appareil 0
---------- Prédiction pour truck.jpg ----------
0.9872 - "n03417042 camion à ordures, charrette à poussière"
0,0110 - «n04467665 remorque camion, semi-remorque, plate-forme de camionnage, gréement, camion articulé, semi»
0,0013 - "n03496892 moissonneuse, moissonneuse"
0,0002 - "n04428191 batteuse, batteuse, batteuse"
0,0001 - "n04461696 dépanneuse, dépanneuse, dépanneuse" _

Voici également quelques «autres» observations
a) Fonctionne mieux lorsqu'il est compilé en tant que DLL au lieu de statique. Résout en particulier l'erreur _ "La vérification a échoué: registry.count (type) == 1 (0 vs 1) Type de calque inconnu" _ (visual studio 2015)
b) Il ne semble pas prendre OpenCL.lib, donc le contournement consiste à le copier manuellement du dossier opencl-sdk dans le dossier de construction (à quoi s'attend-il que le nom de la variable de chemin soit?)
c) Les bibliothèques extraites dans le dossier de construction pourraient être compilées au plus tard (par exemple, opencv 3.2, etc.)

Plus loin

C: \ Downloads \ xxx.caffe-opencl-build \ bin> caffe device_query
I0108 12: 35: 04.885713 19872 commun. cpp: 382 ] Nombre total de périphériques: 3

I0108 12: 35: 04.888244 19872 commun. cpp: 383 ] Périphériques CUDA: 0
I0108 12: 35: 04.889102 19872 commun. cpp: 384 ] Périphériques OpenCL: 3

I0108 12: 35: 04.889681 19872 commun. cpp: 408 ] ID de périphérique: 0

I0108 12: 35: 04.890744 19872 commun. cpp: 410 ] Backend de l'appareil: OpenCL
I0108 12: 35: 04.891839 19872 commun. cpp: 412 ] Détails du backend: Intel (R) Corporation: OpenCL 1.2
I0108 12: 35: 04.893450 19872 commun. cpp: 414 ]
I0108 12: 35: 04.894731 19872 commun. cpp: 416 ] Nom: Intel (R) HD Graphics 4400
I0108 12: 35: 04.895730 19872 commun. cpp: 418 ] Mémoire globale totale: 1708759450

I0108 12: 35: 04.897233 19872 commun. cpp: 408 ] ID de périphérique: 1
I0108 12: 35: 04.898505 19872 commun. cpp: 410 ] Backend de l'appareil: OpenCL
I0108 12: 35: 04.899590 19872 commun. cpp: 412 ] Détails du backend: Intel (R) Corporation: OpenCL 1.2
I0108 12: 35: 04.901091 19872 commun. cpp: 414 ]
I0108 12: 35: 04.902592 19872 commun. cpp: 416 ] Nom: Processeur Intel (R) Core (TM) i5-4210U à 1,70 GHz
I0108 12: 35: 04.904093 19872 commun. cpp: 418 ] Mémoire globale totale: 8513761280

I0108 12: 35: 04.905594 19872 commun. cpp: 408 ] ID de périphérique: 2
I0108 12: 35: 04.907114 19872 commun. cpp: 410 ] Backend de l'appareil: OpenCL
I0108 12: 35: 04.908617 19872 commun. cpp: 412 ] Détails du backend: Intel (R) Corporation: OpenCL 2.1
I0108 12: 35: 04.910100 19872 commun. cpp: 414 ]
I0108 12: 35: 04.911598 19872 commun. cpp: 416 ] Nom: Processeur Intel (R) Core (TM) i5-4210U à 1,70 GHz
I0108 12: 35: 04.913100 19872 commun. cpp: 418 ] Mémoire globale totale: 8513761280

Cela me semble bien, bien qu'il semble que vous ayez à la fois un OpenCL 2.1 plus récent et un OpenCL 1.2 plus ancien installé. Comme il s'agit toujours d'un processeur Haswell, je ne suis pas sûr qu'Intel dispose déjà d'un pilote 2.1 / 2.0 pour votre puce. Mais vous devriez essayer de mettre à jour votre SDK OpenCL pour votre GPU.

Quoi qu'il en soit, si vous souhaitez utiliser INTEL_SPATIAL, vous devez également l'activer au moment de la compilation. Après cela, il devient le moteur standard sur les périphériques Intel GPU.
Vous pouvez le faire ici:
https://github.com/BVLC/caffe/blob/opencl/scripts/build_win.cmd#L82
(scripts / build_win.cmd, ligne 82)

cependant, le noyau spatial Intel n'a pas encore été testé de manière approfondie sur Windows.

Je vais essayer de mettre à jour opencl sdk et je viens de voir vos commits, je vais essayer de les activer, les recompiler et les tester et faire un rapport.
Merci

Okie avec if NOT DEFINED USE_INTEL_SPATIAL set USE_INTEL_SPATIAL = 1

Build_win.cmd renvoie l'erreur suivante.

C: \ Downloads \ caffe-opencl \ buildALL_BUILD.vcxproj "(cible par défaut) (1) ->
C: \ Downloads \ caffe-opencl \ build \ src \ caffe \ caffe.vcxproj "(cible par défaut) (3) ->

(Cible ClCompile) -> C: \ Downloads \ caffe-opencl \ src \ caffe \ layers \ conv_layer_spatial.cpp (1453): erreur C2572: 'caffe :: ConvolutionLayerSpatial:: swizzleWeights ': redéfinition de l'argument par défaut: paramètre 1 [C: \ Downloads \ caffe-opencl \ build \ src \ caffe \ caffe.vcxproj]

C: \ Downloads \ caffe-opencl \ src \ caffe \ layers \ conv_layer_spatial.cpp (1458): erreur C2572: 'caffe :: ConvolutionLayerSpatial:: swizzleWeights ': redéfinition de l'argument par défaut: paramètre 1 [C: \ Downloads \ caffe-opencl \ build \ src \ caffe \ caffe.vcxproj]

Ok, je vais regarder ça.
@gongzg pour référence.

Salut tout le monde,
Merci pour votre excellent travail!
J'ai réussi à compiler et à exécuter caffe-opencl sur Windows et Intel HD 4400 avec USE_INTEL_SPATIAL = 0 (le temps de caffe est malheureusement environ 2x plus lent que d'exécuter caffe-cpu sur i5-4210U à 2 cœurs, sauf si je fais quelque chose de mal). Cependant, lors de la compilation avec USE_INTEL_SPATIAL = 1, j'obtiens également la même erreur que @atlury (et je crois que j'ai le même matériel sur mon Lenovo X240). Je suis curieux de voir si l'utilisation d'INTEL_SPATIAL aidera à rendre l'exécution de caffe-opencl plus rapide sur ce GPU que sur un CPU ...

@gfursin Il devrait, par une large marge. LibDNN s'attend à ce que le GPU ait une architecture de mémoire différente de celle des puces Intel, de sorte qu'il ne fonctionne pas de manière optimale pour le moment.
Nous étudions actuellement comment réparer les noyaux Intel afin qu'ils fonctionnent également sur Windows.

Super! Merci beaucoup!

Au fait, @atlury , lors de la sélection des périphériques 1 et 2, "caffe time" s'est écrasé à chaque fois après environ 10 secondes - avez-vous eu le même comportement? Merci!

@gfursin Non, je n'ai pas couru le temps de café (je vais essayer de faire un rapport). J'étais frustré par Windows et je suis ensuite passé à Ubuntu 17.04. Voir mon commentaire ici sur Linux. Cela fonctionne avec spatial et j'obtiens plus de 30 fps (VGG) sous Linux. https://github.com/BVLC/caffe/pull/5165

Il y a un article d'Intel publié ici (clcaffe)
http://www.slideshare.net/IntelSoftware/clcaffe-unleashing-the-power-of-intel-graphics-for-deep-learning-acceleration

Où les benchmarks suivants (page 28 GT3 GPU) ont été pris en charge avec INTEL SPATIAL dans les couches de convolution.
Alexnet - 290 images / seconde
GoogleNet - 77 images / seconde
VGGA - 55 images / seconde
Overfeat - 91 images / seconde

Je veux vraiment tester la détection d'objets (pas seulement la classification) en utilisant INTEL SPATIAL mais il n'y a aucun exemple en tant que tel nulle part. Je doute que les couches Caffe soient encore prêtes? @ naibaf7 ?

@gongzg y a-t-il un code source pour les tests ci-dessus que nous pouvons essayer?

De plus, LiDNN a été conçu pour fonctionner avec tiny-dnn, ce qui est passionnant (bien qu'il n'y ait pas beaucoup de modèles pré-entraînés). Je veux également tester la quantification et voir comment opencl peut y aider (8 bits, XNOR, etc.). Enfin la détection d'objets en opencl en temps réel serait géniale !!! j'espère que @ naibaf7 peut jeter un peu de lumière.

@atlury Je vous reviendrai la semaine prochaine concernant les questions les plus difficiles.
Intel spatial est automatiquement utilisé lorsque vous compilez avec l'option activée.
Pour la segmentation et la détection d'objets, je vous suggère de lire mon article et rapport technique ISBI 2016. J'ai décrit ici les architectures SK-Net et U-Net qui peuvent le faire très rapidement. AlexNet peut être converti en un tel SK-Net.
Vous devez cependant utiliser LibDNN pour maintenir une faible utilisation de la mémoire dans SK / U-Net.

Wow, je viens de lire votre article ... le concept des noyaux Strided semble très impressionnant. Ne pas détourner ce fil mais tout cela devra éventuellement être testé dans Opencl sous Windows mais avant cela ...

Est-ce une implémentation uniquement en python? Pas de C ++? Existe-t-il des modèles pré-formés? Est-ce là que se trouve le dépôt https://github.com/naibaf7/PyGreentea/tree/master/examples ? Oui, je vais utiliser LibDNN ...

@atlury Oui, l'interface d'origine était C ++ mais nous sommes passés à python. Cependant, si vous souhaitez fournir les données via HDF5 ou votre propre interface C ++, cela fonctionnera également. Utilisez simplement les codes de générateur de réseau que je fournis en python pour vous aider à créer le prototxt correct pour les réseaux de type SK / U.
Voici un rapport technique légèrement plus ancien mais complet: https://arxiv.org/abs/1509.03371 , il comprend des chiffres de performance avant la programmation de LibDNN.
Nous ne fournissons pas de modèles pré-entraînés à ce stade car les ensembles de données (classification EM) sur lesquels nous les utilisons et nos résultats ne sont pas encore publiés.

@atlury Certaines des données de référence sont mesurées en utilisant les benchmarks convnet et vous pouvez les reproduire sur votre plateforme. Nous n'avons pas d'autres exemples à partager publiquement actuellement.

@atlury - merci beaucoup pour les références! J'ai eu de nombreux problèmes pour installer et utiliser OpenCL pour Intel GPU sur Ubuntu dans le passé (j'ai dû recompiler le noyau Linux), mais peut-être que les derniers pilotes fonctionneront correctement - il faut vérifier cela. Au fait, dans # 5165, vous avez un instantané d'une webcam + classification Caffe avec mesures FPS - puis-je vous demander quel programme avez-vous utilisé pour cela? Merci beaucoup!!!

@gfursin

Veuillez faire ce qui suit.

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

  2. Installez opencl SDK et opencl run time from (le correctif du noyau n'est pas requis)
    https://software.intel.com/en-us/intel-opencl/download
    https://software.intel.com/en-us/articles/opencl-drivers

  3. Télécharger https://github.com/BVLC/caffe/tree/opencl
    (a) Veuillez compiler avec Viennacl, libdnn, intel spatial, opencv, etc. activés. Veuillez créer une bibliothèque partagée. Je n'active pas python car je ne l'utilise pas souvent.

  4. Modèle de café VGG, prototxt
    Télécharger
    http://www.robots.ox.ac.uk/~vgg/software/very_deep/caffe/VGG_ILSVRC_16_layers.caffemodel
    https://gist.githubusercontent.com/ksimonan/211839e770f7b538e2d8/raw/0067c9b32f60362c74f4c445a080beed06b07eb3/VGG_ILSVRC_16_layers_deploy.prototxt

include engine: INTEL_SPATIAL pour toutes les couches convolutives de votre deploy.proto

Obtenez le synset_words.txt

  1. Tester en utilisant ce programme
    https://gist.github.com/atlury/f65fd41eb805cc5f77f666a59e71eae2

Assurez-vous simplement que input_dim est 1 (dans votre proto) et non 10 (vous ne lui donnez qu'une image à la fois) avec 3 canaux et le redimensionnement est automatique.
input_dim: 1
input_dim: 3
input_dim: 224
input_dim: 224

Toute aide supplémentaire me buzz sur skype: atlury ou gtalk: atlury

Veuillez noter que cela ne fonctionnera que sous Linux et que le support opencl pour Windows est toujours en cours de travail par @ naibaf7

Merci beaucoup @atlury pour tous les détails - très appréciés - je vais le tester bientôt! Au fait, j'ai commencé à automatiser l'installation de Caffe sur Windows (CPU et mode OpenCL) à l'aide de Collective Knowledge Framework, mais il a encore besoin de plus de tests: https://github.com/dividiti/ck-caffe
J'attends un retour de mes collègues et si cela fonctionne bien, nous ferons une sortie officielle dans quelques semaines (éventuellement avec un support pour les appareils Android aussi) ...

Salut tout le monde. Merci beaucoup pour la bibliothèque et aussi les discussions ci-dessus.

Je suis actuellement en train de construire la dernière commettras qui fixe Windows OpenCL construire avec USE_GREENTEA = 1, USE_LIBDNN = 1 et USE_INTEL_SPATIAL = 1, ainsi que les fichiers intégrés d' en- tête pour ViennaCL. Mon build_win.cmd est attaché ici: build_win.txt

Cependant, la construction à mi-chemin de la bibliothèque se termine toujours par l'erreur suivante:
ninja: build stopped: subcommand failed.
ERROR: Build failed
En détail:
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
Toutes mes excuses si cette erreur est la même que celle mentionnée ci-dessus.

Essayé avec USE_INTEL_SPATIAL = 0 également mais avec l'erreur suivante:
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

Veuillez conseiller à ce sujet. Très apprécié.

@ yshen92 La première erreur est connue et en cours de
La deuxième erreur que vous obtenez signifie généralement que votre DLL OpenCL n'est pas valide, il manque certains symboles. Pouvez-vous nous dire de quel matériel vous disposez et quels SDK OpenCL vous avez installés?
Ce problème vient généralement des SDK OpenCL provenant de nVidia dans CUDA. Les SDK Intel et AMD OpenCL devraient fonctionner correctement avec les versions 1.2 et 2.0.

@ naibaf7 Merci beaucoup pour la réponse.

Je construis la bibliothèque sur un Dell Windows 8 Pro 64 bits avec Intel HD Graphics 4000 et NVIDIA NVS 5200M. Et vient d'installer le dernier SDK Intel OpenCL v6.3 . Il semble que le répertoire OpenCL pointe vers celui fourni avec CUDA.

Donc, pour tenter d'utiliser le SDK Intel OpenCL dans la version, j'ai supprimé CUDA et apporté une modification assez grossière à FindOpenCL.cmake aux lignes 46, 48, 52 et 53 comme suit:

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")
Fondamentalement, il s'agit simplement d'ajouter les chemins du SDK Intel. Je ne sais pas si je le fais bien. Comme sans ces derniers, le script ne parvient pas à localiser le SDK.

Cependant, j'obtiens toujours la même erreur que ci-dessus (construction sans Intel Spatial).
Et voici mon fichier de configuration tiré directement du script pour votre référence.
ConfigInfo.txt
Une idée de ce que j'ai mal fait?

Salut @atlury - J'ai finalement trouvé un peu de temps pour installer Ubuntu 17.04 et il était assez simple d'installer les pilotes Intel GPU sans aucune reconstruction du noyau - merci! J'ai également installé Caffe-OpenCL.

Il y a toujours un problème avec la mise en cache du noyau, donc le coût de démarrage est très élevé, mais @ naibaf7 et @psyhtest essaient de l'améliorer. La solution temporelle pour accélérer légèrement la mise en cache du noyau est de jouer avec les variables d'environnement VIENNACL_CACHE_PATH et CUDA_CACHE_DISABLE (voir https://github.com/dividiti/ck-caffe/issues/44#issuecomment-277205871).

J'ai une question cependant: je n'ai pas compris comment ajouter le moteur: INTEL_SPATIAL pour toutes les couches convolutives dans le deploy.proto? Je suis toujours un utilisateur novice (je suis plus du côté du compilateur essayant d'optimiser les sous-bibliothèques). Voulez-vous m'envoyer un échantillon, s'il vous plaît - sera très apprécié!

Autre note: si cela vous intéresse, j'ai ajouté le support pour assembler Caffe avec OpenCL, ViennaCL et USE_INTEL_SPATIAL via le framework CK (c'est-à-dire la reconstruction en un clic):

paquet d' installation ck

Vous pouvez trouver des détails ici: https://github.com/dividiti/ck-caffe/wiki/Installation

Je suis en train de profiler la mise en cache de ViennaCL sur quelques plates-formes pour le moment. Je soupçonne que cela peut fonctionner de manière assez satisfaisante après quelques changements.

@gfursin : CUDA_CACHE_DISABLE a pour effet de désactiver le mécanisme de mise en cache de NVIDIA pour les noyaux, donc ne fera que ralentir les choses (sur les plates-formes alimentées par NVIDIA bien sûr). Cependant, j'en ai besoin pour le profilage du cache.

@psyhtest - merci pour votre note car je vous ai mal compris - je pensais que c'était un bug étrange et une solution de contournement temporelle;) ...

@ naibaf7 quel est le statut de la prise en charge de Windows maintenant? Je me demande si vous avez déjà commencé à travailler sur l'activation du moteur spatial Intel pour Windows également.

@gongzg J'ai commencé à configurer l'environnement Windows sur l'ordinateur portable Intel afin de tester cela, mais je allé plus loin que cela. Le moteur spatial Intel a donc toujours des problèmes de compilation sous Windows, mais le reste fonctionne.

@ naibaf7 Merci pour la mise à jour. Ensuite, je vérifierai si nous avons des ressources internes pour résoudre les problèmes de moteur spatial interl sur Windows.

Cette branche fonctionne-t-elle pour Windows et AMD GPU?

Oui c'est le cas. Les GPU AMD sont entièrement pris en charge avec LibDNN sous Windows et Linux. La prise en charge complète du processeur graphique Intel suivra le 28 avril.

@ naibaf7
David, pouvez-vous me faire savoir quand la prise en charge de Windows OpenCL est prête avec python pour Intel GPU? J'ai quelques éléments à tester et à signaler.

@hillarycanas - Je confirme également que j'ai réussi à compiler et à exécuter la version OpenCL de Caffe avec libDNN sur AMD avec Windows 10 il y a quelques jours (j'ai utilisé un assez vieux APU AMD E1-2500 avec Radeon HD Graphics juste pour un test). Vous pouvez voir les résultats des performances sur http://tinyurl.com/k3dhsc2 (recherchez AMD).
J'ai utilisé le package CK "lib-caffe-bvlc-opencl-libdnn-viennacl-universal" pour compiler et exécuter Caffe sous Windows (voir https://github.com/dividiti/ck-caffe/wiki/Installation#AMD_GPU).

Désolé de déranger à nouveau. Après les commentaires des utilisateurs, nous avons ajouté la prise en charge du package automatique de la bibliothèque Caffe et des binaires pour Windows dans le CK, et il est maintenant possible d'installer et de comparer la version CPU et OpenCL de Caffe sur différentes machines Windows avec une installation minimale:

$ 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
C'est bien :)
Caffe peut facilement devenir grand public comme ça :)

Salut,

J'ai essayé d'exécuter la branche officielle OpenCL de caffe située à:
https://github.com/BVLC/caffe/tree/opencl sur mon Mac avec les détails matériels suivants:
Nom du modèle: MacBook Pro
Identifiant du modèle: MacBookPro12,1
Nom du processeur: Intel Core i5
Vitesse du processeur: 2,7 GHz
Nombre de processeurs: 1
Nombre total de cœurs: 2
Cache L2 (par cœur): 256 Ko
Cache L3: 3 Mo
Mémoire: 8 Go
Graphiques: Intel Iris Graphics 6100 1536 Mo

Je pourrais exécuter le didacticiel de classification sans aucun problème. Cependant, lorsque je passe en mode GPU et que j'essaye d'exécuter net.forward (), le noyau meurt à chaque fois. Cela signifie-t-il que cette branche d'OpenCL caffe ne prend pas en charge la carte graphique intégrée Intel?

Merci,

Sal

@saliltambe La branche OpenCL prend en charge Intel iGPU. Bien que la plupart des tests soient effectués sur un système Linux, ils devraient également fonctionner sur Mac. Quelle est l'erreur spécifique que vous avez rencontrée lorsque vous exécutez net.forward ()?

@gongzg Merci beaucoup pour la réponse. J'obtiens le message d'erreur suivant lors de l'exécution dans jupyter notebook: "Le noyau semble être mort. Il redémarrera automatiquement." J'utilise une très petite taille de lot, donc je ne pense pas que le noyau meurt à cause d'un manque de mémoire. De plus, je n'obtiens pas d'erreur lorsque je passe en mode GPU en utilisant: caffe.set_mode_gpu (). Je n'obtiens l'erreur que lorsque j'exécute net.forward ().

@saliltambe
Nous avons besoin d'un peu plus d'informations: comment l'avez-vous compilé (version du compilateur, paramètres Caffe, quelles bibliothèques BLAS avez-vous activées)?
Pouvez-vous exécuter ./build/test/test_all.testbin ou exécuter make runtest (si vous avez utilisé Makefiles)?

@ naibaf7
Salut Fabian, voici les détails:
-- Général:
- Version: 1.0.0
- Git: inconnu
- Système: Darwin
- Compilateur C ++: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++

- Libérez les indicateurs CXX: -O3 -DNDEBUG -fPIC -Wall -std = c ++ 11 -DCMAKE_BUILD -Wno-sign-compare -Wno-uninitialized

- Déboguer les drapeaux CXX: -g -fPIC -Wall -std = c ++ 11 -DCMAKE_BUILD -Wno-sign-compare -Wno-uninitialized

  • - Type de construction: Release
  • - BUILD_SHARED_LIBS: ON
  • - BUILD_python: ON
  • - BUILD_matlab: OFF
  • - BUILD_docs: ON
  • - CPU_ONLY: OFF
  • - USE_OPENCV: ACTIVÉ
  • - USE_FFT: OFF
  • - USE_LEVELDB: ACTIVÉ
  • - USE_LMDB: ON
  • - USE_NCCL: OFF
  • - ALLOW_LMDB_NOLOCK: OFF
  • - USE_HDF5: ACTIVÉ



    • - Dépendances:

  • - BLAS: Oui (vecLib)
  • - Boost: Oui (ver. 1.64)
  • - glog: Oui
  • - gflags: Oui
  • - protobuf: Oui (ver. 3.3.0)
  • - lmdb: Oui (ver. 0.9.19)
  • - LevelDB: Oui (ver. 1.20)
  • - Snappy: Oui (ver.1.1.4)
  • - OpenCV: Oui (ver.2.4.13.2)
  • - CUDA: Non



    • - Python:

  • - Interprète: /Users/stambe/anaconda/bin/python2.7 (ver.2.7.13)
  • - Bibliothèques: /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)

  • - Documentaion:
  • - Doxygen: Non
  • - fichier_config:

  • - Installer:
  • - Chemin d'installation: / Users / stambe / Programs / caffe-opencl / build / install

  • - Configuration terminée

Avertissement CMake (dev) dans src / caffe / CMakeLists.txt:

La règle CMP0022 n'est pas définie: INTERFACE_LINK_LIBRARIES définit l'interface de liaison. Exécutez «cmake --help-policy CMP0022» pour plus de détails sur la stratégie. Utilisez la commande cmake_policy pour définir la stratégie et supprimer cet avertissement.
La cible "caffe" a une propriété INTERFACE_LINK_LIBRARIES qui diffère de ses propriétés LINK_INTERFACE_LIBRARIES.

INTERFACE_LINK_LIBRARIES:
caffeproto; /usr/local/lib/libboost_system-mt.dylib; /usr/local/lib/libboost_thread-mt.dylib; /usr/local/lib/libboost_filesystem-mt.dylib; / usr / local / lib / 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 openc_highwork; opencv_core; opencv openc_highg lcblas; -framework Accelerate; /usr/local/lib/libboost_python-mt.dylib

Lorsque je lance make runtest -j8, j'obtiens l'erreur suivante:
stambe- osx: build stambe $ make runtest -j8
[1%] gtest cible construit
[2%] Caffeproto cible construite
[71%] Caffe cible construite
[71%] Construction de l'objet CXX src / caffe / test / CMakeFiles / test.testbin.dir / test_deconvolution_layer.cpp.o
[72%] Construction de l'objet CXX src / caffe / test / CMakeFiles / test.testbin.dir / test_db.cpp.o
[73%] Construction de l'objet CXX src / caffe / test / CMakeFiles / test.testbin.dir / test_eltwise_layer.cpp.o
[73%] Construction de l'objet CXX src / caffe / test / CMakeFiles / test.testbin.dir / test_dummy_data_layer.cpp.o
[73%] Construction de l'objet CXX src / caffe / test / CMakeFiles / test.testbin.dir / test_embed_layer.cpp.o
[73%] Construction de l'objet CXX src / caffe / test / CMakeFiles / test.testbin.dir / test_euclidean_loss_layer.cpp.o
[73%] Construction de l'objet CXX src / caffe / test / CMakeFiles / test.testbin.dir / test_filter_layer.cpp.o
[75%] Construction de l'objet CXX src / caffe / test / CMakeFiles / test.testbin.dir / test_filler.cpp.o
/ Utilisateurs / stambe / Programmes / caffe-opencl / src / caffe / test / test_db. cpp: 23 : 27: erreur: utilisation non déclarée
identifiant 'EXAMPLES_SOURCE_DIR'
root_images_ (chaîne (EXAMPLES_SOURCE_DIR) + chaîne ("images /")) {}

Y a-t-il un problème avec mon installation? Veuillez noter que je n'ai pas de problème à exécuter caffe sur le processeur.

Merci,
Sal

Grâce aux pointeurs et pistes donnés, j'ai réussi à construire et à exécuter Caffe OpenCL avec succès sur deux machines distinctes avec les spécifications suivantes:

(UNE)

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

Je pourrais exécuter AlexNet, ResNet50 et ResNet152 sur les deux (A) et (B) sans accroc. Le seul problème que j'ai est le traitement par lots sur ResNets sur (A) - la classe prédite n'est jamais correcte. Étant donné que la question ne se pose que dans (A) ET uniquement le processus par lots de ResNets, je pense que la cause principale pourrait provenir de LibDNN et plus spécifiquement du noyau spatial d'Intel. Je pourrais désactiver le moteur Intel, mais il n'atteindrait pas la vitesse dont je suis trop satisfait maintenant.

D'autres pointeurs et pistes sur celui-ci? Merci d'avance.

@gongzg Des pointeurs sur les raisons pour lesquelles le noyau spatial pourrait avoir des problèmes avec le traitement par lots?

@ naibaf7 Il y a quelques bogues dans le moteur de convolution spatiale actuel et je n'ai pas encore le temps de soumettre ces PR à la branche amont d'OpenCL. Une partie de la raison est que tout mon travail actuel dépend du FP16 PR donc je veux attendre que le patch FP16 soit revu et fusionné. Pour l'instant, je voudrais recommander @jstumpin d'essayer la branche inference-Optimize de github.com/01org/caffe pour vérifier si le problème a disparu. La page wiki correspondante se trouve sur Intel OpenCL caffe wiki

@jstumpin Il est préférable d'appliquer la fusion de couches pour resnet, et vous verrez un gain de performance notable.

De bons conseils (et des nouvelles aussi) tout autour. J'ai entendu parler de github.com/01org/caffe avant mais je n'ai pas été très enthousiaste car je suis obligé d'aller pour le déploiement de Windows. J'obtiens [les spécifications données dans (A)]:

  1. AlexNet

    • 110 images / s, 164 images / s (lot = 15)

  2. ResNet50

    • 11 images / s, 14 images / s (lot = 5)

  3. ResNet152

    • 5 images / sec, 6 images / sec (lot = 2)

Les éléments suivants sont privés d'Intel spatial:

  1. AlexNet

    • 113 images / s, 114 images / s (lot = 15)

  2. ResNet50

    • 9 images / s, 14 images / s (lot = 5)

  3. ResNet152

    • 5 images / sec, 6 images / sec (lot = 2)

Pour être complet, j'ai également comparé OpenCV 3.3.0 et le CPU de Caffe uniquement (avec Intel MKL, tous le sont). Qu'il suffise de dire que le processeur uniquement est interdit, quelle que soit la topologie du réseau. Je diminue la taille du lot à mesure que la complexité du réseau devient équitable avec le système (B) car la mémoire du GPU est limitée. De plus, je n'ai observé aucun gain au-delà de ces tailles de lots expérimentées. BTW, (B) est en fait équipé de NVIDIA Quadro K4200, et non d'une Geforce comme initialement annoncé (ce n'est de toute façon pas pertinent puisque nous ciblons (B) pour le déploiement).

Faire:
[1] Reconstruire Caffe à partir de la branche d'optimisation d'inférence
[2] Appliquer la fusion de couches et réévaluer les performances

Merci!

@jstumpin , la branche inference-optimzie prend également en charge Windows, lorsque vous clonez le code, veuillez consulter le README pour les instructions de compilation sur Windows. Si vous rencontrez un problème, ouvrez simplement un ticket à cet endroit.

@gongzg Oui, la révision et la refactorisation de FP16 sont en cours.

Bien que l'étiquette soit correcte, pourquoi la valeur de prédiction dépasse-t-elle 1? Cela est vrai lors de l'utilisation d'OpenCL avec ou sans Intel Spatial (CPU uniquement est très bien). La sortie de softmax ne devrait-elle pas être probabiliste?

J'essaye la dernière branche OpenCL sur mon Intel NUC. Le matériel est

  • Processeur Intel Core i7-7567U à 3,5 GHz
  • Graphiques Intel Iris Plus 650
  • Windows 10 Professionnel
  • Visual Studio 14 2015 Win64

J'ai cloné le dernier viennacl dans un dossier parallèle au dossier Caffe. Ensuite, j'exécute le scripts/build_win.cmd sans le modifier (car je n'ai vu aucun besoin de le modifier). Mais obtenez une erreur étrange qui ne se trouve pas dans toute la discussion ci-dessus. S'il vous plaît voir dans la sortie ci-dessous. Avant d'y aller, une autre information est que j'ai construit la branche windows avec succès.

Voici la sortie de build_win.cmd . J'apprécie vraiment si quelqu'un pouvait m'aider à ce sujet!

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

c: \ DL \ caffe \ scripts> build_win.cmd
Le système ne peut pas trouver le lecteur spécifié.
Le système ne peut pas trouver le lecteur spécifié.
INFORMATIONS: ================================================= ============
INFO: Résumé:
INFORMATIONS: ================================================= ============
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 = Libération
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
INFORMATIONS: ================================================= ============
- Sélection de la version du SDK Windows pour cibler Windows 10.0.15063.
- L'identification du compilateur C est MSVC 19.0.24215.1
- L'identification du compilateur CXX est MSVC 19.0.24215.1
- Vérifiez que le compilateur C fonctionne: C: / Program Files (x86) / Microsoft Visual Studio 14.0 / VC / bin / x86_amd64 / cl.exe
- Vérifiez que le compilateur C fonctionne: C: / Program Files (x86) / Microsoft Visual Studio 14.0 / VC / bin / x86_amd64 / cl.exe - fonctionne
- Détection des informations ABI du compilateur C
- Détection des informations ABI du compilateur C - terminé
- Vérifiez que le compilateur CXX fonctionne: C: / Program Files (x86) / Microsoft Visual Studio 14.0 / VC / bin / x86_amd64 / cl.exe
- Vérifiez que le compilateur CXX fonctionne: C: / Program Files (x86) / Microsoft Visual Studio 14.0 / VC / bin / x86_amd64 / cl.exe - fonctionne
- Détection des informations ABI du compilateur CXX
- Détection des informations ABI du compilateur CXX - terminé
- Détection des fonctionnalités de compilation CXX
- Détection des fonctionnalités de compilation CXX - terminé
- PythonInterp trouvé: C: /Users/NUC-Sonavex/AppData/Local/Programs/Python/Python35/python.exe (trouvé la version appropriée "3.5.3", le minimum requis est "2.7")
- Vous recherchez pthread.h
- Recherche pthread.h - introuvable
- Threads trouvés: TRUE
- Version Boost: 1.61.0
- J'ai trouvé les bibliothèques Boost suivantes:
-- système
-- fil
-- système de fichiers
- chrono
- date_time
- atomique
- GFlags trouvés: C: /Users/NUC-Sonavex/.caffe/dependencies/libraries_v140_x64_py35_1.1.0/libraries/include
- gflags trouvés (incluent: C: /Users/NUC-Sonavex/.caffe/dependencies/libraries_v140_x64_py35_1.1.0/libraries/include, library: gflags_shared)
- Glog trouvé: C: /Users/NUC-Sonavex/.caffe/dependencies/libraries_v140_x64_py35_1.1.0/libraries/include
- Glog trouvé (inclure: C: /Users/NUC-Sonavex/.caffe/dependencies/libraries_v140_x64_py35_1.1.0/libraries/include, library: glog)
- Protobuf trouvé: C: /Users/NUC-Sonavex/.caffe/dependencies/libraries_v140_x64_py35_1.1.0/libraries/bin/protoc.exe (version trouvée "3.1.0")
- Compilateur PROTOBUF trouvé: C: /Users/NUC-Sonavex/.caffe/dependencies/libraries_v140_x64_py35_1.1.0/libraries/bin/protoc.exe
- LMDB trouvé: C: /Users/NUC-Sonavex/.caffe/dependencies/libraries_v140_x64_py35_1.1.0/libraries/include
- Lmdb trouvé (inclure: C: /Users/NUC-Sonavex/.caffe/dependencies/libraries_v140_x64_py35_1.1.0/libraries/include, bibliothèque: lmdb)
- NiveauDB trouvé: C: /Users/NUC-Sonavex/.caffe/dependencies/libraries_v140_x64_py35_1.1.0/libraries/include
- NiveauDB trouvé (inclure: C: /Users/NUC-Sonavex/.caffe/dependencies/libraries_v140_x64_py35_1.1.0/libraries/include, bibliothèque: leveldb)
- ZLIB trouvé: optimisé; 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_1 .1.0 / bibliothèques / lib / caffezlibd.lib (version trouvée "1.2.8")
- Snappy trouvé: C: /Users/NUC-Sonavex/.caffe/dependencies/libraries_v140_x64_py35_1.1.0/libraries/include
- Snappy trouvé (inclure: C: /Users/NUC-Sonavex/.caffe/dependencies/libraries_v140_x64_py35_1.1.0/libraries/include, bibliothèque: snappy_static; optimisé; C: /Users/NUC-Sonavex/.caffe/dependencies/libraries_1 .1.0 / bibliothèques / lib / caffezlib.lib; debug; C: /Users/NUC-Sonavex/.caffe/dependencies/libraries_v140_x64_py35_1.1.0/libraries/lib/caffezlibd.lib)
- - CUDA est désactivé. Construire sans lui ...
- Found ViennaCL comprend: C: / DL / viennacl
Erreur CMake: les variables suivantes sont utilisées dans ce projet, mais elles sont définies sur NOTFOUND.
Veuillez les définir ou assurez-vous qu'ils sont définis et testés correctement dans les fichiers CMake:
OPENCL_INCLUDE_DIRS
utilisé comme répertoire d'inclusion dans le répertoire C: / DL / caffe / scripts / build / CMakeFiles / CMakeTmp
_OPENCL_64_LIBRARIES
lié par la cible "cmTC_7259e" dans le répertoire C: / DL / caffe / scripts / build / CMakeFiles / CMakeTmp

Erreur CMake à cmake / Modules / FindOpenCL. cmake: 106 (TRY_COMPILE):
Échec de la configuration du système de construction du projet de test.
Pile d'appels (appel le plus récent en premier):
cmake / Modules / FindViennaCL. cmake: 37 (trouver_package)
cmake / Dépendances. cmake: 116 (trouver_package)
CMakeLists. txt: 127 (inclure)

- Configuration incomplète, des erreurs se sont produites!
Voir aussi "C: /DL/caffe/scripts/build/CMakeFiles/CMakeOutput.log".
Voir aussi "C: /DL/caffe/scripts/build/CMakeFiles/CMakeError.log".
ERREUR: échec de la configuration

@ bxk-sonavex Comme je l'ai mentionné ci-dessus, certains des correctifs spécifiques à Intel n'ont pas été examinés et fusionnés, alors essayez la branche github.com/01org/caffe inference-Optimize. Vous pouvez consulter le wiki suivant pour obtenir des instructions détaillées sur la plate-forme Intel:
https://github.com/01org/caffe/wiki/clCaffe

@gongzg Cela peut ne pas aider étant donné que certaines parties de l'implémentation Intel OpenCL ne fonctionnent pas sous Windows. Mais travailler dessus, comme vous le savez :)

@ naibaf7 Cela signifie-t-il que cette branche ne fonctionne PAS du tout avec Intel iCPU sous Windows? Ensuite, où puis-je trouver une version de Caffe prenant en charge OpenCL sur Windows avec Intel iGPU?

@gongzg Le clCaffe que vous avez suggéré fonctionne-t-il sous Windows avec Intel iGPU?

@ bxk-sonavex Cela fonctionnera, mais pas avec les convolutions Intel, donc des performances non optimales.
Pour le moment, je pense que vous ne trouvez pas cela, mais je travaille sur une solution.
Votre problème est davantage lié aux en-têtes OpenCL manquants. Quel OpenCL avez-vous installé? Le SDK Intel?

@ naibaf7 Oui, j'utilise Intel SDK v6.3. J'ai trouvé une solution de contournement ici (https://github.com/BVLC/caffe/issues/5575) et cela fonctionne pour moi. Maintenant, j'ai compilé la branche opencl. De plus, j'ai testé ma construction en utilisant l'exemple mnist fourni dans le dossier des exemples. Lors de l'utilisation du processeur (en modifiant lenet_solver.prototxt), le train_lenet a fonctionné sans aucun problème et la précision d'entraînement finale est de 0,9902, ce qui est comme prévu.

Solveur I1107 13: 53: 43.139747 3512. cpp: 421 ] Sortie nette de test n ° 0: précision = 0,9902
Solveur I1107 13: 53: 43.139747 3512. cpp: 421 ] Test de la sortie nette n ° 1: perte = 0,0277191 (* 1 = 0,0277191 perte)

Cependant, lors de l'utilisation du GPU, la fenêtre de message d'erreur "caffe.exe a cessé de fonctionner" s'affiche et la précision n'est que de 0,1009.

Solveur I1107 14: 11: 15.651798 7872. cpp: 421 ] Sortie nette de test n ° 0: précision = 0,1009
Solveur I1107 14: 11: 15.651798 7872. cpp: 421 ] Test de la sortie nette n ° 1: perte = 87,31 (* 1 = 87,31 perte)

Pouvez-vous me donner quelques pistes sur ce qui s'est passé? Comment le résoudre? Ou est-ce ce que @gongzg a mentionné?

Cela peut ne pas aider étant donné que certaines parties de l'implémentation d'Intel OpenCL ne fonctionnent pas sous Windows. Mais travailler dessus, comme vous le savez :)

Les endroits que j'ai modifiés à partir de la valeur par défaut build_win.cmd sont

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

Dois-je définir le USE_INTEL_SPATIAL ?

Lorsque vous définissez USE_INTEL_SPATIAL = 1, la branche ne peut pas être compilée. L'erreur est

ninja: build arrêté: la sous-commande a échoué.

@ naibaf7 La version 01org fonctionne correctement sous Windows maintenant. Je suis toujours occupé sur d'autres choses donc je n'ai pas assez de temps pour soumettre tous les correctifs à cette branche OpenCL. Je le ferai quand j'aurai du temps dans un proche avenir. @ bxk-sonavex Vous pouvez essayer la version 01org en suivant la page wiki, et si vous rencontrez un problème avec cela, merci de me le faire savoir.

@gongzg Merci! En suivant les instructions sur https://github.com/01org/caffe/wiki/clCaffe#windows -support-for-intel-gen-platform, j'ai reçu le message d'erreur:

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

POUR VOTRE INFORMATION:
https://github.com/ptillet/isaac.git est uniquement compatible avec le matériel NVIDIA et ne peut même pas être compilé, donc je clone le https://github.com/intel/isaac.

METTRE À JOUR:
Généré manuellement les fichiers via

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

Soi-disant, les fichiers devraient être générés automatiquement.

Ensuite, j'ai eu l'erreur suivante:

"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

Désactivé RUN_TESTS et construction pour la troisième fois ...

@ bxk-sonavex Il semble qu'il ait déjà été construit avec succès. Vous devez copier les fichiers dll dans le répertoire des fichiers exécutables:
"
Veuillez noter que, une fois la construction terminée avec succès, avant d'essayer d'exécuter l'application, vous devez copier le dl.dll (dlfcn) et isaac.dll (isaac) dans le même répertoire ou les mettre dans un répertoire système.
"

@gongzg Ajout des dossiers des deux dll dans le chemin du système au lieu de les copier dans le dossier de test. Maintenant, une autre erreur, qui semble assez grave ...

"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

J'utilise Intel Iris Plus Graphics 650 et intel_sdk_for_opencl_setup_6.3.0.1904. Des pensées et une solution?

@ bxk-sonavex Vous devez mettre à jour votre pilote Intel Graphics vers la dernière version.

@gongzg Merci, cela a résolu l'erreur de compilation. Lors de l'exécution des tests, j'ai eu tout un tas d'erreurs comme (peut ne pas les attraper toutes)

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

Ces erreurs doivent-elles être concernées?

Quoi qu'il en soit, je teste la construction en utilisant l'exemple mnist. Il est extrêmement lent , voire beaucoup plus lent que le Caffe original utilisant le processeur. Et il y a quelques avertissements (répétés plusieurs fois)

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'

Une idée?

@ bxk-sonavex

Pourquoi ne travaillez-vous pas avec l'exécution de caffe sous Linux pour le moment? Je suppose que les développeurs se concentrent davantage sur le bon fonctionnement du code FP16, INT8, etc.

Une bonne prise en charge de Windows viendra éventuellement.

Juste une suggestion cependant.

@atlury j'adorerais !!! Mais notre système est Windows 10 + Intel Iris ... Vous avez une idée du moment où le support Windows viendra? Ou, toute autre plate-forme DL fonctionne (en utilisant GPU)?

@gongzg Je veux juste vous mettre à jour avec les performances
CPU: 7 minutes 33 secondes, précision = 0,9914
GPU: 29 minutes 34 secondes, précision = 0,8406

Vous vous demandez quelles sont les performances sous Linux. Ensuite, je pourrais avoir une idée de base sur la vitesse à laquelle utiliser Intel GPU (OpenCL) par rapport au CPU. Merci!!

@ bxk-sonavex

Ben avez-vous activé les noyaux opencl? Avez-vous essayé d'utiliser INTEL_SPATIAL?

@atlury Que voulez-vous dire "activer les noyaux opencl"? Oui, j'ai suivi les instructions ici (https://github.com/01org/caffe/wiki/clCaffe#how-to-build) et fait "set USE_INTEL_SPATIAL = 1" en ligne de commande (sans modifier directement le fichier build_win.cmd ).

METTRE À JOUR:
INFORMATIONS: ================================================= ============
INFO: Résumé:
INFORMATIONS: ================================================= ============
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 = Libération
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
INFORMATIONS: ================================================= ============

@ bxk-sonavex

Ben vous devrez inclure INTEL_SPATIAL pour toutes les couches convolutives dans votre deploy.proto. Je l'ai personnellement testé en temps réel sous Linux.

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

"J'ai testé sur une clé de télévision Intel, une webcam utilisant des noyaux Intel Spatial et un modèle vgg à 19 couches. Je peux obtenir une classification en temps réel et le tout sous 3,5 watts"

Windows devrait également fonctionner.

@ bxk-sonavex pour le problème sur la version 01org, veuillez ouvrir un problème ici. Il y a quelques échecs de test dus à un problème de précision FP16 sur ces cas de test de gradient, ce qui n'est pas critique. Les performances sont extrêmement lentes, ce qui devrait être causé par le réglage automatique. Il devrait être beaucoup plus rapide lorsque vous l'exécutez à nouveau. Vous pouvez tout d'abord essayer d'utiliser le build / tools / caffe pour mesurer les performances avancées d'AlexNet.

Au fait, je viens de remarquer que @CNugteren a publié la nouvelle version 1.2.0 de sa bibliothèque CLBlast autotuned il y a quelques jours. Je l'ai vérifié et il semble fonctionner avec Caffe sur mon ordinateur portable Windows 10 Lenovo avec l'ancien GPU Intel 4400 (ainsi que sur Linux) - cela peut donc être un ajout intéressant à Caffe puisque la version précédente de CLBlast était en panne sur Windows!

Si vous êtes intéressé, vous pouvez vérifier la vitesse de Caffe avec LibDNN et CLBlast par exemple sur SqueezeDet comme suit (la même procédure sous Windows et 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

Cela prendra un certain temps car CK tentera de détecter votre environnement et vos compilateurs,
et reconstruira ensuite toutes les dépendances nécessaires sur votre machine.

Après cela, vous pouvez simplement installer SqueezeDet et exécuter le temps interne:

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

La première exécution peut être un peu lente en raison de la compilation et de la mise en cache du noyau, donc la deuxième exécution sera beaucoup plus rapide!

Vous pouvez également comparer la classification des images:

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

Pas lié à Intel mais juste une note qu'il semble y avoir un bug mineur lors de la compilation de Caffe avec CLBlast 1.2.0 pour Android ARM64 en utilisant Android GCC 4.9.x ("to_string" ne se trouve pas dans la classe 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

Ce serait bien de le réparer puisque CLBlast 1.1.0 fonctionne bien sur Android ... Dans ce cas, il fonctionnera avec Caffe sur toutes les plates-formes.

J'espère que cela vous aidera et passez un bon week-end!

il semble y avoir un bug mineur lors de la compilation de Caffe avec CLBlast 1.2.0 pour Android ARM64 en utilisant Android GCC 4.9.x ("to_string" ne se trouve pas dans la classe std):

Vous ne savez pas si vous voulez dire qu'il s'agit d'un bogue dans CLBlast ou dans Caffe? Dans tous les cas, CLBlast l'a implémenté dans un en- tête Android spécial. Peut-être que cela pourrait également être utilisé dans Caffe?

@CNugteren - Je viens de vérifier et le problème n'est pas dans CLBlast. J'ai juste oublié un correctif dans le CK qui corrigeait LibDNN pour Android (donc ma faute). Je l'ai ajouté (https://github.com/dividiti/ck-caffe/blob/master/package/lib-caffe-bvlc-opencl-clblast-universal/patch.android/android.fgg.patch3) et c'est maintenant possible de compiler Caffe avec CLBlast et libDNN. J'ai vérifié des exemples de classification et d'analyse comparative sur mon Samsung S7 - fonctionne bien. Désolé pour cette fausse alarme et merci d'avoir publié un nouveau CLBlast - je peux maintenant l'utiliser dans Caffe sous Linux, Windows et Android.

@gfursin S'agit-il d'une version utilisant CPU ou GPU (OpenCL)? Je pensais que cela disait que l'OpenCL ne fonctionnait pas encore sous Windows (ou du moins pas encore avec Intel iGPU). Qu'utilisez-vous sous Windows?

@ bxk-sonavex

Ben désolé pour le retard dans la réponse. J'étais parti.

Pour citer @ naibaf7
"La méthode de convolution (" moteur ") peut également être sélectionnée / écrasée dans le fichier prototxt du réseau"

Ajoutez donc l'entrée "engine: INTEL_SPATIAL" à toutes les spécifications de la couche de convolution.

Prenons AlexNet comme exemple, modifiez le fichier par exemple $ CAFFE_ROOT / models / bvlc_alexnet / train_val.prototxt, et ajoutez la ligne suivante pour que la couche conv1 soit calculée en utilisant la convolution spatiale. De même, changez les autres calques

 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: Mon mauvais je vois que vous aviez ouvert un autre fil et semble avoir progressé un peu plus.

@ bxk-sonavex - J'utilise la version Caffe OpenCL (avec libDNN et CLBlast) sur Windows avec l'ancien GPU Intel 4400 SANS Intel Spatial - cela semble fonctionner correctement mais il peut être sous-optimal. Voici la liste des périphériques Caffe ("programme d'exécution ck: caffe --cmd_key = query_gpu_opencl"):
output_caffe_opencl_devices.txt

Voici la sortie de la classification d'image sur Windows avec la version Caffe OpenCL ci-dessus et GoogleNet:
output_caffe_opencl_image_classification.txt

Je vérifie principalement l'inférence / la détection d'objets à ce stade (nous essayons d'unifier l'installation DNN, l'analyse comparative et l'optimisation sur toutes les plates-formes possibles), donc je n'ai pas vraiment insisté sur les autres capacités et modèles de Caffe sous Windows avec OpenCL ...

J'ai aussi juste essayé de compiler Caffe OpenCL avec Intel Spatial ON ("ck install package: lib-caffe-bvlc-opencl-libdnn-clblast-universal --env.USE_INTEL_SPATIAL = ON") et j'observe les 2 mêmes erreurs de construction que l'était rapporté plus tôt par @atlury):
output_caffe_build_error_with_intel_spatial.txt

Existe-t-il également un script de construction disponible pour Linux (Ubuntu 16.04)?. Je reçois des erreurs en essayant de compiler

@rachithayp Suivez attentivement les instructions, cela fonctionnera même sur les séries 18.0x. Nous l'avons testé.

Salut @rachithayp . Juste une note que vous devez probablement patcher le noyau pour faire fonctionner Intel OpenCL sur Ubuntu 16.04: https://github.com/dividiti/ck-caffe/wiki/Installation#Intel_CPUGPU_Linux .

J'ai réussi à créer la branche OpenCL de Caffe sur mon Ubuntu 18.04 (ordinateur portable Lenovo T470p avec GPU Intel) sans patcher le noyau et avec le dernier Intel OpenCL via CK il y a quelques semaines:

$ 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 tentera de détecter vos compilateurs, bibliothèques OpenCL et autres dépendances disponibles, et invoquera cmake pour Caffe. Si la construction réussit, vous pouvez vérifier l'installation à l'aide de l'environnement virtuel CK:

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

Vous pouvez également essayer un exemple de classification d'image comme suit:

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

Bonne chance.

cc @ ens-lg4 et @psyhtest ...

@atlury J'ai pu compiler en utilisant le cmake ci-dessous:
cmake .. -DUSE_CUDA = OFF -DBUILD_docs = 0 -DOPENCL_LIBRARIES = <> -DOPENCL_INCLUDE_DIRS = <>

Mais essayer de compiler avec INTEL_SPATIAL_ON donne les erreurs ci-dessous:
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: erreur: 'LibDNNConvSpatial' ne nomme pas de type
LibDNNConvSpatial:: LibDNNConvSpatial (configuration de LibDNNConvConfig) {
^
/ home / intel / Documents / caffe_src / opencl_caffe / src / caffe / libdnn / libdnn_conv_spatial. cpp: 117 : 25: erreur: initialiseur attendu avant le jeton '<'
chaîne LibDNNConvSpatial:: generate_fw_defs () {

Une idée de ce qui pourrait ne pas aller ?. Il n'y a pas non plus de dossier include / caffe / greentea sur la branche opencl, donc je l'ai copié depuis " https://github.com/01org/caffe ".

@rachithayp
Pouvez-vous essayer les instructions du chapitre ci-dessous? C'est un aperçu du chapitre d'installation de notre prochain livre sur opencl caffe. Merci @ naibaf7

J'espère que cela vous éclairera et vous aidera dans vos efforts de caffe opencl.

installation-apprentissage-en-profondeur-python-chap.pdf

@ bxk-sonavex - J'utilise la version Caffe OpenCL (avec libDNN et CLBlast) sur Windows avec l'ancien GPU Intel 4400 SANS Intel Spatial - cela semble fonctionner correctement mais il peut être sous-optimal. Voici la liste des périphériques Caffe ("programme d'exécution ck: caffe --cmd_key = query_gpu_opencl"):
output_caffe_opencl_devices.txt

Voici la sortie de la classification d'image sur Windows avec la version Caffe OpenCL ci-dessus et GoogleNet:
output_caffe_opencl_image_classification.txt

Je vérifie principalement l'inférence / la détection d'objets à ce stade (nous essayons d'unifier l'installation DNN, l'analyse comparative et l'optimisation sur toutes les plates-formes possibles), donc je n'ai pas vraiment insisté sur les autres capacités et modèles de Caffe sous Windows avec OpenCL ...

J'ai aussi juste essayé de compiler Caffe OpenCL avec Intel Spatial ON ("ck install package: lib-caffe-bvlc-opencl-libdnn-clblast-universal --env.USE_INTEL_SPATIAL = ON") et j'observe les 2 mêmes erreurs de construction que l'était rapporté plus tôt par @atlury):
output_caffe_build_error_with_intel_spatial.txt

votre HD 4400 fonctionne-t-il plus vite avec caffe qu'avec CPU?
J'ai compilé clCaffe et l'ai exécuté sur mon HD 5500, mais il est 5 fois plus lent que le CPU (i3 5005U)
Je ne sais pas pourquoi.

Cette page vous a été utile?
0 / 5 - 0 notes