如何指定 pthread 在哪个核心上生成

如何指定 pthread 在哪个核心上生成

我正在运行一个集群,其中每个节点都有一个 Intel Xeon E5430。 /proc/cpuinfo 报告 8 个核心。我在 Ubuntu 16.04LTS 上使用用 gcc 版本 5.3.1 编译的 C/C++。

将我的工作分发到每个节点是最简单的部分。我的问题与每个节点上运行的进程有关。如何创建 8 个并发线程并保证每个线程在单独的核心上生成?

15 年前,当我使用 32 处理器 SGI 时,fork 命令采用一个整数参数,即物理处理器 ID。在 fork 或 threading 中是否有类似的调用将线程放置在物理核心上?

答案1

可以安全地假设默认情况下会发生这种情况,但是您可以显式设置 cpu 关联性,即您要使用的 cpu 集的位掩码,对于具有sched_setaffinity()或者对于 pthreadspthread_setaffinity_np()。 cli 命令是任务集。这些是 Linux 和 GNU 特定的。

相关内容