在特定数量的cpu上运行TBB代码

时间:2015-09-17 19:45:01

标签: linux parallel-processing cpu tbb

我正在linux上运行tbb代码,我想使用我的一部分CPU(8个中的2个)运行我的代码。除了禁用核心之外还有其他方法。

2 个答案:

答案 0 :(得分:1)

taskset(1)允许您在系统的特定核心子集上运行命令。

taskset -c 0,1 ./a.out

答案 1 :(得分:1)

TBB尊重进程关联掩码(在Linux上:第一次初始化TBB的[主]线程的亲和掩码)。因此,默认情况下,它将创建工作线程,其数量考虑了在关联掩码中设置为1的位数。例如,使用tasksetnumactl设置关联掩码。 E.g:

numactl --physcpubind=1,2 path/application arg1 arg2

这就像禁用核心,但仅限于特定进程。

您还可以使用旧的tbb::task_scheduler_init或新的tbb::global_control API控制代码中的线程数。但它不会为TBB线程分配关联掩码,它只会改变线程数。

如果要手动将关联掩码分配给TBB创建的工作线程,请从tbb::task_scheduler_observer派生自己的类,以便为this blog中所述的工作线程创建定义自定义操作。< / p>