有没有办法为 ITK (3.20.1) 线程设置处理器亲和性。我正在研究具有“SetGlobalDefaultNumberOfThreads”的 ITK::MultiThreader 类。但我没有找到任何关于亲和力的函数/方法。
任何帮助,将不胜感激..
有没有办法为 ITK (3.20.1) 线程设置处理器亲和性。我正在研究具有“SetGlobalDefaultNumberOfThreads”的 ITK::MultiThreader 类。但我没有找到任何关于亲和力的函数/方法。
任何帮助,将不胜感激..
在我安装的版本(3.18)中,似乎不支持此功能。但是,查看MultiThreader
头文件,我注意到实现依赖于本机 OS 线程机制。这意味着在 linux 上,实际上产生了 pthread,并pthread_t
直接用于ThreadProcessIdType
,这意味着您可以使用 linux 专有扩展来实现核心亲和力。
从这个答案引用我自己到另一个问题:
不幸的是,posix 线程 API 没有提供为线程设置 cpu 亲和性的方法。您可以使用 linux 平台上提供的不可移植的扩展
pthread_attr_setaffinity_np
,以及cpuset
一系列函数来配置线程亲和性。
由于线程已经在运行,因此您需要先获取线程属性,然后才能设置其亲和性。Linux 为此提供了另一种不可移植的功能:pthread_getattr_np
.
此外,该cpuset
功能必须在内核中构建,但是在大多数支持多核的平台上应该是这种情况。
参考: