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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.75
RJ
1 / 1 / 0
Регистрация: 10.05.2012
Сообщений: 55
#1

Параллельный код решения системы - C++

27.02.2013, 01:35. Просмотров 2436. Ответов 10
Метки нет (Все метки)

Доброго вечера, мастера нулей и единиц!

Преподаватель дал задание - сам не разберусь никак. Может кто чего подскажет или поможет.

Задание: написать параллельный код решения системы линейных уравнений методом Гаусса.

С параллельными кодами и вычислениями вообще первый раз сталкиваюсь и как чего делать - не знаю. А сделать сказал до 14-00 четверга (28 февраля). Вот и не знаю че делать(((

И еще - я так понял задание для С++, но если что можно и на другом языке. Вот как-то так.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.02.2013, 01:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Параллельный код решения системы (C++):

Написать код для решения системы тригонометрического неравенства с двумя неизвестными - C++
Написать консольное приложение, в котором пользователь вводит с клавиатуры две переменных - x и y, затем производятся вычисления по...

Написать код для решения системы тригонометрического неравенства с двумя неизвестными - C++
Ссори, что морочу голову повторно, но там была ошипка которую я ещё до этого не заметил (ну бывает) :\ Извините конечно не могли бы ещё...

Параллельный запуск процессов с помощью fork(). Проверить код - C++
Правильно ли я накидал параллельный запуск (в данном случае 10 ) процессов с помощью fork() ? if(pipe(filedes) == -1) { ...

на системы счисления. подскажите идею решения - C++
Сколько существует натуральных чисел,меньших 81 (10), таких, чт в ихзаписи в троичной системе счисления будут использоваться ровно две...

Составить программу решения системы уравнений - C++
составить программу решения системы уравнений ax+by+c=0 a1x+b1y+d=0

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Kill100
405 / 271 / 37
Регистрация: 11.12.2010
Сообщений: 1,155
Завершенные тесты: 1
27.02.2013, 01:49 #2
С помощью какой технологии параллелить?
Open MP? MPI? MFC? Win32 API?
Тут тебе могут по разному распараллелить. И не факт что как надо
Пары посещал? Какую технологию учили?
1
RJ
1 / 1 / 0
Регистрация: 10.05.2012
Сообщений: 55
27.02.2013, 20:21  [ТС] #3
Цитата Сообщение от Kill100 Посмотреть сообщение
С помощью какой технологии параллелить?
Open MP? MPI? MFC? Win32 API?
Тут тебе могут по разному распараллелить. И не факт что как надо
Пары посещал? Какую технологию учили?
Да посещал пары. Хоть и не все

Получается с помощью технологии MPI.

Добавлено через 18 часов 23 минуты
Народ! НУ давайте помогайте, пожалуйста. Я Вас прошу)))) А то съедят меня завтра)))
0
Kill100
405 / 271 / 37
Регистрация: 11.12.2010
Сообщений: 1,155
Завершенные тесты: 1
27.02.2013, 22:58 #4
Тут мало знатоков MPI . По другим технолигиям, я бы помог. Но эту самому трудно осилить. Дебагинг неудобный.
1
RJ
1 / 1 / 0
Регистрация: 10.05.2012
Сообщений: 55
27.02.2013, 23:21  [ТС] #5
Цитата Сообщение от Kill100 Посмотреть сообщение
Тут мало знатоков MPI . По другим технолигиям, я бы помог. Но эту самому трудно осилить. Дебагинг неудобный.
А с Open MP как дела обстоят у тебя? Может на этой технологии? НУ или хоть на какой))) НА любой уже сойдет)))
0
Kill100
405 / 271 / 37
Регистрация: 11.12.2010
Сообщений: 1,155
Завершенные тесты: 1
28.02.2013, 17:12 #6
OMP знаю. Собственно что то похожее вышло.
В студии в настройках проекта>C/C++>Язык>Поддержка Open MP включи /openmp
Если компилятор другой например gcc то
Код
g++ -lrt -fopenmp -O0 main.cpp -o main
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
// ConsoleApplication2.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <omp.h>
using namespace std;
 
