1

我正在尝试使用 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.
4

1 回答 1

3

您可以通过更改这行代码来解决该特定问题:

                pool_cstr = thrust::device_malloc(POOL_SZ);

对此:

                pool_cstr = thrust::device_malloc<char>(POOL_SZ);

但正如@Eric 所指出的,一旦你修复了这个问题,你会在尝试编译这段代码时遇到其他问题。

编辑:实际上剩余的问题似乎都是警告,并且生成了一个似乎运行正确的可执行文件(使用上述修复)。

于 2013-10-19T15:43:27.317 回答