Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.11.2017, 19:49   #1
shonny213
Новичок
Джуниор
 
Регистрация: 14.11.2017
Сообщений: 1
По умолчанию [C] Распараллеливание с помощью openmp. Нет прироста скорости. Помогите разобраться. есть код.

Здравствуйте, вообщем пытаюсь использовать Openmp, чтобы распараллелить задачу вычисления экспоненты с помощью ряда Тейлора. Программа работает, но при сравнении времени выполнения последовательного кода и с Openmp, нет прироста скорости, а даже наоборот выполняется дольше с Openmp. В чем может быть причина, не могли бы вы помочь?
Код:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <omp.h>
int fact(int c);
double taylor(double x, int n);
 
int main(int argc, char *argv[]) {
  double x=0;
  int n=0;
  int n_max = 32;
  if (argc != 3) {
  printf("Input three parametrs!\n");
  return 1;
}
  sscanf(argv[1], "%lf", &x);
  sscanf(argv[2], "%d", &n);

 if((n>n_max)||(n<0)) {
 printf("Invalid parameter n, enter n from 0..10\n");
 return 1;
 }
    
 int i; 
 double sum=0 ;
 double t = omp_get_wtime();
 
  #pragma omp parallel for private(i) reduction(+: sum)
   for (i=1; i<=n; i++) {
	  double taylor = pow(x,i)/fact(i);
	  sum+=taylor;
  }
  
  double diff = omp_get_wtime() - t; 
  printf("e^x = %lf\n Time: \t %lf\n", ++sum, diff);
  return 0;
}

int fact(int c) {
   int fact=1;
   int i;
   for (i = 1; i <= c; i++ ) {
      fact *=i;
   }
   return fact;
}
./taylor 1 32
e^x = 2.718282
Time: 0.000126 - время выполнения с Openmp

./staylor 1 32
e^x = 2.718282
Time: 0.000020 - время выполнения последовательного кода
shonny213 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[РЕШЕНО] Не работает написанный калькулятор. Помогите разобраться. Есть код. АндрейПершин JavaScript, Ajax 2 27.07.2017 09:27
OpenMP распараллеливание обратного метода Гаусса WildMordvin Помощь студентам 2 27.06.2017 13:16
OpenMP MPI::Init помогите разобраться с аргументами VedyNN Общие вопросы C/C++ 9 10.04.2014 12:02
Распараллеливание циклов с ипользованием OpenMP vitik Общие вопросы C/C++ 1 12.10.2012 06:49
Есть код программы Сортировка строк в файле...помогите разобраться) defol-777 Общие вопросы C/C++ 8 29.09.2009 11:42