2012-02-19 13 views
1
for (int i = 0; i < x_res; i++){ 
    #pragma omp parallel for 
    for (int j = 0; j < y_res; j++) { 
     Ray hit = s.kd_tree->intersect(rays[i][j]); 
    } 
} 

なぜこのコードは並行して動作しないのですか?私は理由を見つけることができません。このコードはなぜopenMPでSIGABRTを与えていますか?

バックトレースを出力する:

#0 0x00007fff8ce03bf2 in __psynch_mutexwait() 
#1 0x00007fff8cd331a1 in pthread_mutex_lock() 
#2 0x00000001000027e4 in gomp_barrier_destroy() 
#3 0x000000010000247b in gomp_team_end() 
+0

答えは表示されないコードのどこかにあります。ワーカースレッドの1つがおそらくエラーで中断しています。 – talonmies

+0

並行して実行されることなく、うまく動作します。交差関数には、openMPコードはありません。 – Luis

+1

したがって、広義の答えは、交差関数がスレッドセーフではない可能性が高いことです。 – talonmies

答えて

1

http://hpc.sourceforge.net/から最後のgcc(今のところ4.8)をダウンロードしてください。

OpenMPのバグが修正されました

関連する問題