2017-01-09 85 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