具有device_ptr错误的thrust :: sort_by_key

时间:2013-05-16 15:57:32

标签: cuda thrust


我有使用设备ptr(thrust :: device_ptr< int>)按键排序的问题。
这样:

thrust::sort_by_key(dev_ptr_key,dev_ptr_key+noOfSelectedRows,dev_ptr_val,dev_ptr_val+noOfSelectedRows);

给出错误:

Error   48  error : call of an object of a class type without appropriate operator() or conversion functions to pointer-to-function type    

此错误来自merging_sort.h和stable_merge_sort.incl 使用begin():

thrust::sort_by_key(dev_ptr_key->begin(),dev_ptr_key->begin()+noOfSelectedRows,dev_ptr_val->begin(),dev_ptr_val->begin()+noOfSelectedRows);

给出错误:

Error   28  error : loop in sequence of "operator->" functions starting at class "thrust::device_ptr<int>"

任何人都知道如何让它发挥作用? 提前致谢

1 个答案:

答案 0 :(得分:1)

没有sort_by_key的版本符合您的参数列表:

thrust::sort_by_key(dev_ptr_key,dev_ptr_key+noOfSelectedRows,dev_ptr_val,dev_ptr_val+noOfSelectedRows);

您正在传递键范围的开头,键范围的结尾,值范围的开头以及值范围的结尾。但是没有必要传递值范围的结尾(并且没有版本的sort_by_key支持传递值范围的结尾),因为它隐含在键范围的长度内。

请改为尝试:

thrust::sort_by_key(dev_ptr_key,dev_ptr_key+noOfSelectedRows,dev_ptr_val);