【问题标题】:Is omp_set_num_threads routine used to set hardware threads or software threads?omp_set_num_threads 例程是用来设置硬件线程还是软件线程?
【发布时间】:2020-06-06 19:26:28
【问题描述】:

我最近开始研究并行计算以及实现示例,但我无法弄清楚 omp_set_num_threads 例程是否为程序设置了硬件线程或软件线程的限制。 p>

【问题讨论】:

  • IIUC,硬件线程数是在CPU造的时候决定的,所以我说是软件。

标签: parallel-processing openmp openmpi


【解决方案1】:

Mark 的评论是正确的,因为可用内核的数量是在制造时配置的。它可以进一步受到 BIOS 设置、管理程序、操作系统或用于启动程序的其他软件层的限制。

在您的程序“可见”的内容中,omp_set_num_threads() 设置用于执行下一个并行区域的 OpenMP 线程数。所以,它是软件线程的数量。请注意,您可以使用比可用核心更小的数量,这意味着您正在订阅系统,也就是说,您让核心闲置。您还可以将更大的数字传递给omp_set_num_threads()订阅系统,即多个软件线程在同一个内核上运行。

通常,除非您想显式订阅不足或过度,否则无需使用omp_set_num_threads(),因为通常 OpenMP 会检测程序的可用内核并将其用作默认值。

【讨论】:

    猜你喜欢
    • 2011-08-01
    • 2019-05-07
    • 2014-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多