هل يمكنني استخدام thrust::host_vector أو يجب علي استخدام cudaHostAlloc للنسخة الصفرية مع Thrust؟
سؤال
أريد استخدام نسخة صفرية على الذاكرة المعينة بواسطة cudaHostGetDevicePointer
.هل بإمكاني استخدم thrust::host_vector
أو لا بد لي من استخدام cudaHostAlloc(...,cudaHostAllocMapped)?
أم أنه من الأسهل بطريقة أو بأخرى القيام بالدفع؟
المحلول
أنا متأكد تمامًا من أنه لا يزال من غير الممكن استخدام thrust::host_vector كتخصيص مضيف معين.يوجد مُخصص ذاكرة مثبت، لكن لا أعتقد أن الذاكرة المعينة متوفرة.ما عليك القيام به هو شيء من هذا القبيل:
- تخصيص الذاكرة المضيفة المعينة والمثبتة
cudaHostAlloc
- احصل على مؤشر الجهاز لذاكرة النسخة الصفرية باستخدام
cudaHostGetDevicePointer
- إنشاء
thrust::device_ptr
استخدامthrust::device_pointer_cast
على مؤشر الجهاز هذا (انظر هنا للمزيد من المعلومات)
يمكنك إما إجراء thrust::device_vector
باستخدام thrust::device_ptr
أو المرور مباشرة thrust::device_ptr
إلى أي خوارزميات تقبل المكرر.
لا تنتمي إلى StackOverflow