我使用任务集设置多线程进程在 Linux 主机上运行,如下所示:
任务 -c 1,2 ./myprocess
特定线程是否总是在特定 CPU 上运行,例如线程 1 总是在 c1 上运行?或者它会在不同时间在 c1 或 c2 上运行?
不,过滤器应用于整个进程,线程可以在核心(受限列表)之间移动。如果您希望线程不移动,那么您需要单独设置每个线程的亲和力(例如,使用pthread_setaffinity_np
例如)。请注意,您可以使用强大的 hwloc 工具检查给定进程的线程的关联性(hwloc-ps -t
).
请注意,某些库/框架有方法可以更轻松地做到这一点。 OpenMP 程序就是这种情况,您可以使用环境变量,例如OMP_PLACES
设置每个线程的亲和力。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)