我正在寻找最简单,最快速的方法来对一个10 ^ 5个条目的数组进行排序,然后对下一个数组执行相同的操作。阵列大小都相同。 例如:
1 a
6 c
3 b
我必须对第一列进行排序,但是6必须与c:
在同一行1 a 3 b 6 c
我想我找到了一些东西,但实施起来看起来很奇怪:
How to sort two arrays/vectors in respect to values in one of the arrays, using CUDA/Thrust
答案 0 :(得分:2)
thrust::sort_by_key正是您所需要的。
以下是他们文档中的示例。
#include <thrust/sort.h>
...
const int N = 6;
int keys[N] = { 1, 4, 2, 8, 5, 7};
char values[N] = {'a', 'b', 'c', 'd', 'e', 'f'};
thrust::sort_by_key(keys, keys + N, values, thrust::greater<int>());
// keys is now { 8, 7, 5, 4, 2, 1}
// values is now {'d', 'f', 'e', 'b', 'c', 'a'}
如果你已经在gpu上有数据,你也可以使用device_ptr做同样的事。