2015-01-15 7 views
5

पर malloc() बनाम cudaHostAlloc() के साथ आवंटित डेटा की सीपीयू मेमोरी एक्सेस विलंबता मैं एक साधारण परीक्षण कर रहा हूं जो malloc() से आवंटित डेटा की एक्सेस विलंबता की तुलना कर रहा है और cudaHostAlloc() से आवंटित डेटा मेजबान (सीपीयू एक्सेस कर रहा है)। मैंने देखा कि cudaHostAlloc() के साथ आवंटित डेटा तक पहुंच जेट्सॉन Tk1 पर malloc() के साथ आवंटित डेटा तक पहुंचने से बहुत धीमी है।टेग्रा टीके 1

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

मेरा प्रश्न निम्न है: मेजबान से cudaHostAlloc'd डेटा तक पहुंचने का ओवरहेड कहां से आता है? क्या सीपीयू कैश पर/dev/nvmap अनचाहे डेटा मैप किया गया है?

उत्तर

5

मेरा मानना ​​है कि मुझे इस व्यवहार का कारण मिला है। आगे की जांच के बाद (Linux trace events का उपयोग करके और nvmap driver code को देखकर) मैंने पाया कि ओवरहेड का स्रोत इस तथ्य से आता है कि cudaHostAlloc() के साथ आवंटित डेटा को NVMAP_HANDLE_UNCACHEABLE ध्वज का उपयोग करके "uncacheable" चिह्नित किया गया है। pgprot_noncached() पर कॉल करने के लिए यह सुनिश्चित किया जाता है कि प्रासंगिक पीटीई को बिना दर्द के चिह्नित किया गया है।

होस्ट का व्यवहार cudaMallocManaged() का उपयोग करके आवंटित डेटा तक पहुंच अलग है। डेटा कैश किया जाएगा (ध्वज NVMAP_HANDLE_CACHEABLE का उपयोग कर)। इसलिए मेजबान से इस डेटा तक पहुंच malloc()'d डेटा के बराबर है। यह भी ध्यान रखना महत्वपूर्ण है कि CUDA रनटाइम डिवाइस (GPU) को होस्ट के साथ समवर्ती रूप से cudaMallocManaged() के साथ आवंटित किसी भी डेटा तक पहुंचने की अनुमति नहीं देता है, और ऐसी कार्रवाई सेगफॉल्ट उत्पन्न होगी। हालांकि, रनटाइम डिवाइस और मेजबान दोनों पर cudaHostAlloc()'d डेटा समवर्ती पहुंच की अनुमति देता है, और मेरा मानना ​​है कि यह cudaHostAlloc()'d डेटा को बिना व्यवहार्य बनाने के कारणों में से एक है।

संबंधित मुद्दे