2017-03-27 5 views
0
#include "stdio.h" 
#include "omp.h" 

void main() { 
omp_set_num_threads(4); 
#pragma omp parallel 
{ 
    int numberOfThreads = omp_get_num_threads; 
    int ID = omp_get_thread_num; 
    printf("%d %d \n",ID,numberOfThreads); 
} 
} 

答えがある保つ:私はいくつかだけを取得私は、OpenMPでスレッドの間違ったIDと番号を取得して私が手

gcc -O3 -fopenmp -Wall test.c 

4196016 4196064 
4196016 4196064 
4196016 4196064 
4196016 4196064 

私は、次のコマンドを使用してプログラムをコンパイル警告メッセージ:

test.c: In function ‘main’: 
test.c:8:24: warning: initialization makes integer from pointer 
without a cast [enabled by default] 
    int numberOfThreads = omp_get_num_threads; 
        ^
test.c:9:11: warning: initialization makes integer from pointer 
without a cast [enabled by default] 
    int ID = omp_get_thread_num; 

ありがとう!

+0

た場合でなければなりませんこれらの関数のアドレスを出力したい場合は、関数ポインタと '%p'のprintf指定子を使うべきです。値を必要とするならば、関数を呼び出すべきでしょう: 'omp_get_num_threads()'と 'omp_get_thread_num()' - '()'に注意して関数呼び出しを示してください。 –

+0

応答ありがとう!私は問題を見る-_- 私はJavaでプログラムを作成していましたが、誤って関数や変数を使用するとエラーになります。 –

+0

質問タイトルに「(解決済み)」のような言葉を入れないでください。回答を解決策としてマークしたという事実は、すでに問題が解決されたことを示しています。 –

答えて

5

ものは機能しているので、

int numberOfThreads = omp_get_num_threads; 

int numberOfThreads = omp_get_num_threads(); 

そして

int ID = omp_get_thread_num; 

でなければならないことは

int ID = omp_get_thread_num(); 
+0

ありがとう!私はそれを逃すために愚かな感じ! –

関連する問題