OpenMP C ++(编译时出现问题)

时间:2013-05-13 17:18:12

标签: c++ visual-studio-2010 openmp

我决定计算 e 作为获得2.718的行数之和.... 那么没有OpenMP的代码工作得很好,我测量了它计算的时间。但是当我使用OpenMP来计算我的计算时,我收到了一个错误。我在核心i7上运行我的程序(8核4逻辑和4物理)。正如人们所说,我必须在不使用openMP的情况下获得两倍的时间。以下是我的代码:

  #include <iostream>
  #include <time.h>
  #include <math.h>
  #include "fact.h" 
  #include <cstdlib>;
  #include <conio.h>;
  using namespace std;
   int main()
  {
clock_t t1,t2;
int n;
long double exp=0;
long double y;
int p;
cout<<"Enter n:";
cin>>n;
t1=clock();
    #pragma omp parallel for num_threads(2);
for(int i=1; i<n; i++)
{
p=i+1;
    exp=exp+(1/((fact(p))));
}
t2=clock();
double total_clock;
total_clock=t2-t1;
long double total_exp;
total_exp=exp+2;
cout<<total_clock<<"\n the time is used for parralel calculations"<<endl;
cout<<total_exp<<endl;

cin.get();
getch();
    return 0;
     }

Fact()使用函数来计算数字的阶乘

    long double fact(int N)

     {
    if(N < 0) 
      return 0; 
  if (N == 0) 
    return 1; 
   else 
    return N * fact(N - 1); 
    }

错误3错误C3005:;:指令中的意外令牌OpenMP“parallel for”c:\ users \александр\ documents \ visual studio 2012 \ projects \ consoleapplication1 \ consoleapplication1 \ openmp.cpp 18 < / p>

1 个答案:

答案 0 :(得分:1)

使用openmp pragma时,不需要分号,因此:

“#pragma omp parallel for num_threads(2);”

应为“#pragma omp parallel for num_threads(2)”

没有;