6

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

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

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

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

4

1 回答 1

5

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

在使用 Visual Studio 2013 编译时,将OMP_WAIT_POLICY设置为PASSIVE确实为我解决了这个问题。

于 2014-08-05T18:51:07.910 回答