Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 12.11.2013
Сообщений: 4
1

Работа с OpenMP. Распараллеливание цикла for

26.11.2013, 16:12. Просмотров 1852. Ответов 5
Метки нет (Все метки)

Доброго времени суток товарищи. При работе с OpenMP возник следующий вопрос
Почему код
C++
1
2
3
4
5
    int i;
    int Mass[19]={0};
    //omp_set_num_threads( 8 );
    #pragma omp parallel for
    for (i=1; i<2147483647; ++i) Mass[0]=i;
Работает медленнее, чем код
C++
1
2
3
    int i;
    int Mass[19]={0};
    for (i=1; i<2147483647; ++i) Mass[0]=i;
А именно
5.928s против 4.553s
------------------------
И если можно, кто знает подскажите как "убыстрить" выполнение цикла for.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.11.2013, 16:12
Ответы с готовыми решениями:

Распараллеливание цикла For с использованием OpenMP
Всем привет. Задался целью изучить OpenMP, что бы в дальнейшем уметь распараллеливать программы....

Распараллеливание с помощью OpenMP
Здравствуйте, уважаемые участники форума! Имеется цикл вида:for (i=1; i&lt;number; i++) { do...

Распараллеливание циклов с использованием OpenMP C++
Доброго времени суток. (Нужен совет, так как разбираюсь с omp почти 3 дня и не хватает знанний) ...

Распараллеливание циклов с ипользованием OpenMP
Есть проблема , получился парадокс - время роботы программы с распараллеливанием дольше на 1 сек...

5
:)
Эксперт С++
4763 / 3257 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
26.11.2013, 16:15 2
wanderer5800, так у Вас цикл к одним и тем же данным обращается. Параллелить как бы нечего.
0
855 / 445 / 111
Регистрация: 06.07.2013
Сообщений: 1,483
26.11.2013, 16:18 3
Цитата Сообщение от wanderer5800 Посмотреть сообщение
как "убыстрить" выполнение цикла for.
C++
1
Mass[0]=2147483646;
0
0 / 0 / 0
Регистрация: 12.11.2013
Сообщений: 4
26.11.2013, 16:23  [ТС] 4
Внутри цикла for также будет содержаться раскрутка Массива Mass и вывод его в текстовый файл, при выполнении некоторых условий. Неужели нельзя раскидать цикл по ядрам процессора?
0
855 / 445 / 111
Регистрация: 06.07.2013
Сообщений: 1,483
26.11.2013, 16:24 5
Цитата Сообщение от wanderer5800 Посмотреть сообщение
Внутри цикла for также будет содержаться раскрутка Массива Mass и вывод его в текстовый файл
представляю какая каша будет в текстовом файле,
и вообще надо смотреть конкретный пример, чтобы видеть что распараллелить
0
0 / 0 / 0
Регистрация: 12.11.2013
Сообщений: 4
26.11.2013, 16:34  [ТС] 6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int Mass[19]={0};
    //#pragma omp parallel for
    for (i=1; i<10000000; ++i)
    {
        Mass[0]=i;
        temp=i;
        for (int j=1; j<19; j++)
        {
            for (int y=0; y<32; ++y) OLZSHIFT(temp);
            Mass[j]=temp;
            temp=Mass[j];
        }
    }
Ну например, что то вроде такого.
OLZSHIFT возвращает int
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.11.2013, 16:34

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Как выполнить распараллеливание с помощью OpenMP
Доброго дня. У меня есть две функции. void A(const vector &lt;double&gt; &amp;a){ //что-то считаем c...

Распараллеливание вычисления интеграла используя редукции (OpenMP)
Доброго времени суток, ребята! Ксть задача распараллелить процесс вычисления интеграла методом...

Для распараллеливание процессов лучше пользоваться OpenMP или Win32?
Для распараллеливание процессов лучше пользоваться OpenMP или Win32? Называйте темы информативно

OpenMP распараллеливание цикла
Привет кодеры! Нужна ваша помощь. У меня есть код который нужно распараллелить и тем самым получить...


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

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

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