【发布时间】:2020-06-06 19:26:28
【问题描述】:
我最近开始研究并行计算以及实现示例,但我无法弄清楚 omp_set_num_threads 例程是否为程序设置了硬件线程或软件线程的限制。 p>
【问题讨论】:
-
IIUC,硬件线程数是在CPU造的时候决定的,所以我说是软件。
标签: parallel-processing openmp openmpi
我最近开始研究并行计算以及实现示例,但我无法弄清楚 omp_set_num_threads 例程是否为程序设置了硬件线程或软件线程的限制。 p>
【问题讨论】:
标签: parallel-processing openmp openmpi
Mark 的评论是正确的,因为可用内核的数量是在制造时配置的。它可以进一步受到 BIOS 设置、管理程序、操作系统或用于启动程序的其他软件层的限制。
在您的程序“可见”的内容中,omp_set_num_threads() 设置用于执行下一个并行区域的 OpenMP 线程数。所以,它是软件线程的数量。请注意,您可以使用比可用核心更小的数量,这意味着您正在订阅系统,也就是说,您让核心闲置。您还可以将更大的数字传递给omp_set_num_threads() 并订阅系统,即多个软件线程在同一个内核上运行。
通常,除非您想显式订阅不足或过度,否则无需使用omp_set_num_threads(),因为通常 OpenMP 会检测程序的可用内核并将其用作默认值。
【讨论】: