我有一个使用标准CUDA malloc分配的内存数组,并将其传递给以下函数:
void MyClass::run(uchar4 * input_data)
我还有一个类成员是一个thrust device_ptr,声明如下:
thrust::device_ptr<uchar4> data = thrust::device_malloc<uchar4(num_pts);
这里的num_pts是数组中值的数量,input_data指针保证长度为num_pts。
现在,我想将输入数组复制到thrust_device_ptr中。我查看了thrust文档,并且其中很多内容都涉及从设备到主机内存和相反方向的复制。我想知道在thrust上执行设备到设备复制的最佳性能优化方法是什么,或者我应该只使用cudaMemcpy?
cudaMemcpy
函数,并设置cudaMemcpyDeviceToDevice
标志,首先需要从thrust::device_ptr
中提取原始指针,像这样:uchar4* data_ptr = thrust::raw_pointer_cast(data);
- sgarizvi