使用 Thrust CUDA 对对象进行排序

标签 sorting cuda thrust cudpp

是否可以使用 Thrust 库对对象进行排序?
我有以下结构:

struct OB{
  int N;
  Cls *C; //CLS is another struct.
}

是否可以使用推力来根据 N 对一组 OB 进行排序?您能否提供一个使用推力对物体进行分类的简单示例?如果推力无法这样做,是否还有其他 CUDA 库允许我这样做?

最佳答案

thrust::sort 的文档显示它接受一个比较运算符。请参阅他们的 example这些是如何定义和使用的。我还没有测试过这个,但根据这个例子,你只需要一个看起来像这样的结构:

struct OBCmp {
  __host__ __device__
  bool operator()(const OB& o1, const OB& o2) {
      return o1.N < o2.N;
  }
};

然后调用 thrust::sort(obs.begin(), obs.end(), OBCmp()) .

关于使用 Thrust CUDA 对对象进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5282039/

相关文章:

mongodb - Meteor - 如何指定要返回和排序的字段?

cuda - Nsight Eclipse not found/CUDA11.1安装问题

cuda - 减少 CUDA

c++ - thrust::max_element 是在主机上运行还是在设备上运行?

javascript - 选择下拉列表时 Angular 中的 orderBy 多个字段

javascript - 对对象数组进行排序的简单函数

java - 如何在 Android 中正确排序数组中的大写和小写字符串?

CUDA:没有 CUDA 工具包的 nvcc

sdk - 充分利用 CUDA 5 的功能需要哪些卡和计算能力

c - CUDA 大整数加法