2017-10-20 6 views
0

Je travaille dans un projet C++ (VS2105) dans un environnement Windows qui lance plusieurs threads. PC a deux NVIDIA GeForce GTX 1080. Chaque thread utilise un classificateur caffe différent en mode GPU.caffe multi-gpu CUDNN_STATUS_EXECUTION_FAILED

Si tous les threads utilisent un GPU, le programme fonctionne correctement. Il fonctionne bien à la fois en utilisant GPU 0 ou en utilisant GPU1. Le problème vient quand j'utilise un GPU différent pour chaque thread. Par exemple, si le programme lance deux bandes de roulement et classificateur en fil 1 utilise le GPU 0 (Caffe::SetDevice(0);) et classificateur en fil 2 utilise le GPU 1 (Caffe::SetDevice(1);), la prédiction commence son travail mais soudainement je reçois l'erreur cudnn_conv_layer.cu:28] Check failed: status == CUDNN_STATUS_SUCCESS (8 vs. 0) CUDNN_STATUS_EXECUTION_FAILED

J'ai vu similaire des erreurs de personnes travaillant dans des projets multithread avec une interface python liée à des problèmes de threads CuDNN travaillant avec un GPU, mais dans un seul GPU, le programme fonctionne bien.

Mes modèles sont formés sur un seul GPU. Dois-je former des modèles séparés en GPU 0 et en GPU 1 ?. Dois-je configurer les classificateurs d'une manière spéciale pour l'utiliser dans un environnement multithread multiGPU? J'utilise la branche windows de caffe avec cuda 8.0 et utilise l'interface C++ de caffe liée comme bibliothèque statique au projet.

Répondre

0

Rencontré le même problème ... résolu le "verrou", travaille maintenant en une fois avec un GPU