问题遇到的现象和发生背景
今天学习了openmp的task指令,用来实现斐波拉契数列,在visualstudio中编译的时候一直显示报错,弄了很久,在网上也没搜到有结果。
用代码块功能插入代码,请勿粘贴截图
#include<stdlib.h>
#include<omp.h>
#include<stdio.h>
int fib(int n)
{
if (n < 2)
return n;
int x, y;
#pragma omp task
{
x = fib(n - 1);
}
#pragma omp task
{
y = fib(n - 2);
}
#pragma omp taskwait
return x + y;
}
int main(int arg, char** argv)
{
int num_threads = 4;
omp_set_num_threads(num_threads);
int n = 7;
double time1 = omp_get_wtime();
#pragma omp parallel
{
int sum = fib(n);
}
double time2 = omp_get_wtime();
printf("the time is %f\n ", time2 - time1);
return 0;
}
运行结果及报错内容
我的解答思路和尝试过的方法
我一开始以为是task的格式错了,然后对着练习的代码一个个看,也没错;练习的代码是在linux上运行的,我是在vs上使用的,会不会是这个原因呢?
我想要达到的结果
成功编译