如何解决在哪里可以看到 OMP 计划自动选择的内容?
有没有办法找出 OMP 运行时为 schedule(auto)
选择的调度方案?我发现(并且直觉上这是有道理的)对于我的问题schedule(static)
是最快的,所以我想知道这是否是运行时在设置 schedule(auto)
时选择的(它们同样快)。>
解决方法
是的。您可以在运行程序之前将环境变量 OMP_DISPLAY_ENV
设置为 TRUE
以获取此信息。它应该在 OpenMP 运行时初始化时打印 OMP_SCHEDULE
变量。例如,在我的系统上,GOMP (GCC) 选择 DYNAMIC
而 IOMP (Clang/ICC) 默认选择 static
。您可以通过自己设置环境变量 OMP_SCHEDULE
来选择此默认值。您还可以在程序中使用 OpenMP 函数 omp_get_schedule
在运行时检索信息。
除非您知道一个调度从根本上优于另一个调度(例如由于算法本身),否则让默认(基于运行时)行为是一个很好的做法。实际上,两个 OpenMP 运行时或两台机器之间的结果可能会有很大不同。例如,动态调度在理论上可能比静态调度更好,但是一个运行时的开销可能非常高,这似乎是一个非常糟糕的选择,而这对于另一种实现来说可能不是问题。内核数量及其布局(例如 NUMA 系统)也是影响不同调度策略性能的重要参数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。