我正在尝试学习基于OMP库任务的编程,作为一个例子,我复制并粘贴了从书中获取的以下代码并输出错误
'task' : expected an OpenMP directive name
Run Code Online (Sandbox Code Playgroud)
和
'taskwait' : expected an OpenMP directive name
Run Code Online (Sandbox Code Playgroud)
我可以运行omp并行循环而不是任务.你知道omp任务是否需要在visual studio中进一步调整?
#include "stdafx.h"
#include <omp.h>
int fib(int n)
{
int i, j;
if (n<2)
return n;
else
{
#pragma omp task shared(i) firstprivate(n)
i=fib(n-1);
#pragma omp task shared(j) firstprivate(n)
j=fib(n-2);
#pragma omp taskwait
return i+j;
}
}
int main()
{
int n = 10;
omp_set_dynamic(0);
omp_set_num_threads(4);
#pragma omp parallel shared(n)
{
#pragma omp single
printf ("fib(%d) = %d\n", n, fib(n));
}
}
Run Code Online (Sandbox Code Playgroud) 你有三个变量,如
a = 1
b = 2
c = 3
Run Code Online (Sandbox Code Playgroud)
并且你发现最小可以以某种方式显示变量名而不是它具有的值
例
d = min[a,b,c]
Run Code Online (Sandbox Code Playgroud)
在此操作之后,d应该变为c,因为c是最大的.或者可能有一些替代方法,因为我想在之后的另一个操作中分配变量名称.