HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Наш форум > Технические вопросы > синхронизация цикла в openmp
  Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
thambs
мразь конченная

Дата регистрации: Mar 2006
Проживает: -
Сообщений: 6417

Рейтинг



синхронизация цикла в openmp

Продублирую тему, вдруг тут кто имел дело с openmp, или подскажут как лучше сделать.

Иимеется следующая структура программы:

C++ Source Code:
1
while(true){
2
  bool cond;
3
#pragma omp parallel
4
  {
5
#pragma omp single
6
    {
7
      cond = true;
8
    }
9
    while(cond){
10
      int n = omp_get_thread_num();
11
      do_stuff(n);
12
#pragma omp barrier
13
 
14
#pragma omp single
15
      {
16
        sync_stuff();
17
        cond = is_end();
18
      }
19
    }
20
  }
21
}

Есть внешний бесконечный цикл, внутри него параллельная секция. В каждом треде необходимо циклически обрабатывать независимый массив данных. Логика такова, что после каждой внутренней итерации запускается некоторый последовательный код, проверяющий, не выполнено ли условие выхода из цикла.

Вопрос: как гарантировать что каждая итерация внутреннего цикла будет запускаться синхронно всеми тредами? В текущей реализации, несмотря на барьер, похоже, что циклы рассинхронизируются и код зависает.

В конечном итоге, нужно просто циклически параллельно запускать do_struff(), а вся эта свистопляска с синхронизацией циклов вылезла из за того, что если написать просто:
C++ Source Code:
1
while(true){
2
  bool cond = true;
3
  while(cond){
4
#pragma omp parallel
5
    {
6
      int n = omp_get_thread_num();
7
      do_stuff(n);
8
    }
9
    sync_stuff();
10
    cond = is_end();
11
  }
12
}

то, временные затраты на спавн тредов оказываются слишком большими.

__________________
http://www.moddb.com/mods/monorail-quest

Сообщить модератору | IP: Записан
Сообщение: 157667

Старое сообщение 04-08-2016 12:36
- За что?
~ X ~
offline

Дата регистрации: Oct 2005
Проживает: Архангельск
Сообщений: 3619

Рейтинг



Награды
 
[1 награда]


Вам, уважаемый, надо на стековерфлов.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]

Сообщить модератору | IP: Записан
Сообщение: 157688

Старое сообщение 05-08-2016 08:31
- За что?
thambs
мразь конченная

Дата регистрации: Mar 2006
Проживает: -
Сообщений: 6417

Рейтинг



ложная тревога, это я где то похоже с общими ресурсами напортачил. в чистых тестах всё работает -- можно закрывать.

__________________
http://www.moddb.com/mods/monorail-quest

Сообщить модератору | IP: Записан
Сообщение: 157697

Старое сообщение 05-08-2016 14:16
- За что?
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 17:11. Новая тема    Ответить
  Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Наш форум > Технические вопросы > синхронизация цикла в openmp
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

На основе vBulletin
Авторское право © 2000 - 2002, Jelsoft Enterprises Limited.
Дизайн и программирование: Crystice Softworks © 2005 - 2024