我有一个thrust的device_vector
,我想将它强制转换为原始指针以便将其传递给内核。我该如何做?
thrust::device_vector<int> dv(10);
//CAST TO RAW
kernel<<<bl,tpb>>>(pass raw)
您可以使用thrust::raw_pointer_cast
来实现。设备向量类有一个成员函数data
,它将返回一个thrust::device_ptr
指向向量所持有的内存,这个指针可以被强制转换,类似于这样:
thrust::device_vector<int> dv(10);
int * dv_ptr = thrust::raw_pointer_cast(dv.data());
kernel<<<bl,tpb>>>(dv_ptr)
(免责声明:在浏览器中编写,从未编译,从未测试)。这里包括Thrust的完整工作示例:unwrap_pointer.cu