2011-11-02 80 views
0

我使用VTune來檢查我的代碼的併發性。 Here是輸出的屏幕截圖。你可以看到,有一個初始階段有一個線程,然後〜0.3秒的密集多線程工作(棕色尖峯),然後幾乎3秒的空閒(沒有棕色的「CPU」,只是綠色的「運行」)。OpenMP,VTune,空閒線程

任何想法會導致線程處於綠色空閒狀態?我的代碼應該在做所有密集計算後返回,沒有理由再等3秒...

回答

0

您的程序在沒有探查器的情況下執行多少?速度更快嗎?查看VTune的時間線視圖,我得到一個印象,即主線程可能使用pthread_exit()退出main()函數,因此OpenMP工作線程繼續存在,阻止程序結束,直到某個超時過期並且工作線程決定關閉自己。請參閱here關於pthread_exit的討論。