जब cudaDeviceSynchronize
फ़ंक्शन पर कॉल कर रहा है तो वास्तव में आवश्यकता है?कब cudaDevice सिंक्रनाइज़ करने के लिए?
जहां तक मैं सीयूडीए दस्तावेज से समझता हूं, सीयूडीए कर्नेल असीमित हैं, इसलिए ऐसा लगता है कि हमें प्रत्येक कर्नेल लॉन्च के बाद cudaDeviceSynchronize
पर कॉल करना चाहिए। हालांकि, मैंने समय माप से पहले एक को छोड़कर, cudaDeviceSynchronize
के साथ और बिना किसी कोड (प्रशिक्षण तंत्रिका नेटवर्क) की कोशिश की है। मैंने पाया है कि मुझे एक ही परिणाम मिलता है लेकिन 7-12x (मैट्रिक्स आकारों के आधार पर) के बीच की गति के साथ।
तो सवाल यह है कि समय माप के अलावा cudaDeviceSynchronize
का उपयोग करने के कोई कारण हैं।
उदाहरण के लिए:
यह GPU वापस
cudaMemcpy
साथ होस्ट करने से डेटा की प्रतिलिपि से पहले की जरूरत है?तरह
C = A * B D = C * F
मैट्रिक्स गुणा मैं दोनों के बीच cudaDeviceSynchronize
रखना चाहिए अगर मैं कर सकता हूँ?
मेरे प्रयोग से ऐसा लगता है कि मैं नहीं करता हूं।
cudaDeviceSynchronize
प्रोग्राम इतना धीमा क्यों करता है?
एक उदाहरण होगा यदि आपके पास कर्नेल में कोई प्रिंट स्टेटमेंट है, तो बफर सिंक्रनाइज़ेशन ईवेंट तक प्रिंट नहीं करेगा। –