C++ 用推力调用手写CUDA内核

C++ 用推力调用手写CUDA内核,c++,cuda,thrust,C++,Cuda,Thrust,因为我需要用CUDA对大量的数字数组进行排序,所以我使用了推力。到目前为止,还不错……但是当我想调用一个“手写”内核,它有一个包含数据的推力::主机_向量时,该怎么办 我的方法是(缺少备份): 但编译失败的原因是: 错误:“float**”类型的参数为 与类型的参数不兼容 “推力::主机向量>*” 啊?!我以为我在给浮点和int原始指针?还是我遗漏了什么?调用内核时使用的是调用所在函数的名称,而不是内核的名称,因此参数不匹配 更改: CUDA_CountAndAdd_Kernel<<

因为我需要用CUDA对大量的数字数组进行排序,所以我使用了推力。到目前为止,还不错……但是当我想调用一个“手写”内核,它有一个包含数据的推力::主机_向量时,该怎么办

我的方法是(缺少备份):

但编译失败的原因是:

错误:“float**”类型的参数为 与类型的参数不兼容 “推力::主机向量>*”


啊?!我以为我在给浮点和int原始指针?还是我遗漏了什么?

调用内核时使用的是调用所在函数的名称,而不是内核的名称,因此参数不匹配

更改:

CUDA_CountAndAdd_Kernel<<<1, n>>>(dSamples_raw, dCounts_raw);
CUDA\u计数和添加内核(dSamples\u raw,dCounts\u raw);

CUDA计数和添加内核设备(数据采样原始、数据计数原始);

看看会发生什么。

D'oh!-错误总是由我自己造成的,而不是在实现中。
__global__ void CUDA_CountAndAdd_Kernel_Device(float *samples, int *counts) 
CUDA_CountAndAdd_Kernel<<<1, n>>>(dSamples_raw, dCounts_raw);
CUDA_CountAndAdd_Kernel_Device<<<1, n>>>(dSamples_raw, dCounts_raw);