PBS中给定外壳的Linux echo cpu(核心)名称/编号 我有一个简单的C++代码,它使用英特尔的TBB来运行PBS中的脚本列表。我想确认我正在按预期使用所有内核。每个节点有16个核心。我创建的脚本需要不同的时间,如果列表被平均分配,我将有空闲的内核。如果列表被划分为可用的核心,我应该没有空闲的核心。该代码在单个节点上运行正常,但在多个节点上运行不正常

PBS中给定外壳的Linux echo cpu(核心)名称/编号 我有一个简单的C++代码,它使用英特尔的TBB来运行PBS中的脚本列表。我想确认我正在按预期使用所有内核。每个节点有16个核心。我创建的脚本需要不同的时间,如果列表被平均分配,我将有空闲的内核。如果列表被划分为可用的核心,我应该没有空闲的核心。该代码在单个节点上运行正常,但在多个节点上运行不正常,linux,cpu,cpu-usage,tbb,pbs,Linux,Cpu,Cpu Usage,Tbb,Pbs,除了核心之外,我想要类似于echo$HOSTNAME的东西。谷歌让我失望了,并给出了一些结果,以反映内核的数量或使用了多少内核。我曾尝试使用top并监视作业运行,但这并没有告诉我哪个内核。在任何给定时刻,由Linux调度程序决定哪个进程获得哪个内核。它在一秒钟内多次做出这些决定,并根据负载频繁地将进程从一个核心移动到另一个核心 您可以使用ps命令的psr选项获取进程到cpu分配的快照: ps -o pid,psr,cmd -28832 PID PSR CMD 28832 1 bash

除了核心之外,我想要类似于echo$HOSTNAME的东西。谷歌让我失望了,并给出了一些结果,以反映内核的数量或使用了多少内核。我曾尝试使用top并监视作业运行,但这并没有告诉我哪个内核。

在任何给定时刻,由Linux调度程序决定哪个进程获得哪个内核。它在一秒钟内多次做出这些决定,并根据负载频繁地将进程从一个核心移动到另一个核心

您可以使用ps命令的psr选项获取进程到cpu分配的快照:

ps -o pid,psr,cmd -28832
  PID PSR CMD
28832   1 bash
也就是说,这里bash pid=28832被分配给处理器id=1的第二个内核

在C代码中,可以使用linux/getcpu.h中定义的getcpu2调用


要将进程分配给一组特定的内核,您可以运行numactl8或taskset1,指定cpu关联掩码。

是否可以添加伪代码?我不太明白你的问题是什么。您是否对0,N,[]int i{run_scripti;}使用parallel_?我最终使用了通过getcpu方法找到的sched_getcpu。谢谢你的解决方案。