c - 最大线程和最佳线程

标签 c linux bash mpi openmp

我有一个使用 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/

相关文章:

c - 在C中将值插入二叉树根

c - 查找 char 指针、int 和 float 的结尾

c - freeRTOS 中的软件中断

linux - NASM 一次打印一个字符

linux - 按比特率对 mp3 文件进行排序的 Bash 脚本

c - 删除链表中M个节点后的N个节点

linux - 使用perl脚本在linux中杀死多个进程

c++ - Makefile:没有规则来制作目标。停止

javascript - 使用sed命令替换javascript中的变量值

regex - 了解 bash 中 = 和 =~ 运算符的区别 [[ ]]