2016-04-11 18 views
-2

我必須學會OpenMP來源gcc。我已閱讀OpenMP(3.0和4.0)的文檔。據我所知,OpenMP使用work-sharing機制。據我所知work-sharing機制在線程間傳輸任務,而線程正在運行。或者在執行這些線程之前線程之間的數據分配正在執行?工作共享機制(在OpenMP中)是否在線程正在執行時在線程之間傳輸任務?

+0

學習[自己實施工作分享可以教你很多](http://stackoverflow.com/a/30591616/2542702)。 –

回答

1

如果您使用OpenMP和任務,則任務將存儲在一個或多個任務隊列中。如果一個線程發現自己處於空閒狀態,它將窺探鄰居隊列中的任務。這是libgomp的內部。

如果您使用OpenMP 平行使用靜態計劃,則不會發生任務監聽。

如果您使用OpenMP 並行使用動態計劃,則團隊中的線程將動態分配工作,因此空閒線程將從團隊的其餘部分獲取任務。

通常,當線程需要在運行時進行通信時,週期將從處理中消耗。

+0

非常感謝! –

相關問題