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

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

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

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

26.11.2013, 16:12. Просмотров 979. Ответов 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.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.11.2013, 16:12     Работа с OpenMP. Распараллеливание цикла for
Посмотрите здесь:

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

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

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

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

Openmp Распаралеливание цикла - C++
//массив b, n,m,j является разделяемым между потоками и их значения сохраняется при выходе из параллельного участка кода т.е матрицу b ...

OpenMP при распараллеливании цикла иногда выдает разные результаты - C++
Доброго времени суток, ув. форум! Я новичек и в С++ и в OpenMP Играюсь со следующей программкой для вычисления Пи: #include...

Некорректная работа цикла for. - C++
Ниже приведен код программы, вычисляющей по заданному n значение n!. Прошу объяснить, почему программа выдает отрицательные числа порядка...

Неправильная работа цикла - C++
Есть два цикла: while (infile){ infile &gt;&gt; dist1; cout &lt;&lt; dist1 &lt;&lt; endl; } while (1){ infile &gt;&gt; dist1; ...

Условие цикла if, неправильная работа if - C++
cin.getline(str1,N); //getline-запись данных в строку str1,размерность N; cout&lt;&lt;&quot;Enter second string -&gt; &quot;&lt;&lt;endl; ...

Не коректная работа getline() во время повторений цикла - C++
Доброго времени суток, написал программу которая кирилицу(а конкретно украинские буквы) превращает в латиницу. Сама програма работает...

Работа цикла типа while. Найти ошибку в коде - C++
Добрый день. Ребята, помогите, пожалуйста. Не могу понять, что не так. В итоге результат выходит: &quot;Vashe chislo = 0&quot;. Само задание в...

Работа цикла - считывание 1000 элементов (double) - C++
Народ помогите с циклом, считаю 1000 элементов (double) и на последнем ходе происходит какой-то сбой, при этом 999 считает нормально....


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
26.11.2013, 16:15     Работа с OpenMP. Распараллеливание цикла for #2
wanderer5800, так у Вас цикл к одним и тем же данным обращается. Параллелить как бы нечего.
Raali
622 / 326 / 34
Регистрация: 06.07.2013
Сообщений: 1,054
Завершенные тесты: 1
26.11.2013, 16:18     Работа с OpenMP. Распараллеливание цикла for #3
Цитата Сообщение от wanderer5800 Посмотреть сообщение
как "убыстрить" выполнение цикла for.
C++
1
Mass[0]=2147483646;
wanderer5800
0 / 0 / 0
Регистрация: 12.11.2013
Сообщений: 4
26.11.2013, 16:23  [ТС]     Работа с OpenMP. Распараллеливание цикла for #4
Внутри цикла for также будет содержаться раскрутка Массива Mass и вывод его в текстовый файл, при выполнении некоторых условий. Неужели нельзя раскидать цикл по ядрам процессора?
Raali
622 / 326 / 34
Регистрация: 06.07.2013
Сообщений: 1,054
Завершенные тесты: 1
26.11.2013, 16:24     Работа с OpenMP. Распараллеливание цикла for #5
Цитата Сообщение от wanderer5800 Посмотреть сообщение
Внутри цикла for также будет содержаться раскрутка Массива Mass и вывод его в текстовый файл
представляю какая каша будет в текстовом файле,
и вообще надо смотреть конкретный пример, чтобы видеть что распараллелить
wanderer5800
0 / 0 / 0
Регистрация: 12.11.2013
Сообщений: 4
26.11.2013, 16:34  [ТС]     Работа с OpenMP. Распараллеливание цикла for #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
Yandex
Объявления
26.11.2013, 16:34     Работа с OpenMP. Распараллеливание цикла for
Ответ Создать тему
Опции темы

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