Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cuda 如何投射推力::设备_向量<;int>;到原始指针_Cuda_Gpu_Thrust - Fatal编程技术网

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?不,不需要将其复制回,它只是一个静态转换,以避免编译时检查。在运行时,没有什么真正的变化。