int main() 
{
    setlocale(LC_ALL,"Russian");
    int n=0;
    printf("Введите количество неизвестных\n");
    cin>>n;
    printf("Задайте матрицу коэффициентов\n");
    double ** A=new double*[n];
    //double ** L=new double*[n];
    for(int i=0;i<n;i++){
        A[i]=new double[n];
        //L[i]=new double[n];
        for(int j=0;j<n;j++){
            cin>>A[i][j];
        }
    }
    printf("Введите вектор свободных членов\n");
    double * B=new double[n];
    for(int i=0;i<n;i++){
        cin>>B[i];
    }
    //метод Гаусса
    //получаем верхнетреугольную матрицу
 
    for(int i=0;i<n-1;i++){
        omp_set_nested(1);
#pragma omp parallel num_threads(n-i-1) firstprivate(i)
        {
            int tid=omp_get_thread_num();
            int j=tid+i+1;
            double fix=A[j][i]/A[i][i];
            B[j]=B[j]-B[i]*fix;
#pragma omp parallel num_threads(n-i)
            {
                int k=omp_get_thread_num();
                k=k+i;
                A[j][k]=A[j][k]-A[i][k]*fix;
            }
        }
 
    }
    //вывод преобразованной расширенной матрицы
    printf("Матрица U\n");
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            printf("%f ",A[i][j]);
        }
        printf("  | %f \n",B[i]);
 
    }
    //определяем и выводим вектор решений
    double * X=new double[n];
#pragma omp parallel num_threads(n/2) firstprivate(n) shared(count,X,A,B)
    {
#pragma omp for schedule(static,1)
        for(int i=n-1;i>=0;i--){
            X[i]=B[i];
 
            for(int j=n-1;j>i;j--){
 
                X[i]=X[i]-A[i][j]*X[j];
            }
#pragma omp critical
            X[i]=X[i]/A[i][i];
            printf("%f\n",X[i]);
        }
 
    }
    system("pause");
    return 0;
}
1
RJ
1 / 1 / 0
Регистрация: 10.05.2012
Сообщений: 55
01.03.2013, 23:20  [ТС] #7
Цитата Сообщение от Kill100 Посмотреть сообщение
OMP знаю. Собственно что то похожее вышло.
В студии в настройках проекта>C/C++>Язык>Поддержка Open MP включи /openmp
Если компилятор другой например gcc то
Код
g++ -lrt -fopenmp -O0 main.cpp -o main
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// ConsoleApplication2.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <omp.h>
using namespace std;
 
int main() 
{
    setlocale(LC_ALL,"Russian");
..........................................................
    }
    system("pause");
    return 0;
}
Спасибо огромнейшее. Попробую в понедельник в довесок сдать.
А в четверг ему сдавал на Фортране и OpenMP. Ну вроде принял и то хорошо. Еще с этим вариантом разберусь и попробую сдать.
0
Kill100
405 / 271 / 37
Регистрация: 11.12.2010
Сообщений: 1,155
Завершенные тесты: 1
02.03.2013, 00:44 #8
Цитата Сообщение от RJ Посмотреть сообщение
Спасибо огромнейшее. Попробую в понедельник в довесок сдать.
А в четверг ему сдавал на Фортране и OpenMP. Ну вроде принял и то хорошо. Еще с этим вариантом разберусь и попробую сдать.
Ну я как успел так и написал. Просто самому проект пришлось писать.
1
RJ
1 / 1 / 0
Регистрация: 10.05.2012
Сообщений: 55
02.03.2013, 01:23  [ТС] #9
Цитата Сообщение от Kill100 Посмотреть сообщение
Ну я как успел так и написал. Просто самому проект пришлось писать.
Нет я же ничего не предъявляю)))) Я наоборот очень благодарен. Хорошо что есть люди которым не западло помочь другому человеку.

