Intel编译器使用的OpenMP支持环境变量KMP_BLOCKTIME
(docs http://software.intel.com/sites/products/documentation/doclib/iss/2013/compiler/cpp-lin/GUID-E1EC94AE-A13D-463E-B3C3-6D7A7205F5A1.htm)我相信它控制着线程等待新工作的忙等待(自旋锁定)时间(链接文档声称默认为 200 毫秒)。
Gnu编译器使用的OpenMP支持环境变量GOMP_SPINCOUNT
(docs http://gcc.gnu.org/onlinedocs/libgomp.pdf%E2%80%8E)我相信它也控制该库的等效实现细节(尽管显然表示为迭代计数而不是时间)。
我的问题是:Microsoft 提供哪些控件(如果有)来控制 Microsoft 编译器使用的 OpenMP 中的此参数?(目前我感兴趣的是VS2010。)
(我很清楚,如果我的程序的并行性完全基于 OpenMP,则没有什么理由担心这一点,但我的兴趣是由来自大型复杂系统的一些 vtune 跟踪引起的,该系统也大量使用了 TBB。)
Microsoft Visual Studio 2010 SP1 及更高版本似乎确实支持 OMP_WAIT_POLICY,如此所示知识库文章 http://support.microsoft.com/kb/2689322
setting OMP_WAIT_POLICY to PASSIVE确实为我解决了使用 Visual Studio 2013 编译时的问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)