我正试图用cuda推力对字符串进行排序。
我在这个链接上找到了一个样本
https://github.com/bzip2-cuda/bzip2-cuda/blob/master/tst/string_sort_try0.cu
当我尝试编译时,我收到以下错误消息。我该怎么办才能修复它?
"Error 1 error : **no instance of overloaded function "thrust::pointer<Element, Tag, Reference, Derived>::operator= [with Element=char, Tag=thrust::device_system_tag, Reference=thrust::device_reference<char>, Derived=thrust::device_ptr<char>]" matches the argument list** C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust\device_ptr.h 109 1 CharSort "
代码块的一部分是
class device_string
{
public:
int cstr_len;
char* raw;
thrust::device_ptr<char> cstr;
static char* pool_raw;
static thrust::device_ptr<char> pool_cstr;
static thrust::device_ptr<char> pool_top;
// Sets the variables up the first time its used.
__host__ static void init()
{
static bool v = true;
if( v )
{
v = false;
pool_cstr = thrust::device_malloc(POOL_SZ);
pool_raw = (char*)raw_pointer_cast( pool_cstr );
pool_top = pool_cstr;
}
}
// Destructor for device variables used.
答案 0 :(得分:3)
您可以通过更改以下代码来解决该特定问题:
pool_cstr = thrust::device_malloc(POOL_SZ);
到此:
pool_cstr = thrust::device_malloc<char>(POOL_SZ);
但正如@Eric指出的那样,一旦你解决了这个问题,你就会遇到其他试图编译这段代码的问题。
编辑:实际上剩下的问题似乎都是警告,并且生成了一个似乎正常运行的可执行文件(使用上述修复程序)。