परिभाषित किया गया है मुझे Cuda 8.0 के साथ उबंटू 14.04.5 पर कैफे व्युत्पन्न DeepLab_v2 संकलित करने का प्रयास करते समय यह त्रुटि मिलती है।त्रुटि: फ़ंक्शन "atomicAdd (डबल *, डबल)" को पहले से ही
क्या कोई इसे हल करने के बारे में जानता है?
दीपलाब_वी 2 दूसरे कंप्यूटर पर ठीक है, जिसमें कुडा 7.5 है, लेकिन जब से मेरे वर्तमान कंप्यूटर में मेरे पास पास्कल टाइटन एक्स है, तो मुझे शायद कुडा 8.0 का उपयोग करने की आवश्यकता है।
CUDA 8.0 पर 'मात्रा है कि पिछले CUDA उपकरणकिटें में मौजूद नहीं थे double'' atomicAdd' की एक परिभाषा प्रदान करता है। जिस कोड के साथ आप काम कर रहे हैं वह स्पष्ट रूप से अपनी परिभाषा/कार्यान्वयन प्रदान करता है, और यह त्रुटि संदेश का स्रोत है। सही फिक्स यह है कि इसे कोड में सॉफ़्टवेयर में स्रोत कोड में परिवर्तन करना है ताकि इसे CUDA 8 के साथ संगत बनाया जा सके। [यह प्रश्न] (http://stackoverflow.com/questions/37566987/cuda-atomicadd-for-doubles-definition-error) ब्याज का हो सकता है। –
हम्म कि उत्तर सही के रूप में चिह्नित किया गया है, हालांकि यह मेरे लिए क्रिस्टल स्पष्ट नहीं है, क्या करने की आवश्यकता है। क्या मुझे '#if! परिभाषित करना है (__ CUDA_ARCH__) || __CUDA_ARCH__> = 600 #else __device__ डबल परमाणु जोड़ें (डबल * ए, डबल बी) {वापसी बी; } # endif' कैफी में प्रत्येक '.cpp' फ़ाइल के शीर्ष पर जो' atomicAdd' फ़ंक्शन का उपयोग करता है और फिर कैफे को फिर से संकलित करता है? क्या आपके पास इसका अनुभव है? – mcExchange
यह काम करता है, मैं एक पूर्ण जवाब को एक उत्तर के रूप में पोस्ट करूंगा। आपकी सहायताके लिए धन्यवाद! – mcExchange