С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
mat_for_c
165 / 160 / 34
Регистрация: 26.04.2013
Сообщений: 729
Завершенные тесты: 3
#1

OpenMP - C++

11.04.2014, 22:49. Просмотров 492. Ответов 4
Метки нет (Все метки)

есть код в общем виде
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
...
#pragma omp parallel for
for (i = 0; i < n; ++i) {
   temp = B[i];   // обращаемся
   for (j = 0; j < k; ++j)
      if (A[j]  !=  ...)  // обращаемся
         break;
   ...
#pragma omp critical section
{
   if ( ... )
      A.push_back(...)  // изменяем
   else
      B.push_back(...)  // изменяем
}
...
} // for
вопрос: если один поток в критической секции, а другой обращается к общим А или B, то прога может вылетать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.04.2014, 22:49
Здравствуйте! Я подобрал для вас темы с ответами на вопрос OpenMP (C++):

OpenMP. Время выполнения программы больше чем без OpenMP - C++
Сегодня первый раз сел за OpenMP. Читаю на сайте майкрософта как работает этот API. Так вот там сказано:&quot;Директива #pragma omp for...

OpenMP - C++
#pragma omp parallel private(i) shared(j) { #pragma omp for for (j = 0; j &lt; n; j++) { for (i = 0; i &lt; m;...

Программирование на OpenMP - C++
Такой вопрос, у меня есть прога, которая работает ~сутки, не буду вдаваться что и как она делает, мне посоветовали для быстроты...

Магия OpenMP - C++
Есть такой код: Expr = ... // vector&lt;pair&lt;size_t, double&gt;&gt; #ifdef _OPENMP #pragma omp parallel num_threads( 2==(size_level-ptr) ? 1...

Цикл for и OpenMP - C++
Недавно распаралелил свой цикл for, а теперь решил посмотреть на сколько я выигрываю от этого. Но вот неожиданность, все многопоточные...

Технологии OpenMP - C++
Доброго времени суток. Объясните, почему на такой код void quickSortR(int left,int right,int *mass) { int i,j; bool f; double...

4
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
11.04.2014, 23:10 #2
Цитата Сообщение от mat_for_c Посмотреть сообщение
если один поток в критической секции, а другой обращается к общим А или B, то прога может вылетать?
Если общие данные защищены критической секцией, то будет просто блокировка второго потока на время пока первый не выйдет из критической секции.
0
mat_for_c
165 / 160 / 34
Регистрация: 26.04.2013
Сообщений: 729
Завершенные тесты: 3
11.04.2014, 23:27  [ТС] #3
хорошо. а если в цикле вызывается функция, то надо определять ее в private?
0
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
11.04.2014, 23:37 #4
Цитата Сообщение от mat_for_c Посмотреть сообщение
а если в цикле вызывается функция, то надо определять ее в private?
Поясните мысль.
0
mat_for_c
165 / 160 / 34
Регистрация: 26.04.2013
Сообщений: 729
Завершенные тесты: 3
11.04.2014, 23:56  [ТС] #5
скажем так:
в этом условии вызывается функция, определит выполнение break:
Цитата Сообщение от mat_for_c Посмотреть сообщение
if (A[j] != ...)
хотя я указал, что j относится как private, вдруг результат возвращается как общий и влияет на весь цикл (хотя вряд ли)

главная проблема: сыпется прога, хотя вроде и указал все private и критическую секцию....

Добавлено через 10 минут
или тут надо так:
C++
1
2
3
4
for (j; ...)
   int res = func();
   if (A[i] != res)
...
0
11.04.2014, 23:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.04.2014, 23:56
Привет! Вот еще темы с ответами:

Не работает openmp - C++
Написал простенькую программку с распараллеливанием собрал откомпилил, но распараллеливания нет. Программка выглядит так: ...

Параллельность в openMP - C++
Использую Visual Studio 2013. Проц - двухъядерный Intel E6550. omp_get_max_threads() возвращает 2, что логично, но прагма omp parallel...

OpenMP и SIMD - C++
Добрый день. Не могу исправить код, чтобы использовалось 4 ядра, а не 1. В функцию proizv нужно добавить распараллеливание вычислений с...

Вопросы по OpenMP - C++
Всем доброго времени суток! 1. Заметил, что потоки создаваемые в цикле for так и висят в диспетчере задач Windows до завершения работы...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.