![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 31.05.2013
Сообщений: 2
|
![]()
Ребят, помогите пожалуйста распараллелить с помощью OpenMP сортировку подсчетом (Counting Sort).
Код последовательной версии: Код:
|
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
![]()
Сортировка подсчетом имеет сложность O(N).
При такой сложности основной вклад во время выполнения будет играть доступ к ОП. Понятно, что у процессора несколько ядер, но память-то одна: раз узкое место именно в ней, то распараллеливание вычисление по нескольким потокам не приведет к росту производительности. Так зачем тогда затевать всю эту работу? В принципе, если бы это имело смысл, распараллеливание можно было бы организовать следующим образом: - делим массив, который нужно отсортировать, на несколько частей, - каждую часть пихаем в свой поток, - в потоке для каждой части индивидуально производим сортировку подсчетом, - после завершения всех потоков (и, что важно, это единственное (!) место, где нужна синхронизация) сливаем результаты в общий массив. Но, учитывая вышесказанное, думаю, данный алгоритм будет расходовать больше времени, чем исходный. |
![]() |
![]() |
![]() |
#3 |
Новичок
Джуниор
Регистрация: 31.05.2013
Сообщений: 2
|
![]()
В том то и проблема, что мне нужно получить хоть небольшой, но выигрыш во времени
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
![]()
Сочувствую.
Тут, вероятно, нужно оптимизировать работу с памятью, а не надеяться на распараллеливание вычислений процессора. Вы можете привести конкретные цифры: при каких размерах массивов и диапазоне сортируемых данных какое время какой кусок выполняется? |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Сортировка с использованием многопоточности | wowhow | Общие вопросы C/C++ | 0 | 20.11.2012 19:02 |
openmp | hunter03 | Общие вопросы C/C++ | 0 | 02.10.2012 17:54 |
OpenMP | Алек | Помощь студентам | 2 | 14.10.2011 11:52 |
C++ Пузырьковая сортировка с использованием массива индексов | Frame1992 | Помощь студентам | 0 | 28.04.2010 21:51 |
Сортировка строк с использованием хэширования | G@sh!sh | Помощь студентам | 0 | 29.12.2009 17:49 |