Комментарии 11
Похоже, после обнуления кармы сегодня некоторые люди достали из закромов лабораторные(курсовые или дипломные), сдули пыль и закопипастили текст на хабр. Хоть оформили бы по-человечески код, есть же теги.
Подпишите, пожалуйста, оси на графике. Y — время выполненеия, X — число элементов? Почему тогда для однопоточного варианта тесты начинаются с 32-х элементов, а для многопоточного — с одного?
И в самом деле больше похоже на каую-то лабу, только оформленную не так уж и аккуратно :-/
И в самом деле больше похоже на каую-то лабу, только оформленную не так уж и аккуратно :-/
Наверное стоит параллельный алгоритм описать подробнее, ибо ваша реализация у меня не сортирует.
if (array_device[idx]<array_device[idx+1]){
int buffer = array_device[idx];
array_device[idx]=array_device[idx+1];
array_device[idx+1] = buffer;
}
Это рейс кондишен в чистом виде.
Параллелить лучше какой-нибудь mergesort или quicksort. Они из «коробки» под это заточены. Пузырек с его O(N²) подходит только под мелочь, которую параллелить смысла не имеет.
Поддерживаю, статья просто мусор.
Автор апеллирует к незначительному выигрышу при сортировке больших массивов, но при большом количестве элементов время работы пузырька и сортировки Хоара или сортировки слиянием (и им подобных) различается на порядки. Таким образом просто использование «нормального» алгоритма сортировки оставляет позади сортировку с параллелизмом практически в любое количество ядер.
Автор апеллирует к незначительному выигрышу при сортировке больших массивов, но при большом количестве элементов время работы пузырька и сортировки Хоара или сортировки слиянием (и им подобных) различается на порядки. Таким образом просто использование «нормального» алгоритма сортировки оставляет позади сортировку с параллелизмом практически в любое количество ядер.
Для GPU основными методами сортировки являются Radix и Bitonic
Зачем нужны такие большие таблицы в статье?
Мне вообще не нравится то, что в цикле происходит выделение памяти для устройства, и потом опять же в цикле вызываются операции перемещения элементов. Я думаю, что это затратный код — надо бы его попрофилировать…
А так, NVIDIA предоставляет библиотеку Thrust со своими алгоритмами. Сортировка там, кстати, есть: docs.nvidia.com/cuda/thrust/#sorting
А так, NVIDIA предоставляет библиотеку Thrust со своими алгоритмами. Сортировка там, кстати, есть: docs.nvidia.com/cuda/thrust/#sorting
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Параллельная сортировка методом пузырька на CUDA