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

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

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

openMP parallel sections - C++

12.12.2012, 19:00. Просмотров 331. Ответов 0
Метки нет (Все метки)

Здравствуйте. Недавно решил попробовать что такое openMP и вообще параллельное программирование. Ради эксперимента выбрал задачку на перебор подпоследовательностей длины M из массива длины N. Пишу такой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#pragma omp parallel
    {
        #pragma omp parallel sections 
        {
            #pragma omp section 
            {
                foo(0,N,M,model,arr,set,sum1,b1,b2,b3,b4,"1.txt");
                printf ("id = %d, \n", omp_get_thread_num());
            }
            #pragma omp section
            {
                foo(0,N,M,model,arr,set,sum1,b12,b22,b32,b42,"2.txt");
                printf ("id = %d, \n", omp_get_thread_num());
            }
        }
    }
Функция foo выполняет рекурсивный перебор. Каждая свою часть. Результаты выводятся в файл.
В связи с этим возникли вопросы.
Во-первых: строку "id=0," выводит не два, а 6 раз, причём сначала 4 сразу, потом 2 (перед остановкой программы).
Во-вторых: в ходе выполнения создался только 1 файл - "1.txt" из первой секции.
в-третьих: диспетчер показывает, что потока 4. Собственно вопросы: почему создаётся только один файл? Можно ли использовать рекурсию при распараллеливании? Почему в диспетчере 4 потока, хотя на каждую секцию должно быть по одному потоку? Почему "id=0,", а не "id=1" например?
P.S.:
Компилятор Visual Studio 2012 professional. Поддержку omp в свойствах проекта включил. omp.h подключил.

Добавлено через 5 часов 40 минут
Вопрос отпал. Тема закрыта
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.12.2012, 19:00
Здравствуйте! Я подобрал для вас темы с ответами на вопрос openMP parallel sections (C++):

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

OMP parallel for - C++
#pragma omp parallel for for (int j = 0; j < whatFind.size(); j++) { string temp = ""; int t = Find(whatFind, 0,...

Как запустить компилятор в parallel studio - C++
Как запустить компилятор в parallel studio? То есть саму студию. Не могу ярлык найти, только для VS есть и различных либ.

Расскажите про IDE Intel Parallel Studio XE 2015 - C++
Реклама на сайте Intel Parallel Studio XE 2015 написано хорошо, а тех кто пользовался стоит ли установить себе? Добавлено через...

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

OpenMP - C++
есть код в общем виде... #pragma omp parallel for for (i = 0; i < n; ++i) { temp = B; // обращаемся for (j = 0; j < k; ++j)...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.12.2012, 19:00
Привет! Вот еще темы с ответами:

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

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

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

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


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

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

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