पर malloc() बनाम cudaHostAlloc() के साथ आवंटित डेटा की सीपीयू मेमोरी एक्सेस विलंबता मैं एक साधारण परीक्षण कर रहा हूं जो malloc() से आवंटित डेटा की एक्सेस विलंबता की तुलना कर रहा है और cudaHostAlloc() से आवंटित डेटा मेजबान (सीपीयू एक्सेस कर रहा है)। मैंने देखा कि cudaHostAlloc() के साथ आवंटित डेटा तक पहुंच जेट्सॉन Tk1 पर malloc() के साथ आवंटित डेटा तक पहुंचने से बहुत धीमी है।टेग्रा टीके 1
यह अलग GPUs के मामले में नहीं है और ऐसा लगता है कि केवल टीके 1 पर लागू होता है। कुछ जांच के बाद, मैंने पाया कि cudaHostAlloc() के साथ आवंटित डेटा मेमोरी मैप (एमएमएपी) प्रक्रिया पता स्थान के/dev/nvmap क्षेत्रों में है। यह सामान्य malloc'd डेटा के मामले में नहीं है जो प्रक्रिया ढेर पर मैप किया गया है। मैं समझता हूं कि GPU को डेटा तक पहुंचने की अनुमति देने के लिए यह मैपिंग आवश्यक हो सकती है क्योंकि cudaHostAlloc'd डेटा को होस्ट और डिवाइस दोनों से दिखाना होगा।
मेरा प्रश्न निम्न है: मेजबान से cudaHostAlloc'd डेटा तक पहुंचने का ओवरहेड कहां से आता है? क्या सीपीयू कैश पर/dev/nvmap अनचाहे डेटा मैप किया गया है?