【问题标题】:Run TBB code on specific number of cpu在特定数量的 cpu 上运行 TBB 代码
【发布时间】:2015-09-17 19:45:00
【问题描述】:

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

【问题讨论】:

    标签: linux parallel-processing cpu tbb


    【解决方案1】:

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

    taskset -c 0,1 ./a.out
    

    【讨论】:

      【解决方案2】:

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

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

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

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

      如果您想手动将关联掩码分配给 TBB 创建的工作线程,请从tbb::task_scheduler_observer 派生您自己的类,以便按照this blog 中的描述定义您的工作线程创建自定义操作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-07-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-26
        • 2015-08-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多