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

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

Восстановить пароль Регистрация
 
Joe_Hopkins
0 / 0 / 0
Регистрация: 31.05.2013
Сообщений: 2
20.12.2013, 14:29     Задача с openMP #1
Здравствуйте, я "написал" программу для решения интеграла по методу трапеций, но когда указываю количество нитей(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
Посмотрите здесь:

C++ Вопросы по OpenMP
C++ Цикл for и OpenMP
C++ не работает openmp
C++ OpenMP
OpenMP C++
Параллельность в openMP C++
Технологии OpenMP C++
C++ Магия OpenMP

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

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

Текущее время: 08:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru