100000000 の整数配列内の要素を検索し、それを i+1 (i は要素のインデックス) に初期化するプログラムを作成しました。ここで、私は 73500320 を探しており、見つかった場合は整数 'me' を 1 に更新します。'me' は -1 に初期化されました。しかし、私が私を印刷すると、時々 -1 として印刷され、時には 1 として印刷されます (常に見つかるはずです!) エラーがわかりません...
#pragma omp parallel
{
int thread = omp_get_thread_num();
int num_thread=omp_get_num_threads();
int beginpos = (thread + 0) * (100000000 / num_thread);
int endpos = (thread + 1) * (100000000 / num_thread);
for (i = beginpos; i < endpos; i++)
{
#pragma omp flush(done)
if (done == 1)
{
break;
}
if (a[i] == 73500320)
{
/* Inform the other threads that we found the element. */
done = 1;
#pragma omp flush(done)
me = 1;
break;
}
}
}