【问题标题】:Openmp find number of threads available on machineOpenmp查找机器上可用的线程数
【发布时间】:2016-05-16 11:16:39
【问题描述】:

我正在我的计算机上运行并行计算。我希望程序不要使用所有核心,而是为系统留出一个。 如何将程序中的线程数设置为比处理器上的线程数少一?

OMP_get_max_threads()OMP_set_num_threads 对不能为我解决这个问题:我已将程序编译为 octave 函数(oct 文件)并通过 octave 解释器调用它。 OMP_get_max_threads() 获得环境变量或其他东西,因此,此变量在调用之间保留,随后对计算例程的调用进一步减小该值。第一次调用使用 3 个内核,第二次调用使用 2 个内核,以此类推。

那么,如何确定硬件可用线程数?

【问题讨论】:

    标签: fortran openmp


    【解决方案1】:

    您始终可以使用OMP_GET_NUM_PROCS() 来获取可用的 cpu 内核(逻辑或物理,超线程都可以发挥作用)。

    OMP_get_max_threads() 通常返回相同的数字。我没有得到你对它的描述减少,也许你应该举一些例子。

    另见https://software.intel.com/en-us/forums/intel-visual-fortran-compiler-for-windows/topic/302866

    【讨论】:

    • 嗯,这是我在 octave 解释器中使用程序造成的。使用OMP_GET_NUM_PROCS() 解决了它。
    猜你喜欢
    • 2012-12-03
    • 2017-04-20
    • 2021-10-15
    • 2013-05-24
    • 1970-01-01
    • 1970-01-01
    • 2012-02-18
    • 1970-01-01
    • 2015-03-04
    相关资源
    最近更新 更多