整数値のリストを並べ替えたいのですが、並べ替える前に、それらを数値Nに分割する必要があります。したがって、いくつかの重複キーがあり、この重複をリストのstable_sortに使用します。
私の質問は、すべての値を分割し、分割された値をリストに格納してから並べ替えを実行するか、transform_iteratorを使用する方が良いということです。transform_iteratorを使用すると、ソートアルゴリズムがradix_sortからmerge_sortに変更されます。これは、時間差が大きいためです。
例えば:
//already sorted according to another parameter
thrust::device_vector<int> myvalues...
//we want to group them..
thrust::transform(myvalues.begin(), myvalues.end(), groups.begin(), divide_by_n(N));
thrust::stable_sort_by_key(groups.begin(), groups.end(), myvalues.begin();
また
first = thrust::make_transform_iterator(myvalues.begin(), divide_by_n(N));
last = thrust::make_transform_iterator(myvalues.end(), divide_by_n(N));
thrust::stable_sort_by_key(first, last, myvalues.begin());
ありがとう