Форум программистов, компьютерный форум, киберфорум
OpenMP
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
OpenMP Перемножения матриц с OpenMP дольше чем... Здравствуйте! Написал 2 программы перемножения матриц, одну с использованием OpenMP, другую - просто. 2 матрицы 1000х1000 с использованием OpenMP высчитываются дольше. Процессор Intel Atom N570, поддержка OpenMP в проекте включена. Собственно, вопрос: почему дольше и что не так сделал? #include "stdafx.h" #include <iostream> #include <ctime> #include <clocale> #include <omp.h> https://www.cyberforum.ru/ openmp/ thread561436.html OpenMP Вычисление интеграла с применением OpenMP
Всем доброе утро. Написала программу вычисления интеграла с применением OpenMP, но она выдаёт ошибку, ошибку выдаёт при запуске консоли, я не понимаю почему????:wall::gcray: Ошибка такого содержания, типа: "Запуск программы невозможен, т. к. на компьютере отсутствует библиотека vcompd.dll. Попробуйте переустановить программу" И ещё не могу присвоить количество потоков для...
OpenMP Умножение матриц с использованием OpenMP https://www.cyberforum.ru/ openmp/ thread537193.html
Здрасте. Есть следующая задача. Нужно реализировать умножение двух квадратных матриц с использованием OpenMP. Без него все пашет нормально, но вот когда использовать его, то нельзя изменять счетчик в теле цыкла. Долго копался в коде но не смог сделать. Вот мой код умножения, если можно переделать именно его для использования OpenMP буду очень признателен) int** Multipl(int** matr1, int**...
OpenMP Литература по OpenMP для C++ Доброе время суток! Посоветуйте, пожалуйста, хрошую литературу по OpenMP для C++, eng/rus. Спасибо. https://www.cyberforum.ru/ openmp/ thread508488.html
OpenMP Вопросы по OpenMP
Всем доброго времени суток! 1. Заметил, что потоки создаваемые в цикле for так и висят в диспетчере задач Windows до завершения работы программы. Как то их самому убить возможно? Цикл я использую так: #pragma omp parallel for for (Index i = 0; i < countThreads; i++) { func(i); }
OpenMP Как завершить цикл в OpenMP https://www.cyberforum.ru/ openmp/ thread393883.html
Использую OpenMP для параллельных расчетов очень нужно при определенном условии экстренно завершить цикл break; с OpenMP не работает можно ли как то завершить цикл не дожидаясь его окончания ??
OpenMP Выбор всех ненулевых элементов двумерного массива в третий https://www.cyberforum.ru/ openmp/ thread365885.html
Помогите/подскажите как реализовать такое "Выбор всех ненулевых элементов двумерного массива в третий." З.Ы. это нужно делать с помощью нитей и распараллеливания..заранее спасибо
Параллельные запросы к MySQL с использованием OpenMP. OpenMP
Здравствуйте. Помогите пожалуйста разобраться. Программа посылает запросы к базе данных (субд MySQL), нужно их распараллелить. Сначала идут некоторые вычисления, подключение к MySQL, собственно кусок, который нужно распараллелить, чтобы одновременно выполнялись несколько запросов: for (int je = 0; je < j; je++) { for (int iks = 8; iks < 18; iks++) { #pragma omp parallel for ...
OpenMP OpenMP, создание потоков В инете нашел много примеров по распараллеливание циклов, но никак не могу понять, как просто написать чтобы конкретная функция выполнялась в отдельном потоке? int main() { #pragma omp parallel { start_log("gsd", 34, "link", "proj"); } #pragma omp parallel { https://www.cyberforum.ru/ openmp/ thread162552.html OpenMP Распараллелить несколько разных процедур с помощью OpenMP Требуется распараллелить несколько разных процедур с помощью OpenMP 3.0 в gcc 4.5. Но проблема в том, что одна из функций обязательно должна выполняться в главном треде под номером 0. Логично использовать #pragma оmp parallel sections Но выбор исполняющего треда для секции не определен и нужная процедура постоянно исполняется в новом треде. Вопрос в том как правильно решить эту проблему? ... https://www.cyberforum.ru/ openmp/ thread161128.html
Эксперт С++
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
06.05.2012, 18:31 0

Распараллеливание с помощью OpenMP - OpenMP - Ответ 2998105

06.05.2012, 18:31. Показов 17737. Ответов 41
Метки (Все метки)

Ответ

Здесь все нити работают с одной и той же переменной g, изменяя её. Поэтому процессору надо постоянно синхронизировать значение этой переменной между ядрами. Промежуточные результаты стоить делать принадлежащими только одной нити, указав, например, private(g) в прагме. Переменные цикла по умолчанию приватные.
Но вообще пример не очень хороший, так как оптимизатор может его сильно изменить в зависимости от режима компиляции.
Предлагаю несколько модифицировать и сравнить быстродействие и результат на таком коде:
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
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <iostream>
#include <omp.h>
 
using namespace std;
 
int const NPROC = 2;
int results[NPROC];
 
int main()
{
    double start, end;
    start = omp_get_wtime();
    int i, k, g;
 
    omp_set_num_threads(NPROC);
 
#pragma omp parallel private(g)
    {
        g = 1;
        for (i = 0; i<100000; i++)
        {
            for (k = 1; k<10000; k++)
            {
                g = g*k % 654321;
            }
        }
        results[omp_get_thread_num()] = g;
    }
 
    end = omp_get_wtime();
 
    cout << "time: " << end-start << endl;
    
    for (int i = 0; i < NPROC; ++i)
        cout << "r[" << i << "] = " << results[i] << endl;
    
    return 0;
}
Компилировать лучше с включённой оптимизацией.

Вернуться к обсуждению:
Распараллеливание с помощью OpenMP OpenMP
1
Заказать работу у эксперта

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.05.2012, 18:31
Готовые ответы и решения:

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

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

Работа с OpenMP. Распараллеливание цикла for
Доброго времени суток товарищи. При работе с OpenMP возник следующий вопрос Почему код int i;...

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

41
06.05.2012, 18:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.05.2012, 18:31
Помогаю со студенческими работами здесь

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

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

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

OpenMP. Время выполнения программы больше чем без OpenMP
Сегодня первый раз сел за OpenMP. Читаю на сайте майкрософта как работает этот API. Так вот там...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru