thrust使用问题

在主机端可以定义device_vector和host_vector,我将大量数据读入到host_vector,再把host_vector赋值给device_vector,然后想用Kernel来处理device_vector中的数据,那么就需要主机端启动Kernel的时候传递给kernel一个device_vector的指针(?),不知道是否可以将device_vector传递到Kernel中啊?还请指教

楼主您好,我不是C++用户。

建议其他会员、版主、nvidia原厂支持或者总版主为您解答。

// allocate device vector
thrust::device_vector d_vec(4);
// obtain raw pointer to device vector’s memory
int * ptr = thrust::raw_pointer_cast(&d_vec[0]);
// use ptr in a CUDA C kernel
my_kernel<<<N/256, 256>>>(N, ptr);

参考下!

十分感谢,非常有用

一直以为不能这么做,发现了这个帖子,果然可以,省去了复制内存的消耗。
:-),俺也受益了,谢谢,

反過來 CUDA TO Thrust 的方法
T raw_ptr;
cudaMalloc(raw_ptr);
device_ptr dev_p = device_pointer_cast(raw_ptr);
sort(dev_p,dev_p+N);