2017-01-09 29 views
0

我想研究OpenMP API將線程分配給內核的基礎。在這樣做時考慮哪些因素?這個分配是否可以根據程序員的需要進行修改?OpenMP如何進行線程分配?

+1

也許是一個太寬泛的問題。考慮詢問其他社區,如https://www.reddit.com/r/programming/ – pedrorijo91

回答

0

我相信你正在尋找開口線程和硬件線程/內核之間的親和力。答案是肯定的,順便說一句。

如果你使用英特爾編譯器,你可以看看這個網站的KMP_AAFFINITY環境變量。 https://software.intel.com/en-us/node/522691

如果您使用GNU編譯器,您可能會對這些官方OpenMP環境變量感興趣。 https://gcc.gnu.org/onlinedocs/libgomp/OMP_005fPLACES.html https://gcc.gnu.org/onlinedocs/libgomp/OMP_005fPROC_005fBIND.html

+0

我不認爲gnu文檔明確指出,親和支持保留給完全支持的目標(不包括Windows)。英特爾和gnu OpenMP默認爲每個邏輯處理器1個線程,這通常太多(除非您禁用超線程) – tim18