Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
nonedark2008
851 / 590 / 116
Регистрация: 28.07.2012
Сообщений: 1,583
#1

Цикл for и OpenMP - C++

21.05.2013, 21:59. Просмотров 505. Ответов 1
Метки нет (Все метки)

Недавно распаралелил свой цикл for, а теперь решил посмотреть на сколько я выигрываю от этого.
Но вот неожиданность, все многопоточные версии работают дольше, чем одномоточная.
Грешу на синхронизацию, но не понимаю в чем дело...
Вот собственно код цикла:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#pragma omp parallel for shared(breakNum) num_threads(4)
    for (INT i = 0; i < 500; ++i)
    {
      if (breakNum != -1)
        continue; 
      if (randDivision(numArr[i]) == false)
        continue;
      if (millerRabinTest(numArr[i], 50) == false)
        continue;
      #pragma omp critical 
        breakNum = i;
    }
Практически в любом случае однопоточный работает быстрее многопоточного. Для наглядности, однопоточный работает в пределах от 7 до 13 секунд. А многопоточный где-то от 11 до 25. В чем может быть проблема? Кроме как breakNum нигде общих ресурсов больше не используется...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.05.2013, 21:59     Цикл for и OpenMP
Посмотрите здесь:

Как завершить цикл в OpenMP C++
C++ Вопросы по OpenMP
C++ Не работает openmp
C++ OpenMP
OpenMP C++
Параллельность в openMP C++
Технологии OpenMP C++
C++ Магия OpenMP
C++ Программирование на OpenMP
Распараллелить цикл со сложной индексацией используя OpenMP C++
OpenMP цикл for C++
OpenMP и SIMD C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nonedark2008
851 / 590 / 116
Регистрация: 28.07.2012
Сообщений: 1,583
23.05.2013, 16:31  [ТС]     Цикл for и OpenMP #2
Разобрался сам. Дело было в Winapi-функции, которая генерировала случайные числа. Она не выполнялась параллельно, поэтому постоянно возникали барьеры, что приводило к большому спаду производительности.
Yandex
Объявления
23.05.2013, 16:31     Цикл for и OpenMP
Ответ Создать тему
Опции темы

Текущее время: 09:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru