-1

10^5 エントリの 1 つの配列をソートし、次の配列に対して同じことを行う最も簡単で最速の方法を探しています。配列はすべて同じサイズです。例えば:

1a
6c
3b

最初の列を並べ替える必要がありますが、6 は c と同じ行にある必要があります。

1a 3b 6c

私は何かを見つけたと思いますが、実装するのは奇妙に見えます:

CUDA/Thrust を使用して、配列の 1 つの値に関して 2 つの配列/ベクトルを並べ替える方法

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 に答える