2014-05-08 19 views
9

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 

'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)); 
    } 
} 

Trả lời

Các vấn đề liên quan