我有这个计算斐波那契函数的方法:
long optimized_p_fib(long n)
{
long i, j;
if(n < 2)
return n;
#pragma omp task shared (i)
{
i = p_fib(n-1);
}
#pragma omp task shared (j)
{
j = p_fib(n-2);
}
#pragma omp taskwait
return (i+j);
}
此方法的执行时间为2.527737。
我想在 OpenMP 中使用任务,这样执行时间会更小,下面是我到目前为止所做的,但与上面的方法相比,执行时间变大了( 4.039427 )。
long optimized_p_fib(int n)
{
long i, j;
if(n < 2)
return n;
#pragma omp single nowait
{
#pragma omp task shared (i) firstprivate(n)
{
i = optimized_p_fib(n-1);
}
#pragma omp task shared (j) firstprivate(n)
{
j = optimized_p_fib(n-2);
}
}
#pragma omp taskwait
return (i+j);
}
我可以优化我的代码,以使执行时间变小?