2012-07-27 6 views
6

मैप मेमोरी पर cudaHostGetDevicePointer द्वारा शून्य-प्रति का उपयोग करना चाहता हूं। क्या मैं thrust::host_vector का उपयोग कर सकता हूं या मुझे cudaHostAlloc(...,cudaHostAllocMapped)? का उपयोग करना चाहिए या क्या यह जोर से करना आसान है?क्या मैं जोर :: host_vector का उपयोग कर सकता हूं या मुझे शून्य-प्रतिलिपि के साथ cudaHostAlloc का उपयोग करना चाहिए?

उत्तर

5

मुझे पूरा यकीन है कि मैप किए गए होस्ट आवंटन के रूप में जोर :: होस्ट_वेक्टर का उपयोग करना अभी भी संभव नहीं है। एक पिन मेमोरी आवंटक है, लेकिन मुझे विश्वास नहीं है कि मैप किए गए मेमोरी उपलब्ध है।

  1. आवंटित मैप किया गया, पिन किए गए मेजबान cudaHostAlloc
  2. के साथ स्मृति शून्य प्रतिलिपि cudaHostGetDevicePointer
  3. का उपयोग कर स्मृति के लिए उपकरण सूचक जाओ बनाएँ thrust::device_ptr कि डिवाइस सूचक पर thrust::device_pointer_cast का उपयोग कर: क्या आप क्या करने की जरूरत कुछ इस तरह है (अधिक जानकारी के लिए here देख)

आप या तो thrust::device_ptr का उपयोग कर एक thrust::device_vector कर सकते हैं या dirctly ०१२३२६९९१६ पारितकिसी एल्गोरिदम को जो एक इटरेटर स्वीकार करता है।

+0

धन्यवाद! लेकिन मैं जोर :: device_ver जोर से :: device_ver का उपयोग कर कैसे कर सकता हूं? – Alex

+1

आप एक इटरेटर रेंज से 'जोर :: डिवाइस_वेक्टर' बना सकते हैं, इसलिए 'thrust :: device_vector v (p, p + n) 'जैसे कुछ' डिवाइस_ptr'' p' से वेक्टर 'v' बनाता है जो इंगित करता है 'एन' तत्वों का आवंटन। – talonmies

+1

लेकिन यह नया डिवाइस_वेक्टर बनाएगा और डिवाइस_प्टर पी से वेक्टर में स्मृति की प्रतिलिपि बनायेगा, है ना? – Alex

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