Форум программистов, компьютерный форум, киберфорум
OpenMP
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
2 / 2 / 1
Регистрация: 13.10.2014
Сообщений: 177
1

Почему не работает OpenMP?

16.05.2017, 16:53. Показов 1021. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Сделал 2 функции без использования и с ипользованием 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
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
 #include <string>
#include <iostream>
#include <fstream>
#include <Windows.h>
#include <omp.h>
 
using namespace std;
 
struct Result
{
  LARGE_INTEGER StopTime, StopTimeNthread, Freq, StartTime, StartTimeNthread;
  long nRes, nResNthread;
  int nthread;
};
 
Result res;
 
ofstream fTest;
 
void sum_arr(const long n) // обычная функция
{
  long sum = 0;
  long* a = (long*)malloc(sizeof(long)*n);
  for(long i = 0; i < n; ++i)
  {
    a[i] = 1;
  }
  QueryPerformanceCounter(&res.StartTime);
  for(long i = 0; i < n; ++i)
  {
    sum += a[i];
  }
  QueryPerformanceCounter(&res.StopTime);
  res.nRes = sum;
  free(a);
}
 
void sum_arr_omp(const long n) // обычная функция
{
  long sum = 0;
  long* a = (long*)malloc(sizeof(long)*n);
  for(long i = 0; i < n; ++i)
  {
    a[i] = 1;
  }
  res.nthread = omp_get_max_threads();
  QueryPerformanceCounter(&res.StartTimeNthread);
  #pragma omp parallel shared(a) reduction (+: sum) num_threads(res.nthread)
  {
   #pragma omp for    
   for(long i = 0; i < n; ++i)
   {
     sum += a[i];
   }
  } // #pragma omp parallel
  QueryPerformanceCounter(&res.StopTimeNthread);
  res.nResNthread = sum;
  free(a);
}
 
int main()
{
  setlocale(LC_ALL, "");
  double nMax;
  QueryPerformanceFrequency(&res.Freq);
  fTest.open("Test.txt", ios::app | ios::out | ios::binary);
  sum_arr(1000000);
  sum_arr_omp(1000000);
  nMax = ((double)res.StopTime.QuadPart - (double)res.StartTime.QuadPart)/((double)res.StopTimeNthread.QuadPart 
        - (double)res.StartTimeNthread.QuadPart);
  cout  << nMax << "\t\tefficiency of use " <<  res.nthread << " threads"  << endl;
  fTest << nMax << "\t\tefficiency of use " <<  res.nthread << " threads"  << endl;
  if(res.nRes != res.nResNthread)
    cout << "!!! Error" << endl;
  system("\npause");
  return 0;
}
Однако использование OpenMP не дает выигрыша по времени, а даже замедляет выполнение программы. Помогите, пожалуйста, разобраться. Проект прикрепил
Вложения
Тип файла: zip CpuGpu.zip (2.4 Кб, 1 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.05.2017, 16:53
Ответы с готовыми решениями:

Не работает openmp
Написал простенькую программку с распараллеливанием собрал откомпилил, но распараллеливания нет....

OpenMP. Время выполнения программы больше чем без OpenMP
Сегодня первый раз сел за OpenMP. Читаю на сайте майкрософта как работает этот API. Так вот там...

Почему смена текста работает только один раз? Что неправильно в коде и почему?
Нужно чтобы при щелчке мыши на поверхности кнопки текст метки Label изменялся на текст окна...

Почему выводится в виде таблицы и почему не работает сортировка
почему выводится в виде таблицы? почему не работает сортировка? и как туда можно вставить классы...

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

Не работает изменение, не могу понять почему, Update не работает, ошибку выдает
Помогите, изменение с помощью button string u =...

Ноутбук работает только с Wi Fi роутера дома, в кафе не работает и везде. Почему?
Подскажите пожалуйста, почему у меня ноутбук с виндой 7, работает вай фай только дома с роутера. А...

Почему один и тот-же код в WindowsForms работает, а в Web не работает?
Здравствуйте, подскажите почему один и тот-же код в WindowsForms работает, а в Web не работает....

Почему в iPhone не работает нажатие на телефонный номер, а в Android работает?
Здравствуйте! Почему если открыть на iPhone WEB сайт, на котором отображают телефонный номер для...

Не работает удаление пробелов в строке! Подскажите пожалуйста, почему не работает?
Здравствуйте! Скажите пожалуйста, почему не работает данный код; должно брать строку, которую ввёл...

Почему программа не работает на MFC статичной библиотеки. а вот на стандартном мфс работает
почему программа не работает на MFC статичной библиотеки. а вот на стандартном мфс работает. Имею...


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

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