是否可以使用 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/