我决定将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“并行”中的意外令牌 c:\users\александр\documents\visual studio 2012\projects\consoleapplication1\consoleapplication1\openmp.cpp 18