2013-10-15 41 views
1

該代碼使用OpenMP線程的數目:問題在C

#include <stdio.h> 
#include <stdlib.h> 
#include <omp.h> 

int main(int argc, char** argv){ 

    omp_set_dynamic(0); 
    omp_set_num_threads(4); 

    #pragma omp paralell 
    { 
     printf("%d\n", omp_get_thread_num()); 
    } 

} 

輸出:

0 

不應輸出是0,1,2,和3中的一些置換?

回答

5

寫入omp_set_dynamic(0);您指出運行時不會動態調整線程數。這個函數的參數應該是非零的,以利用num的動態調整。線程。你的代碼中還拼錯parallel

+0

調度omp_set_dynamic(0)是故意的,拼寫錯誤平行,然而,不是。該代碼適用於正確的英文:) – user2817012

1

如果你拷貝&粘貼你的源代碼,我認爲它是因爲「並行」拼錯了。 我剛剛發現gcc 默默忽略如果沒有設置-W標誌,則對openmp pragmas拼寫錯誤。使用-Wall編譯

warning: ignoring #pragma omp paralell [-Wunknown-pragmas] 
#pragma omp paralell 

因此,讓gcc打印警告是一個好主意。

0

不要忘記的啓用OpenMP支持編譯器,其由缺省爲主流的編譯器等的gcc/ICC/VC++禁用的