Форум программистов, компьютерный форум, киберфорум
OpenMP
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
OpenMP Применение OpenMP Здравствуйте. Хотелось бы внедрить многопоточность в описанную ниже задачу. Имеется класс: std::map<int, long> buff; class Test { int t; public: https://www.cyberforum.ru/ openmp/ thread2249308.html OpenMP Оптимизация кода с OpenMP
Есть код, написанный на с++ с применением openmp, но последовательный код шустрее распараллеленного. Вопрос: как можно оптимизировать код? #include #include #include #include #include int main() {
OpenMP OpenMP считает медленнее, чем последовательный процесс при использовании Intel mkl Здравствуйте, столкнулся со следующей проблемой. Решаю систему с помощью функции dgesv из пакета Intel mkl. Чтобы ускорить время расчета, использую open mp. Однако, как только я добавляю в код openmp время расчет лишь увеличивается. Процессор 4-ядерный. Пробовал задавать различные number of threads, всё равно медленнее считает. Может кто подсказать, почему так и что необходимо поправить, чтобы... https://www.cyberforum.ru/ openmp/ thread2247144.html OpenMP Распараллеливание вычисления интеграла используя редукции (OpenMP) Доброго времени суток, ребята! Ксть задача распараллелить процесс вычисления интеграла методом редукцией. В интернете прочитал, что редукция в данном случае это разбиение задачи на более простые задачи. Первое о чём подумал, это распаралелить по циклу for(...), который вычисляет значение функции в каждой точке, но это не работает так переменная в данном цикле должна быть типа int, но в этой... https://www.cyberforum.ru/ openmp/ thread2237576.html
OpenMP Как ускорить программу с OpenMP
Добрый вечер. Я новичок в параллельном программировании, моя задача подсчитать минимальный и максимальный элемент массива. Но почти на всех размерах массива скорость параллельной функции сильно ниже, чем последовательной. Какая у этого может быть причина? #include "stdafx.h" #include <iostream> #include <Windows.h> #include "stdlib.h" #include <omp.h> #include <iomanip>
OpenMP Параллельные вычисления с использованием параллельных секций в OpenMP Доброго времени суток, ребята! Ребят, нужно вычислить интеграл на отрезке для функции. Нужно разбить вручную отрезок на несколько частей и запустить вычислений в параллельных регионах. Вот что получилось написать. Но алгоритм не создаёт копии нужных переменных для каждого потока, хотя я это указываю в параметре (firstprivate (startTime,endTime)), не работает функция reduction (+:function).... https://www.cyberforum.ru/ openmp/ thread2233720.html
OpenMP OpenMPI, цикл while https://www.cyberforum.ru/ openmp/ thread2232251.html
Доброго времени суток! Я только недавно начал вливаться в тему параллельного программирования, в связи с этим возникли вопросы по моему проекту. У меня есть функция, которая генерирует псевдослучайное число с нормальным распределением. double rand_gaus() { double u, v, r; do {
OpenMP Подключение openMP Visual Studio 2017
Здравствуйте, ребята! Ребят пытаюсь подключить openMP и протестировать. Создал проект С++, в свойствах проекта установил Поддержка openMP - "Да". Подключил библиотеку #include <omp.h>. Написал следующий код для тестирования: int main() { #pragma omp parallel { cout << "Hellow World!!!\n"<<endl; }
OpenMP Параллельные секции из OpenMP https://www.cyberforum.ru/ openmp/ thread2224039.html
Необходимо, чтобы две независимые последовательности операций выполнялись параллельно (в перспективе должен быть сервер, работающий с данными в одном потоке и ждущий команд с терминала в другом), решил попробовать использовать директиву parallel sections, но она не сработала, что нужно сделать для исправления? #include <omp.h> #include <stdio.h> #include <string.h> int main(int argc,...
OpenMP Генерация случайных чисел несколькими потоками - OpenMP необходимо реализовать генерацию случайных чисел с использованием нескольких потоков и выполнить минимаксную нормализацию вот сделал некоторые заготовки а как дальше делать в параллелизме не знаю помогите //main.cpp #include "ex_function.h" #include <iostream> using namespace std; int main() https://www.cyberforum.ru/ openmp/ thread2212766.html
OpenMP OpenMP с Intel C++ Compiler
Добрый день, пытаюсь найти лучший вариант для программирования , пока получается, что windows 10+intel c++ compiler с openmp быстрее всего работают(на Линукс вообще ужас, 5 секунд против 0.22с на Винде(на OpenACC около 3.5 сек), правда это на GCC компиляторе, код по сути один и тот же, универсальный ).Так вот можно ли как-то к qt creator приделать intel compiler или к чему-то другому его...
OpenMP OpenMP Задание 2. Исследовать влияние настроек параметра shedule (не менее 4 опций ) парадигмы #omp parallel for. Вывести время выполнения циклов для: Итераций с равномерным временем выполнения; Итераций с неравномерным временем выполнения – нечетные итерации выполняются дольше. Итераций с неравномерным временем выполнения –итерации в первой половине цикла выполняются дольше. Результат вывести в...
0 / 0 / 0
Регистрация: 08.12.2016
Сообщений: 7
0

Распараллелить метод Зейделя-Гаусса используя OpenMP - OpenMP - Ответ 12410997

22.05.2018, 00:22. Показов 4296. Ответов 4
Метки (Все метки)

Author24 — интернет-сервис помощи студентам
Сама программа вот:
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include "stdafx.h"
#include "iostream"
#include "math.h"
#include "stdlib.h"
#include "locale.h"
#include "conio.h"
using namespace std;
const int n = 3;
bool converge(double*, double*, double);
int main()
{
        double start_time, end_time;
    start_time = omp_get_wtime();
setlocale(LC_ALL, "rus");
    double a[n][n] = { { 2.39, -0.46, 1.08 },
                { 0.54, 1.82, 0.73 },
                { 1.18, 0.52, 2.95 } };
    double b[n] = { 4.13, 2.42, 1.48 };
    double x[n] = { 0, 0, 0 };
    double p[n] = { 0, 0, 0 };
    double eps = 0.001;
    /*
    Ход метода, где:
    a[n][n] - Матрица коэффициентов
    b[n] - Столбец правых частей
    x[n], p[n] - Текущее и предыдущее решения
    */
    do
    {
        for (int i = 0; i < n; i++)
            p[i] = x[i];
 
        for (int i = 0; i < n; i++)
        {
            double var = 0;
            for (int j = 0; j < i; j++)
                var += (a[i][j] * x[j]);
            for (int j = i + 1; j < n; j++)
                var += (a[i][j] * p[j]);
            x[i] = (b[i] - var) / a[i][i];
        }
    } while (!converge(x, p, eps));
 
    //Выводим решения
    cout << "Решение: " << endl;
    for (int i = 0; i<n; i++)
        cout << "x" << i << ": " << x[i] << endl;
    cout << endl;
 
    end_time = omp_get_wtime();
    printf("Time %lf\n", end_time - start_time);
 
    _getch();
    return 0;
}
bool converge(double *xk, double *xkp, double eps)
{
    double norm = 0;
    for (int i = 0; i < n; i++)
    {
        norm += (xk[i] - xkp[i])*(xk[i] - xkp[i]);
    }
    if (sqrt(norm) >= eps)
        return false;
    return true;
}
Замеряю время: выходит примерно 0,034. Нужно применить распараллеливание, тем самым ускорить вычисления.

Подобное применение распараллеливания не принесло ускорения:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
do
    {
        for (int i = 0; i < n; i++)
            p[i] = x[i];
        for (int i = 0; i < n; i++)
        {
            double var = 0;
#pragma omp parallel for 
            for (int j = 0; j < i; j++)
                var += (a[i][j] * x[j]);
#pragma omp parallel for 
            for (int j = i + 1; j < n; j++)
                var += (a[i][j] * p[j]);
            x[i] = (b[i] - var) / a[i][i];
        }
    } while (!converge(x, p, eps));
Преподаватель посоветовал убрать зависимость по данным - как это сделать?
Буду признательна за советы и/или помощь)

Вернуться к обсуждению:
Распараллелить метод Зейделя-Гаусса используя OpenMP OpenMP
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.05.2018, 00:22
Готовые ответы и решения:

Распараллелить метод Гаусса (OpenMP)
Доброго времени суток, дамы и господа! Столкнулась с проблемой следующего рода - не получается...

Распараллелить, используя OpenMP
Имеется программа, для нахождения определенного интеграла. Необходимо ее распараллелить. Я сделал,...

Распараллелить цикл со сложной индексацией используя OpenMP
Пусть есть такой цикл, преобразующий массив: #define N 6 #define RADIUS 1 int arr; int...

Не удается правильно распараллелить программу табулирования функции, используя OpenMP
Необходимо было написать программу для табулирования функции. Расчеты выводит правильные, но время...

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

СЛАУ. Метод обратной матрицы, метод Гаусса, метод Крамера, метод Зейделя
Помогите ребят. Не могу построить алгоритмы для этих методов Язык C++

Метод Зейделя-Гаусса С++
Для написания программы, решающей систему линейных уравнения методом итерации или Зейделя,...

Метод Гаусса-Зейделя
Здравствуйте. Задание дали нормальное такое) Вообще не понимаю что хотят. Объясните пожалуйста...

Метод Гаусса-Зейделя: неверный результат
Здравствуйте. Я вот написал(точнее фрагмент взял с Википедии) программу решения СЛАУ методом...

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