我想研究一下OpenMP API将线程分配给内核的基础。这样做时会考虑哪些因素?可以根据程序员的需要修改此分配吗?
您正在寻找开口线程和硬件线程/内核之间的亲和力。答案是肯定的,顺便说一句。
如果您使用英特尔编译器,则可以查看此站点KMP_AAFFINITY环境变量。https://software.intel.com/en-us/node/522691
如果您使用 GNU 编译器,您可能会对这些官方的 OpenMP 环境变量感兴趣。https://gcc.gnu.org/onlinedocs/libgomp/OMP_005fPLACES.htmlhttps://gcc.gnu.org/onlinedocs/libgomp/OMP_005fPROC_005fBIND.html
是的,线程数绝对可以根据程序员的判断进行修改。
请参阅:OpenMp 根据变量设置并行循环的线程数
默认情况下,OpenMP 分配的线程数与运行它的计算机/节点(如果是分布式系统)上的内核数一样多。