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 auf double 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, die atomicAdd 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!
InformationsquelleAutor mcExchange | 2016-09-01
Schreibe einen Kommentar