Весьма благодарен.

Кстати у меня ругается на
C++
1
2
#include <stdafx.h>
#include <omp.h>
Вот так вот(((

Компилятор DevCpp

Добавлено через 16 минут
Цитата Сообщение от Kill100 Посмотреть сообщение
Ну я как успел так и написал. Просто самому проект пришлось писать.
Если конкретно говорит нет у меня таких файлов. Мож их де докачать?

Вот пишет такое:
4 C:\Users\Æåêà\Desktop\1\main.cpp stdafx.h: No such file or directory.
9 C:\Users\Æåêà\Desktop\1\main.cpp omp.h: No such file or directory.
0
Kill100
405 / 271 / 37
Регистрация: 11.12.2010
Сообщений: 1,155
Завершенные тесты: 1
02.03.2013, 01:28 #10
Цитата Сообщение от RJ Посмотреть сообщение
Нет я же ничего не предъявляю)))) Я наоборот очень благодарен. Хорошо что есть люди которым не западло помочь другому человеку.

Весьма благодарен.

Кстати у меня ругается на
C++
1
2
#include <stdafx.h>
#include <omp.h>
Вот так вот(((

Компилятор DevCpp
DevCpp - это не компилятор а среда разработки. А компилятор MinGW. Причём нативно OMP не поддерживает.
Так что используй gcc, visual c++, или intel composer компиляторы. В среде DevCpp можно указать какой использовать.
stdafx.h можеш на него забить а можеш перекопировать из него includы сам в свой проект.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// stdafx.h: включаемый файл для стандартных системных включаемых файлов
// или включаемых файлов для конкретного проекта, которые часто используются, но
// не часто изменяются
//
 
#pragma once
 
#include "targetver.h"
 
#include <stdio.h>
#include <tchar.h>
 
 
 
// TODO: Установите здесь ссылки на дополнительные заголовки, требующиеся для программы
Добавлено через 4 минуты
Но походу если Visual studio еще не используете, то скорее всего надо было писать на Win32 API. (что громоздко и сложно)
1
RJ
1 / 1 / 0
Регистрация: 10.05.2012
Сообщений: 55
02.03.2013, 01:46  [ТС] #11
Цитата Сообщение от Kill100 Посмотреть сообщение
DevCpp - это не компилятор а среда разработки. А компилятор MinGW. Причём нативно OMP не поддерживает.
НУ да.... вот протормозил ппц.

Цитата Сообщение от Kill100 Посмотреть сообщение
Но походу если Visual studio еще не используете, то скорее всего надо было писать на Win32 API. (что громоздко и сложно)
Печальбеда...... =(


Цитата Сообщение от Kill100 Посмотреть сообщение
Так что используй gcc, visual c++, или intel composer компиляторы. В среде DevCpp можно указать какой использовать.
stdafx.h можеш на него забить а можеш перекопировать из него includы сам в свой проект.
Ясненько. Попробуем теперь запилить на intel composer. Посмотрю что выйдет. =)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.03.2013, 01:46
Привет! Вот еще темы с ответами:

Помогите исправить программу решения системы уравнений - C++
Выводит неопределенность # include &lt;stdio.h&gt; #include &lt;iostream&gt; # include &lt;math.h&gt; #include &lt;conio.h&gt; #include &lt;locale.h&gt; ...

Метод Ньютона для решения системы нелинейных уравнений - C++
Здравствуйте! Нужно решить методом Ньютона систему уравнений с точностью 0.0001: sin(x+y) - 1.2x = 0 x*x + y*y =1 Вот моя программа,...

Нужна программа для решения системы математических уравнений - C++
Написать программу для решения системы математических уравнений для диапазона чисел от 1,5 до 15 с шагом прироста 0,6. y =...

Написать программу для решения системы двух уравнений - C++
не знаю как написать программу вводимы и выводимые данные сопровождать краткими поясняющими текстами для проверки численных значений...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
02.03.2013, 01:46
Ответ Создать тему
Опции темы

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