【发布时间】:2021-08-24 12:39:58
【问题描述】:
如何将一个四核的 3 个核心与 Linux 隔离并专门用于 Halcon?
这是我迄今为止尝试过的:
- 我通过引导选项
isolcpu=1,2,3将 Linux 配置为仅使用四核 CPU 的核心 0 - 我启动了我的多线程 C++ 程序,让一个线程用几个
HSystem::SetSystem()配置 Halcon。这是halcon主线程。默认情况下,“thread_pool”选项设置为"true"(但我也尝试过"false")。而且,重要的是,首先,halcon 主线程的这个运行函数调用pthread_setaffinity(getpid(), sizeof(set), &set);为cpu_set_t set,为此我使用CPU_SET(index, &set)添加了核心1、2 和3。 - 无论如何,现在具有“最大”模式的 QR 矩阵代码应该在核心 1、2 和 3 上启动多个线程。但它不起作用。它仅在 CPU 负载几乎为 90% 的核心 1 上运行,而核心 2 和 3 的 CPU 负载保持在 0%(参见
top -H)。这在我看来好像 Halcon 确实错过了使用所有 3 个内核的神奇选项。
【问题讨论】:
-
psrset? (unix.com/man-page/linux/1m/psrset)
-
@Dominique:我需要在程序中通过 API 函数解决它,因为我的 C++ 应用程序在核心 0 上也有线程,但我只想在 CPU 1、2 和 3 上有它的 Halcon 线程。