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

C++

Войти
Регистрация
Восстановить пароль
 
bumber
0 / 0 / 0
Регистрация: 25.07.2013
Сообщений: 6
#1

OpenMp - C++

27.10.2013, 18:03. Просмотров 539. Ответов 0
Метки нет (Все метки)

Здравстуйте, нужно помощь в параллеьном программировании, программа работает на одной нити, но зависает на нескольких, при N>10. Соотвественно это задача Дирихле для уравнения Пуассона
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
do {
  dmax = 0; // максимальное изменение значений u
#pragma omp parallel for shared(u,un,N1,dmax) private(i,temp,d,dm)
  for ( i=1; i<N1-1; i++ ) {
    dm = 0;
    for ( j=1; j<N1-1; j++ ) {
      temp = u[i][j];
      un[i][j] = 0.25*(u[i-1][j]+u[i+1][j]+u[i][j-1]+u[i][j+1]+h*h*f[i][j]);
      d = fabs(temp-un[i][j]);
      if ( dm < d )
      dm = d; 
    }
    omp_set_lock(&dmax_lock);
    {
        //cout<<omp_get_thread_num()<<endl;
      if ( dmax < dm ) 
 
          dmax = dm;
      omp_unset_lock(&dmax_lock);
    }
    } 
  for ( i=1; i<N1-1; i++ ) // обновление данных
    for ( j=1; j<N1-1; j++ ) 
      u[i][j] = un[i][j];
} while ( dmax > eps );
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.10.2013, 18:03     OpenMp
Посмотрите здесь:

C++ Вопросы по OpenMP
Синхронизация в OpenMP C++ Linux
Visual C++ OpenMP
C++ Цикл for и OpenMP
C++ Не работает openmp
C++ OpenMP
OpenMP C++
Технологии OpenMP C++
C++ Магия OpenMP
C++ Программирование на OpenMP
OpenMP цикл for C++
OpenMP и SIMD C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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