获取OpenMP中循环迭代的默认调度

时间:2015-03-18 10:26:02

标签: openmp

在OpenMP中,当您未指定任何循环迭代策略时(在代码pragma中或通过环境变量OMP_SCHEDULE),specs(第2.3.2节)明确指出默认循环迭代策略是实现 - 定义和实现可能会也可能不会暴露它。

是否有解决方法来获取此政策?为了明确,我想得到规范中定义的内部控制变量 def-sched-var 的值。

我在POWER8架构上使用GCC 4.9和OpenMP 4.0。

1 个答案:

答案 0 :(得分:-1)

首先,我从未见过任何默认调度类型不是static的实现,但这并不意味着它们都默认使用静态。

但是,从您的评论中,我推断您要在代码的性能和使用的调度类型之间建立关联。

您可以使用各种类型的调度(即静态,动态和引导)来运行代码。这将告诉您性能如何随调度策略而变化。也许这会马上告诉你一些东西,但我会尝试不同的东西,比如查看每个并行循环并测量其性能。发布主循环,以便我们可以告诉您是否还有其他内容。

简而言之,我怀疑改变调度类型会快速解决糟糕的性能问题。