Tôi gặp phải lỗi này khi cố gắng biên dịch dẫn xuất caffe DeepLab_v2 trên Ubuntu 14.04.5 với Cuda 8.0.lỗi: chức năng "atomicAdd (double *, double)" đã được xác định
Có ai biết cách giải quyết vấn đề này không?
DeepLab_v2 biên soạn tiền phạt trên một máy tính khác có Cuda 7.5, nhưng vì trong máy tính hiện tại của tôi, tôi có Pascal Titan X, có lẽ tôi cần sử dụng Cuda 8.0.
CUDA 8.0 cung cấp một định nghĩa của 'atomicAdd' trên 'double' lượng đó là không có mặt trong bộ công cụ CUDA trước. Mã bạn đang làm việc cũng dường như cung cấp định nghĩa/triển khai của chính nó và đây là nguồn của thông báo lỗi. Sửa lỗi chính xác là thay đổi mã nguồn cho phần mềm được đề cập để làm cho nó tương thích với CUDA 8. [Câu hỏi này] (http://stackoverflow.com/questions/37566987/cuda-atomicadd-for-doubles-definition-error) có thể được quan tâm. –
Hmm câu trả lời được đánh dấu là chính xác, tuy nhiên nó không rõ ràng với tôi, những gì cần phải được thực hiện. Tôi có phải chèn '#if! Được xác định (__ CUDA_ARCH__) || __CUDA_ARCH__> = 600 #else __device__ double atomicThêm (double * a, double b) {return b; } # endif' trên đầu mỗi tập tin '.cpp' trong caffe sử dụng hàm' atomicAdd' và sau đó biên dịch lại Caffe? Bạn có kinh nghiệm với điều đó không? – mcExchange
Kiểm dịch nó hoạt động, tôi sẽ đăng sửa đổi hoàn chỉnh làm câu trả lời. Cảm ơn bạn đã giúp đỡ! – mcExchange