У меня есть большой массив, который я должен отсортировать в CUDA Thrust или C ++ STL.Данные уже разбиты на сегменты по ключу.Мой тип должен сортировать значения в определенных сегментах по моему предикату, сохраняя при этом смежность каждого сегмента и относительный порядок сегментов.Что не нужно, так это чтобы значения в других сегментах были полностью отсортированы.Они могут произвольно перемещаться внутри своего сегмента.
Я хотел бы знать, какой наиболее эффективный предикат использовать для относительного порядка в определенных сегментах, которые меня не интересуют.
thrust::sort(vec.begin(), vec.end(), [] (auto a, auto b) {
return (a.key() != b.key()) ? a.key() < b.key() : // keep segments in place
(a.needsSorted() ? a.value() < b.value() : (WHAT_GOES_HERE?)); });
Мой предикат, когда я забочусь о значениях (a.value () Меня интересуют ответы как для GPU, так и для CPU, но в основном для GPU.Спасибо.