如何将四核的 3 个核心与 Linux 隔离并专门用于 Halcon?

Posted

技术标签:

【中文标题】如何将四核的 3 个核心与 Linux 隔离并专门用于 Halcon?【英文标题】:How do I isolate 3 cores of a quadcore from Linux and use them for Halcon, exclusively? 【发布时间】: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 线程。 【参考方案1】:

您是否 100% 确定这应该并行运行? 你能用不同的代码类型(ECC200)试试吗?根据 Speedup 部分中的https://www.mvtec.com/products/halcon/documentation/release-notes-1911-0/,我们确信 ECC200 读取器在 HALCON 内部进行了并行化。如果此阅读器在您的系统上并行运行而 QR 码阅读器没有,我会假设 QR 码阅读器根本没有被 HALCON 并行化。

【讨论】:

以上是关于如何将四核的 3 个核心与 Linux 隔离并专门用于 Halcon?的主要内容,如果未能解决你的问题,请参考以下文章

四核CPU支持几个线程

如何看CPU几核几核的

cpu的线程越多占用率越低吗?还是取决于核心数?

四核智能手机和两核的哪个费电?

用ARM cortex A9四核开发板,哪个比较好?

内存分配失败:如何将四个结果集合并到一张表中