Cuda Thrust String或Char Sort

时间:2013-10-19 14:41:17

标签: c++ c cuda thrust

我正试图用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.

1 个答案:

答案 0 :(得分:3)

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

                pool_cstr = thrust::device_malloc(POOL_SZ);

到此:

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

但正如@Eric指出的那样,一旦你解决了这个问题,你就会遇到其他试图编译这段代码的问题。

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