HLFX.Ru Forum
Показать все 3 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Технические вопросы (https://hlfx.ru/forum/forumdisplay.php?forumid=20)
-- синхронизация цикла в openmp (https://hlfx.ru/forum/showthread.php?threadid=4829)


Отправлено thambs 04-08-2016 в 12:36:

синхронизация цикла в 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


Отправлено ~ X ~ 05-08-2016 в 08:31:

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

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


Отправлено thambs 05-08-2016 в 14:16:

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

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


Временная зона GMT. Текущее время 12:47.
Показать все 3 сообщений этой темы на одной странице

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