Tôi cố gắng để học lập trình dựa OMP nhiệm vụ thư viện và là một ví dụ tôi sao chép và dán đoạn code dưới đây được lấy từ một cuốn sách và nó sẽ tạo ra lỗinhiệm vụ OpenMP trong Visual Studio
'task' : expected an OpenMP directive name
và
'taskwait' : expected an OpenMP directive name
Tôi có thể chạy song song omp cho vòng lặp chứ không phải nhiệm vụ. Bạn có biết liệu nhiệm vụ omp có cần điều chỉnh thêm trong studio trực quan không?
#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));
}
}