我想使用 Thrust 库来计算 CUDA 中设备数组的前缀和。我的数组分配有cudaMalloc()
. 我的要求如下:
main()
{
Launch kernel 1 on data allocated through cudaMalloc()
// This kernel will poplulate some data d.
Use thrust to calculate prefix sum of d.
Launch kernel 2 on prefix sum.
}
我想在我的内核之间的某个地方使用 Thrust,所以我需要将指针转换为设备迭代器并返回的方法。下面的代码有什么问题?
int main()
{
int *a;
cudaMalloc((void**)&a,N*sizeof(int));
thrust::device_ptr<int> d=thrust::device_pointer_cast(a);
thrust::device_vector<int> v(N);
thrust::exclusive_scan(a,a+N,v);
return 0;
}