Я получаю эту ошибку при попытке скомпилировать производное caffe DeepLab_v2 на Ubuntu 14.04.5 с Cuda 8.0.Ошибка: функция «atomicAdd (double *, double)» уже определена
Кто-нибудь знает, как это решить?
DeepLab_v2 компилируется на другом компьютере с Cuda 7.5, но поскольку на моем текущем компьютере у меня есть Pascal Titan X, мне, вероятно, нужно использовать Cuda 8.0.
CUDA 8.0 обеспечивает определение '' atomicAdd' на double' количеств, которые не присутствовали в предыдущей CUDA инструментарии. Код, с которым вы работаете, также, по-видимому, обеспечивает собственное определение/реализацию, и это является источником сообщения об ошибке. Правильное исправление заключается в том, чтобы внести исправления исходного кода в соответствующее программное обеспечение, чтобы сделать его совместимым с CUDA 8. [Этот вопрос] (http://stackoverflow.com/questions/37566987/cuda-atomicadd-for-doubles-definition-error) может представлять интерес. –
Хм, этот ответ отмечен как правильный, однако мне не ясно, что нужно сделать. Должен ли я вставлять '#if! Defined (__ CUDA_ARCH__) || __CUDA_ARCH__> = 600 #else __device__ double atomicAdd (double * a, double b) {return b; } # endif' поверх каждого файла '.cpp' в caffe, который использует функцию' atomicAdd', а затем перекомпилирует Caffe? У вас есть опыт? – mcExchange
Очевидно, это действительно работает, я отправлю полную модификацию в качестве ответа. Спасибо за вашу помощь! – mcExchange