Это концептуальный вопрос в отношении программирования.
Подводя итог, у меня есть два массива/вектора, и мне нужно отсортировать один с изменениями, распространяющимися и на другой, так что, если я сортирую arrayOne, для каждого обмена в сортировке - то же самое происходит с arrayTwo. Теперь я знаю, что std::sort позволяет вам определить функцию сравнения (я полагаю, для пользовательских объектов), и я подумывал определить ее для одновременной замены arrayTwo.
Итак, что я хочу, это отсортировать два вектора на основе значений в одном из векторов, используя CUDA.
Вот где моя неуверенность возрастает, по сути, я хочу использовать библиотеку Thrust для сортировки. Поддерживает ли он определение пользовательской функции сравнения? Если это так, я до сих пор не понял, как распространить изменение в arrayTwo (поскольку оно будет основано на CUDA).
У меня действительно нет времени для реализации пользовательской параллельной быстрой сортировки на CUDA, как бы я ни хотел/не хотел.
Причина
По сути, мне нужно выполнить сортировку и вычисление множества массивов переменных вместо одного массива (например, деревья регрессии). Естественно, мне нужно сделать это как можно быстрее, сортировка на основе процессора просто недостаточно быстра.
#ОБНОВЛЕНИЕ
Я должен подчеркнуть, что у меня нет проблем с сортировкой двух на хосте, я ищу решение, использующее CUDA. Спасибо.
#ОБНОВЛЕНИЕ 2
Я думаю, что мне действительно повезло, и я нашел решение, так как я разместил вопрос, оказывается, Thrust на самом деле предоставляет именно то, что я ищу по умолчанию:
#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);
// keys is now { 1, 2, 4, 5, 7, 8}
// values is now {'a', 'c', 'b', 'e', 'f', 'd'}
*взято из http://code.google.com/p/thrust/wiki/QuickStartGuide#Fancy_Iterators*
Итак, теперь все, что мне нужно сделать, это получить два тяги::device_vectors из двух массивов (которые я должен получить из 2D-массива). Счастливый.
thrust::sort
для этой цели. - person Kerrek SB   schedule 12.08.2011[(1,A), (3, B), (-11, X), (1, C), ...]
. - person Kerrek SB   schedule 12.08.2011