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

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

Войти
Регистрация
Восстановить пароль
 
Joe_Hopkins
0 / 0 / 0
Регистрация: 31.05.2013
Сообщений: 2
#1

Задача с openMP - C++

20.12.2013, 14:29. Просмотров 254. Ответов 0
Метки нет (Все метки)

Здравствуйте, я "написал" программу для решения интеграла по методу трапеций, но когда указываю количество нитей(num_threads) больше 1, то ответ становится не правильный, хотя для 1 нити все решает правильно..
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
#include "stdafx.h"
#include <stdio.h>
#include <math.h>
#include <locale.h>
#include <iostream>
#include <omp.h>
#include <ctime>
#include <cstdlib>
 
#define n 100000000
 
double Integral(double x)
{
    double F;
    F = exp(x); // Сюда задается подиннтегральная функция
    return F;
}
 
int main()
{
    omp_set_dynamic(0);
    omp_set_num_threads(1);
    setlocale(LC_ALL, "Rus");
    double a, b, h, S=0, x, eps;
 
    while (true)
    {
        puts("Введите диапазон [a;b] интегрирования.\n");
        printf("a = ");
        scanf_s("%lf", &a);
        printf("b = ");
        scanf_s("%lf", &b);
        if (a>b)
            printf("Неверно заданы пределы интегрирования!\n");
        else
            break;
    }
    h = (b - a) / n;
    clock_t time = clock();
    //S = (Integral(a) + Integral(b))/2;
    
    int i; double pos;
 
#pragma omp parallel shared(S,h,x,a,b) private(i,pos)
 
    {
#pragma omp for
 
        for (i = 1; i <= n; i++)
        {
            //pos = a + i*h;
            S += Integral(i*h + a) + Integral((i + 1)*h + a);
        }
    }
        S = S*h/2;
    
    time = clock() - time;
    printf("Интеграл f(x) равен = %lf ", S);
    printf("\nВремя работы равно %f\n", (double)time / CLOCKS_PER_SEC);
    //printf("\nНажмите любую клавишу для выхода из программы");
    system("pause");
    return 0;
}
Может кто знает в чем может быть проблема. Заранее спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.12.2013, 14:29     Задача с openMP
Посмотрите здесь:

Параллельность в openMP - C++
Использую Visual Studio 2013. Проц - двухъядерный Intel E6550. omp_get_max_threads() возвращает 2, что логично, но прагма omp parallel...

Openmp Распаралеливание цикла - C++
//массив b, n,m,j является разделяемым между потоками и их значения сохраняется при выходе из параллельного участка кода т.е матрицу b ...

OpenMP: Директива ordered - C++
Доброго времени суток. В различных туториалах приводятся примеры использования директивы ordered, подобные следующему: #pragma omp...

OpenMP долгий dinamic - C++
Добрый день. Была задача разобраться с OpenMP. Возникла следающая проблема- при распаралеливании цикла по методу dinamic, код: void...

OpenMP, создание потоков - C++
В инете нашел много примеров по распараллеливание циклов, но никак не могу понять, как просто написать чтобы конкретная функция выполнялась...

Создание потоков в openmp - C++
Доброго времени суток. Мне удалось распараллелить цикл for, но внутри данного цикла, помимо прочего, содержится ещё один цикл for,...

Сортировка с использованием OpenMP - C++
Ребят, помогите пожалуйста распараллелить с помощью OpenMP сортировку подсчетом (Counting Sort). Код последовательной версии: ...

Распараллелить, используя OpenMP - C++
Имеется программа, для нахождения определенного интеграла. Необходимо ее распараллелить. Я сделал, но не знаю на сколько это эффективно....

OpenMP, не создаются потоки - C++
Привет всем. Подскажите пожалуйста по такой штуке: делаю задачу &quot;Производители-потребители&quot;, начал проверять что хотя б создаётся...

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


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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