3.1.7 omp_set_dynamic 函数

omp_set_dynamic 功能启用或禁用线程数动态调整可用于并行区域的执行。 格式如下所示:

#include <omp.h>
void omp_set_dynamic(int dynamic_threads);

如果 dynamic_threads 计算为非零值,对于执行后续并行区域使用线程的数目可能由种运行时环境自动调整以最佳利用系统资源。 因此,用户指定的线程的数目最大线程计数。 线程数在执行并行区域的团队保持固定为该并行区域的持续时间以及由 omp_get_num_threads 函数报告。

如果 dynamic_threads 计算结果为 0,动态调整被禁用。

该函数具有中描述的效果顶部,在调用从 omp_in_parallel 函数返回零程序的一部分。 如果从 omp_in_parallel 函数返回非零值程序的一部分调用,此功能的行为未定义。

omp_set_dynamic 的调用在 OMP_DYNAMIC 环境变量的优先级。

线程的动态调整的默认实现中定义。 因此,依赖于线程的特定数字正确执行的用户代码应显式禁用动态线程。 不需要实现能够动态地调整线程数,但是,要求他们提供接口以便支持在所有平台上的可移植性。

交叉引用:

  • omp_get_num_threads 功能,请参见中的第 37 页的 第3.1.2部分

  • OMP_DYNAMIC 环境变量,请参见中的第 49 页的 第4.3部分

  • omp_in_parallel 功能,请参见中的第 38 页的 第3.1.6部分