如何将四核的 3 个核心与 Linux 隔离并专门用于 Halcon?
这是我迄今为止尝试过的:
- 我通过引导选项将 Linux 配置为仅使用四核 CPU 的核心 0
isolcpu=1,2,3
- 我启动了我的多线程 C++ 程序,让一个线程用几个
HSystem::SetSystem()
. 这是halcon主线程。默认情况下,“thread_pool
”选项设置为"true"
(但我也尝试过"false"
)。而且,这很重要,首先,我在 halcon 主线程pthread_setaffinity(getpid(), sizeof(set), &set);
中cpu_set_t set
添加了核心 1、2 和 3CPU_SET(index, &set)
。 - 无论如何,现在具有“最大”模式的 QR 矩阵代码应该在核心 1、2 和 3 上启动多个线程。但它不起作用。它仅在 CPU 负载几乎为 90% 的核心 1 上运行,而核心 2 和 3 的 CPU 负载保持在 0%(参见
top -H
)。这在我看来好像 Halcon 确实错过了使用所有 3 个内核的神奇选项。