Форум программистов, компьютерный форум, киберфорум
MPI
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Гда можно скачать с++? у кого есть с++ дайте, или хоть ссылочку где скачать можно киньте! https://www.cyberforum.ru/ cpp/ thread35910.html C++ Консольное приложение
как можно поставить обработчики на нажатие клавишь ctrl+c и того типа
C++ Бильярд кто нибудь, если не сложно, можете скинуть ссылку или написать здесь код Бильярда на с++. https://www.cyberforum.ru/ cpp/ thread34844.html C++ Задача на двоичное представление и на функцию Strncpy https://www.cyberforum.ru/ cpp/ thread34641.html
1 Среди простых чисел, не превосходящих n, найти такое, в двоичной которого максимальное число единиц. 2 Написать и протестировать аналог функции Strncpy(). Реште пожалуйста...
C++ Игра "жизнь"
Кому надо..выкладываю код этой программы... перед этим создаете файл под названием life.txt и там вводите в матрицу 10 на 10 произвольный набор 0 или 1. можете сами поменять размерность матрицы в...
C++ Подключение двух хэдеров Необходимо подключить два хэдера, в которых пересекается содержимое и получаем conflicting types... first declaration of *** was here... Но подключить надо оба. Не подскажете, есть ли выход из... https://www.cyberforum.ru/ cpp/ thread33928.html
C++ Макросы условного компилирования С++ Помогите пожалуйста студенту. Кто шарит по теме макросов. Немогу понять что с меня хотят. Помогите решить задачку(должно быть не сложно): Используя макросы условного компилирования и оператора... https://www.cyberforum.ru/ cpp/ thread33462.html C++ Шашки
Вкратце опишу суть проблемы. Препод задал лабу делать что-то на подобии шашек. Только само задание состоит в том что, на доске появляется рандомное кол-во шашек на рандомных клетках. Пользователю...
C++ Рандомное перемещение картинок(подробно) У меня задача сделать игру Парные картинки. У меня есть зарание раставленые 24 картинки тобишь (12х2). Мне надо, чтобы они все перемешались в рандомном порядке но раставились по координатам уже... https://www.cyberforum.ru/ cpp/ thread31526.html C++ Borland C++ 5.5 LINE TOOLS https://www.cyberforum.ru/ cpp/ thread31515.html
Привет всем! У меня только 1 вопрос КАК ВВОДИТЬ команды в Borland C++ 5.5 LINE TOOLS простите, закалибался уже ей богу...
Program received signal SIGSEGV, Segmentation fault C++
Когда запускаю дебагер: gdb ./preci Вюдает следуще. Я не могу понять с чем это могет быть связано. Код: GNU gdb 6.4.90-debian Copyright (C) 2006 Free Software Foundation, Inc. GDB is free...
C++ Какой библиотеки не хватает для работы функции sound() https://www.cyberforum.ru/ cpp/ thread30865.html
#include<conio.h> // какой библиотеки нехватает, чтобы интерпретатор не указывал ошибку на sound void interrupt (*SvInt09)(void); /* старый обработчик */ void interrupt NewInt09(void) {...
Кирилл7785
11.03.2011, 22:29 0

Параллельная программа для метода холецкого с помощью openMp и mpi - MPI - Ответ 1441406

11.03.2011, 22:29. Показов 4237. Ответов 2
Метки (Все метки)

Ответ

рискну предложить следующий кусок кода:
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
/*  Решает систему уравнений для квадратной
 *  симметричной положительно определённой
 *  (с диагональным преобладанием) матрицы
 *  коэффициентов А:
 *        A*x=b;
 *  где A размеров nodesxnodes. Матрица А
 *  предполагается не разреженной. Нумерация 
 *  элементов везде начинается с нуля.
 *  Процедура представляет собой разложение Холесского:
 *        A=L*transpose(L),
 *  после которого выполняются прямое исключение и 
 *  обратная подстановка. A и b не сохраняются. 
*/
void eqsolv_simple_holesskii(Real **A, int nodes, Real *b, Real *x) {
    // Разложение Холесского: замена A верхним и нижним 
    // треугольными множителями.
    A[0][0]=sqrt(A[0][0]);
    A[1][0]/=A[0][0];
    A[0][1]=A[1][0];
    A[1][1]=sqrt(A[1][1]-A[1][0]*A[1][0]);
 
    int irow,irow1;
    int icol, icol1;
    Real sum;
    int k;
    for (irow=2; irow<nodes; irow++) {
        irow1=irow-1;
        A[irow][0]/=A[0][0];
        A[0][irow]=A[irow][0];
        #pragma omp parallel for shared(irow1,A) private(icol, icol1, sum, k)
        for (icol=1; icol<=irow1; icol++) {
            icol1=icol-1;
            sum=0.0;   
            for (k=0; k<=icol1; k++) sum+=A[irow][k]*A[icol][k];
            A[irow][icol]=(A[irow][icol]-sum)/A[icol][icol];
            A[icol][irow]=A[irow][icol];
        }
        sum=0.0;
        #pragma omp parallel for shared(A,irow,irow1) private(k) reduction (+: sum)
        for (k=0; k<=irow1; k++) sum+=A[irow][k]*A[irow][k];
        A[irow][irow]=sqrt(A[irow][irow]-sum);
    }
    
    // Прямое исключение. Происходит разрушение правой части
    b[0]/=A[0][0];
 
    for (irow=1; irow<nodes; irow++) {
        irow1=irow-1;
        sum=0.0;
        #pragma omp parallel for shared(A,b,irow,irow1) private(icol) reduction (+: sum)
        for (icol=0; icol<=irow1; icol++) sum+=A[irow][icol]*b[icol];
        b[irow]=(b[irow]-sum)/A[irow][irow];
    }
 
    // Обратная подстановка используется верхний треугольный множитель
    x[nodes-1]=b[nodes-1]/A[nodes-1][nodes-1];
    for (k=1; k<=nodes; k++) {
        irow=nodes+1-k-1;
        irow1=irow+1;
        sum=0.0;
        #pragma omp parallel for shared(A,x,irow,irow1,nodes) private(icol) reduction (+: sum)
        for (icol=irow1; icol<nodes; icol++) sum+=A[irow][icol]*x[icol];
        x[irow]=(b[irow]-sum)/A[irow][irow];
    }
 
} // eqsolv_simple_holesskii
Вот результаты решения СЛАУ размером 2274x2274 которая возникла из метода конечных элементов:
(используемый компилятор Visual Studio 2008, проц U7300 два ядра 1.3 ГГц каждый)
Режим компиляции Debug Release
Serial 25c 6c
Parallel 22c 7c
для подключения OpenMP надо сделать следующее Project-> имя проекта->Properties
выбрать All Configurations далее Configuration Properties->C/C++->Language включить OpenMP YES

Как видно из теста распараллеливание не ускоряет вычисления. Вопрос у всех ли так ? И если да то как Вы думаете почему?

Добавлено через 14 минут
кстати решение в параллельной версии тоже немного (чуть чуть) другое получается если сравнивать его с серийной версией. Может ли такое быть и в чём причина ?

Вернуться к обсуждению:
Параллельная программа для метода холецкого с помощью openMp и mpi MPI
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.03.2011, 22:29
Готовые ответы и решения:

Падает параллельная программа на MPI
Добрый день. Написал программу поразрядной сортировки для целых чисел с четно-нечетным слиянием...

Параллельная программа на OpenMP выполняется очень медленно
Здравствуйте, написал параллельную программу на OpenMP для решения системы разностных уравнений...

Придумать тесты для метода Холецкого, матрицы 5 на 5, симметричные по главной диагонали
Помогите, пожалуйста, поскорее! Мне нужно три или больше теста для метода Холецкого, матрицы 5 на...

Нахождение треугольной матрицы для метода Холецкого. Доходя до середины цикл перестаёт идти по диагонали
Здравствуйте, нахожу треугольную матрицу для метода Холецкого, но доходя до середины цикл перестаёт...

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

Выбор между MPI и OpenMP
Добрый день, Я начал разбираться с параллельным программированием и пытаюсь выбрать что мне...

MPI или OpenMP сложить элементы массива(есть код)
Необходимо распараллелить с помощью MPI или OpenMP Последовательный код есть, а с...

Параллельная программа на java для новичка в программировании
Прошу показать как создать программу на Java, решающую в параллельном режиме задачу поиска всех...

Программа для OpenMP С++
Друзья как распараллелить программу на 8 ядер потоков (threads) впервые столкнулся с опенмпи ...

Программная реализация метода прогонки и разложения Холецкого
Программная реализация метода прогонки и разложения Холецкого.

Программа составлена с помощью сортировки вставками и метода поиска двоичный?
Здравствуйте, нашёл программу и решил уточнить. Программа составлена с помощью сортировки...

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