-1

我正在寻找最简单和最快的方法来对一个包含 10^5 个条目的数组进行排序,然后对下一个数组执行相同的操作。数组的大小都相同。例如:

1 一
6 C
3 B

我必须对第一列进行排序,但 6 必须与 c 在同一行:

1 a 3 b 6 c

我想我找到了一些东西,但实现起来看起来很奇怪:

如何使用 CUDA/Thrust 根据其中一个数组中的值对两个数组/向量进行排序

4

1 回答 1

2

推力::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 执行相同的操作。

于 2012-12-30T00:22:42.583 回答