Otrzymuję ten błąd podczas próby skompilowania pochodnej caffe DeepLab_v2 na Ubuntu 14.04.5 z Cuda 8.0.error: funkcja "atomicAdd (double *, double)" została już zdefiniowana
Czy ktoś wie, jak rozwiązać ten problem?
DeepLab_v2 kompiluje dobrze na innym komputerze z Cuda 7.5, ale ponieważ na moim obecnym komputerze mam Pascal Titan X, prawdopodobnie potrzebuję używać Cuda 8.0.
CUDA 8.0 zawiera definicję '' double' atomicAdd' na ilości, że nie był obecny w poprzednich zestawów narzędzi CUDA. Kod, nad którym pracujesz, najwyraźniej zapewnia własną definicję/implementację i jest źródłem komunikatu o błędzie. Poprawna poprawka polega na wprowadzeniu zmian kodu źródłowego w oprogramowaniu, aby był zgodny z CUDA 8. [To pytanie] (http://stackoverflow.com/questions/37566987/cuda-atomicadd-for-doubles-definition-error) mogą być interesujące. –
Hmm, ta odpowiedź jest oznaczona jako poprawna, ale nie jest dla mnie jasne, co należy zrobić. Czy muszę wstawić '#if! Defined (__ CUDA_ARCH__) || __CUDA_ARCH__> = 600 #else __device__ double atomicAdd (double * a, double b) {return b; } # endif' na górze każdego pliku '.cpp' w caffe, który używa funkcji' atomicAdd', a następnie rekompiluje Caffe? Czy masz z tym doświadczenie? – mcExchange
Apparantly to działa, opublikuję pełną modyfikację jako odpowiedź. Dzięki za pomoc! – mcExchange