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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Добавлено через 18 часов 23 минуты
Народ! НУ давайте помогайте, пожалуйста. Я Вас прошу)))) А то съедят меня завтра)))
Kill100
386 / 252 / 34
Регистрация: 11.12.2010
Сообщений: 1,078
Завершенные тесты: 1
27.02.2013, 22:58     Параллельный код решения системы #4
Тут мало знатоков MPI . По другим технолигиям, я бы помог. Но эту самому трудно осилить. Дебагинг неудобный.
RJ
1 / 1 / 0
Регистрация: 10.05.2012
Сообщений: 55
27.02.2013, 23:21  [ТС]     Параллельный код решения системы #5
Цитата Сообщение от Kill100 Посмотреть сообщение
Тут мало знатоков MPI . По другим технолигиям, я бы помог. Но эту самому трудно осилить. Дебагинг неудобный.
А с Open MP как дела обстоят у тебя? Может на этой технологии? НУ или хоть на какой))) НА любой уже сойдет)))
Kill100
386 / 252 / 34
Регистрация: 11.12.2010
Сообщений: 1,078
Завершенные тесты: 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;
}
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. Ну вроде принял и то хорошо. Еще с этим вариантом разберусь и попробую сдать.
Kill100
386 / 252 / 34
Регистрация: 11.12.2010
Сообщений: 1,078
Завершенные тесты: 1
02.03.2013, 00:44     Параллельный код решения системы #8
Цитата Сообщение от RJ Посмотреть сообщение
Спасибо огромнейшее. Попробую в понедельник в довесок сдать.
А в четверг ему сдавал на Фортране и OpenMP. Ну вроде принял и то хорошо. Еще с этим вариантом разберусь и попробую сдать.
Ну я как успел так и написал. Просто самому проект пришлось писать.
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.
Kill100
386 / 252 / 34
Регистрация: 11.12.2010
Сообщений: 1,078
Завершенные тесты: 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. (что громоздко и сложно)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.03.2013, 01:46     Параллельный код решения системы
Еще ссылки по теме:

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

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

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

Написать программу для решения системы нелинейных уравнений - C++
Не могу сделать прогу на С++. Кто сделает - огромное спасибо. sin(9x)+cos(7y)-5z*z=10, cos(x)+y-tan(2x)=17, cos(x)+6y-cos(z)=23; ...

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


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

Или воспользуйтесь поиском по форуму:
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. Посмотрю что выйдет. =)
Yandex
Объявления
02.03.2013, 01:46     Параллельный код решения системы
Ответ Создать тему
Опции темы

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