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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Ввод/вывод очень маленьких чисел http://www.cyberforum.ru/cpp-beginners/thread795950.html
Народ, срочно нужно! Подскажите, как сделать чтобы при арифметических операциях в С++ можно было посчитать числа порядка 10^(-200)? А еще лучше порядка 10^(-500)! У меня неизвестно по каким причинам меньше 10^(-18) не считает. Есть ли способ чтобы в проге все вычисления делались с помощью long double или хотя бы double
C++ Проблемы с stringObj.append(stringObj.at(i) и stringObj.append(classObj[i].charObj) Всем доброго времени суток. Столкнулся со странной проблемой. И не смог сам разобраться. При добавлении к строке (string) элемента другой строки (в коде помечено "//ПРОБЛЕМА_1") или символа (char) (//ПРОБЛЕМА_2) компилятор выдаёт сообщения об ошибке (см. спойлер). При этом, в реализации другого метода, подобная конструкция не создаёт проблем. kodStr.append(slovarFano.kod) kodStr, kod имеют... http://www.cyberforum.ru/cpp-beginners/thread795949.html
Сформировать массив по условию C++
Заданы два вещественных массива Х=(х1, х2, …, хn) и Y=(y1, y2, …, ym). Сформировать массив Z, в который включить из массива Х элементы, превышающие среднее арифметическое значение массива Y, а из массива Y – элементы, большие среднее арифметическое значение массива Х.. Все что есть, но может неправильно, помогите. #include <conio.h> #include <stdio.h> #include <math.h> #include...
Как заставить свой объект стрелять? C++
Здравствуйте... Пытаюсь написать игру типа Космической дуэли... Застопарился на стрельбе... Точнее как заставить свой объект стрелять... Подскажите как можно организовать данный процесс. Или где можно про это почитать? #pragma once #include <iostream> #include <stdlib.h> #include <Windows.h> using namespace std;
C++ Функция, которая возвращает цвет пикселя в точке с координатами х, у http://www.cyberforum.ru/cpp-beginners/thread795927.html
Доброго времени суток. Уважаемые программисты, подскажите пожалуйста, есть ли в Visual Studio С++ 10 функция, которая бы возвращала цвет пикселя картинки в точке с координатами (х, у)? Так как я новичок , то работаю только в консоли. Вообще, задача состоит в сравнении двоих картинок: на входе получаем адреса этих картинок, а при выходе процентное соотношение совпавших и общего числа пикселей....
C++ Написать сумму ряда С++ Новичок еще, пытаюсь самостоятельно выучить язык, пока не очень получается. подробнее

Показать сообщение отдельно
Kill100
 Аватар для Kill100
359 / 248 / 33
Регистрация: 11.12.2010
Сообщений: 1,068
Завершенные тесты: 1
28.02.2013, 17:12     Параллельный код решения системы
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;
}
 
Текущее время: 02:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru