Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 0
Регистрация: 30.07.2016
Сообщений: 25
1

Не получается распараллелить программу

07.12.2017, 22:46. Показов 417. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Необходимо написать программу для табулирования функции с помощью OpenMP, все вроде работает, но при увеличении числа потоков время работы программы увеличивается, а должно же быть наоборот.
Не могу понять в чем дело, то ли время неправильно считает, то ли распараллелила не так((
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
#include "stdafx.h"
#include <omp.h>
#include <stdio.h>
#include <conio.h>
#include <cmath>
#include <iostream>
 
using namespace std;
 
int main(void)
{
    setlocale(LC_ALL, "Russian");
    float a, b, h;
 
 
        int nth;
    cout << "Табулирование функции F(x)=x*sin(x) на заданном интервале\n ";
    cout << "Введите границу a: ";
    cin >> a;
    cout << "Введите границу b: ";
    cin >> b;
    cout << "Введите шаг h: ";
    cin >> h;
    cout << "Введите число потоков: ";
    cin >> nth;
 
    double t = omp_get_wtime();
    int N = (b - a) / h;
    float *arr = new float[N];
    int c = 0;
#pragma omp parallel num_threads (nth) 
    for (int i = 0; i <= N; i += 2)
    {
        int tr = omp_get_thread_num();
        float x = a;
        x += h*(i + tr);
        float fx = x*sin(x);
        arr[i + tr] = fx;
    }
    double t2 = omp_get_wtime();
    cout << "Затраченное время: ";
    t = t2 - t; //время выполнения
    cout <<  t << endl;
    cout << "x\tf(x)\n";
    for (int i = 0; i <= N; i++) {
        cout << a << "\t" << arr[i] << endl;
        a++;
    }
    
    _getch();
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.12.2017, 22:46
Ответы с готовыми решениями:

Не получается распараллелить цикл
Добрый день! В ходе опытов я выяснил, что распараллеливание цикла for с помощью OMP не приносит...

Не удаётся распараллелить программу
Доброго времени суток. Есть программа, её нужно распараллелить, получив выигрыш во времени. Беда...

Как правильно распараллелить программу чтобы она не тормозила
С потоками никогда особо не работал, просто не было каких то тяжеловесных задач. Сейчас такая...

Не удается правильно распараллелить программу табулирования функции, используя OpenMP
Необходимо было написать программу для табулирования функции. Расчеты выводит правильные, но время...

0
07.12.2017, 22:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.12.2017, 22:46
Помогаю со студенческими работами здесь

Распараллелить For
#include &lt;QCoreApplication&gt; #include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;ctime&gt; #include...

Не получается реализовать программу
Нужно написать программу, которая будет определять принадлежность заданной точки декартовой...

Не получается запустить программу
Проблема следующая: пришлось переустанавливать Паскаль, раньше нормально компилировало, а теперь...

Не получается скомпилировать программу
Это всего лишь кусок кода, решил его протестить перед последующим продолжением. Запускаю в консоле...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru