Openmp查找机器上可用的线程数

时间:2016-05-16 11:16:39

标签: fortran openmp

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

OMP_get_max_threads()OMP_set_num_threads对我没有解决这个问题:我已经将程序编译成八度函数(oct-file)并通过八度解释器调用它。 OMP_get_max_threads()获取环境变量或其他内容,因此,此变量保持在调用之间,随后对计算例程的调用会进一步减小该值。第一个呼叫使用3个核心,第二个 - 2,依此类推。

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

1 个答案:

答案 0 :(得分: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