هل يمكنني استخدام thrust::host_vector أو يجب علي استخدام cudaHostAlloc للنسخة الصفرية مع Thrust؟

StackOverflow https://stackoverflow.com//questions/11692326

  •  12-12-2019
  •  | 
  •  

سؤال

أريد استخدام نسخة صفرية على الذاكرة المعينة بواسطة cudaHostGetDevicePointer.هل بإمكاني استخدم thrust::host_vector أو لا بد لي من استخدام cudaHostAlloc(...,cudaHostAllocMapped)?أم أنه من الأسهل بطريقة أو بأخرى القيام بالدفع؟

هل كانت مفيدة؟

المحلول

أنا متأكد تمامًا من أنه لا يزال من غير الممكن استخدام thrust::host_vector كتخصيص مضيف معين.يوجد مُخصص ذاكرة مثبت، لكن لا أعتقد أن الذاكرة المعينة متوفرة.ما عليك القيام به هو شيء من هذا القبيل:

  1. تخصيص الذاكرة المضيفة المعينة والمثبتة cudaHostAlloc
  2. احصل على مؤشر الجهاز لذاكرة النسخة الصفرية باستخدام cudaHostGetDevicePointer
  3. إنشاء thrust::device_ptr استخدام thrust::device_pointer_cast على مؤشر الجهاز هذا (انظر هنا للمزيد من المعلومات)

يمكنك إما إجراء thrust::device_vector باستخدام thrust::device_ptr أو المرور مباشرة thrust::device_ptr إلى أي خوارزميات تقبل المكرر.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top