如何控制Microsoft的 OpenMP 自旋锁时间?

How can Microsoft's OpenMP spinlock time be controlled?

本文关键字:OpenMP 时间 Microsoft 何控制 控制      更新时间:2023-10-16

英特尔编译器使用的 OpenMP 支持环境变量 KMP_BLOCKTIME (docs),我相信它控制线程等待新工作所花费的繁忙等待(自旋锁定)时间(链接文档声称默认为 200 毫秒)。

Gnu编译器使用的OpenMP支持环境变量GOMP_SPINCOUNT(docs),我相信它也控制着该库的等效实现细节(尽管显然表示为迭代计数而不是时间)。

我的问题是:Microsoft提供哪些控件(如果有)来控制Microsoft编译器使用的 OpenMP 中的此参数? (目前我感兴趣的是VS2010。

(我很清楚,如果我的程序的并行性完全基于 OpenMP,那么几乎没有理由担心这一点,但我的兴趣是由来自大型复杂系统的一些 vtune 跟踪引起的,该系统也大量使用 TBB。

Microsoft Visual Studio 2010 SP1 及更高版本似乎确实支持OMP_WAIT_POLICY,如本知识库文章所示

OMP_WAIT_POLICY设置为 PASSIVE 确实为我解决了使用 Visual Studio 2013 编译时的问题。