Cuda 如何投射推力::设备_向量<;int>;到原始指针
我有一个推力Cuda 如何投射推力::设备_向量<;int>;到原始指针,cuda,gpu,thrust,Cuda,Gpu,Thrust,我有一个推力装置\u矢量。我想把它转换成一个原始指针,这样我就可以把它传递给内核。我怎样才能做到 thrust::device_vector<int> dv(10); //CAST TO RAW kernel<<<bl,tpb>>>(pass raw) 推力:装置矢量dv(10); //生硬 内核(原始传递) 您可以使用推力::原始指针\u投射来执行此操作。device vector类有一个成员函数data,它将把推力::device_ptr返回
装置\u矢量。我想把它转换成一个原始指针,这样我就可以把它传递给内核。我怎样才能做到
thrust::device_vector<int> dv(10);
//CAST TO RAW
kernel<<<bl,tpb>>>(pass raw)
推力:装置矢量dv(10);
//生硬
内核(原始传递)
您可以使用推力::原始指针\u投射来执行此操作。device vector类有一个成员函数data
,它将把推力::device_ptr
返回到vector持有的内存中,该内存可以进行强制转换,如下所示:
thrust::device_vector<int> dv(10);
int * dv_ptr = thrust::raw_pointer_cast(dv.data());
kernel<<<bl,tpb>>>(dv_ptr)
推力:装置矢量dv(10);
int*dv_ptr=推力::原始指针(dv.data());
内核(dv_ptr)
(免责声明:在浏览器中编写,从未编译,从未测试)。推力中包含了一个完整的工作示例:我们需要将该数据复制回来吗?既然dv_ptr已经从dv中修改了数据,我们该怎么做才能将其复制回dv?不,不需要将其复制回,它只是一个静态转换,以避免编译时检查。在运行时,没有什么真正的变化。