0


我在使用设备 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。
使用开始():

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>"

任何人都知道如何使它工作?提前致谢

4

1 回答 1

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);
于 2013-05-16T16:13:26.200 回答