我有使用设备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>"
任何人都知道如何让它发挥作用? 提前致谢
答案 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);