【发布时间】:2016-05-04 08:57:30
【问题描述】:
我使用了以下方法,希望避免从主机到设备的 memcpy。推力库是否确保在此过程中不会有从主机到设备的 memcpy?
void EScanThrust(float * d_in, float * d_out)
{
thrust::device_ptr<float> dev_ptr(d_in);
thrust::device_ptr<float> dev_out_ptr(d_out);
thrust::exclusive_scan(dev_ptr, dev_ptr + size, dev_out_ptr);
}
这里d_in和d_out是使用cudaMalloc准备的,d_in在调用这个函数之前使用cudaMemcpy填充数据
【问题讨论】:
-
不应该有任何从主机到设备的内存复制。根据您的描述,任何地方都没有主机指针或数据,那么推力如何从主机复制任何东西?无论如何,使用诸如
nvprof --print-gpu-trace ...之类的分析器来验证这一点很简单