Fehler: Funktion "atomicAdd(double *, double)" wurde bereits definiert
Bekomme ich diese Fehlermeldung beim Versuch zu kompilieren, die von caffe-Derivat DeepLab_v2 auf Ubuntu 14.04.5 mit Cuda 8.0.
Weiß jemand, wie man dieses Problem lösen?
DeepLab_v2 kompiliert problemlos auf einem anderen computer, Cuda 7.5, aber da in meinem jetzigen Rechner habe ich eine Pascal-Titan X, die ich wahrscheinlich verwenden müssen, Cuda 8.0.
- CUDA 8.0 bietet eine definition von
atomicAdd
aufdouble
Mengen, die nicht vorhanden war in früheren CUDA-toolkits. Der code, mit der Sie arbeiten offenbar auch seine eigene definition/Umsetzung, und dies ist die Quelle der Fehlermeldung. Der richtige fix ist, um source-code-änderungen an der software in Frage, um es kompatibel mit CUDA-8. Diese Frage von Interesse sein können. - Hmm, die Antwort als korrekt markiert ist, aber es ist nicht absolut klar ist mir, was getan werden muss. Muss ich die einfügen die
#if !defined(__CUDA_ARCH__) || __CUDA_ARCH__ >= 600 #else __device__ double atomicAdd(double* a, double b) { return b; } #endif
oben auf jeder.cpp
Datei im caffe verwendet, dieatomicAdd
Funktion und dann neu kompilieren Caffe? Hast du Erfahrungen mit denen? - Offenbar funktioniert es, ich werde nach der vollständigen änderung als Antwort. Vielen Dank für Ihre Hilfe!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich es endlich funktioniert mit der Hilfe von @Robert Crovella Kommentar. Ich hatte zum ändern der Datei
common.cuh
von der DeepLab_v2 master-Zweig in der folgenden Weise:common.cuh
- Datei, die ich hatte, um es zu schaffen, war dies der Fall für Sie?