我正在使用C語言編寫OpenMP程序。我有共享數組「數據」正在被所有線程更新。我希望確保每個線程都已完成讀取部分並在執行下一條語句data [j] = temp之前將值存儲在temp中。在OpenMP中避免競爭(在並行循環中)
我試着在兩個語句之間放置#pragma omp barrier但編譯器拋出一個錯誤。請幫忙。
#pragma omp parallel for shared(data)
for (j = 0; j < numints; j++){
if (j >= max_j)
{
temp = data[j] + data[j - max_j];
data[j] = temp;
}
}
什麼是編譯器錯誤? – BobbyShaftoe 2010-10-17 05:41:16
barrier指令不能出現在並行結構中(在IBM編譯器上) – bcubed 2010-10-17 05:46:14