我有一个使用 C 编程的混合 MPI+OpenMP 代码。在运行代码之前,我设置了要在 Linux Bash 中使用的线程:
!# /bin/sh
export OMP_NUM_THREADS=1
但是,如果我想使用 native 的最大线程数,在linux bash环境下如何设置呢?
最佳答案
通常,OpenMP 实现足够智能,可以为线程数提供良好的默认值。例如:
- 如果您在没有任何
OMP_NUM_THREADS
设置的情况下运行 OpenMP 程序并且根本没有 MPI,OpenMP 通常会确定有多少个内核并使用所有内核。 - 如果有 MPI,并且 MPI 进程通过进程固定绑定(bind)到机器的一个子集,例如,每个处理器插槽一个等级,OpenMP 将继承这个子集,并且实现将自动只使用那个子集。
在所有这些情况和大多数其他情况下,您根本不需要设置 OMP_NUM_THREADS
。
如果您可以分享有关您正在努力实现的目标的更多详细信息,则可以提供有关您需要做什么的更详细的答案。
关于c - 最大线程和最佳线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55056610/