c++ - 微软的OpenMP自旋锁时间如何控制?

标签 c++ visual-studio-2010 visual-studio openmp spinlock

英特尔编译器使用的 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,如本 Knowledge base article 所示

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

关于c++ - 微软的OpenMP自旋锁时间如何控制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20748066/

相关文章:

visual-studio - 是否应该将 .nuget 文件夹添加到版本控制中?

c# - 有没有办法将环境变量传递给 Visual Studio 项目并在 C# 中使用它?

c++ - 我怎样才能并行化这个求解器代码

c++ - 使用 sfml 绘制瓦片 map

c++ - 类中的所有对象都应该是引用吗?

c++ - 在完全专用的模板函数中实例化一个类的对象

c++ - OpenGL LookAt 函数 : is the up vector arbitrary?

c# - visual studio 网站 - 有很多随机错误,但仍在 build 中?

visual-studio-2010 - XNA 4中的管道装配是什么?

c# - 无法创建 asp net core 2.0 web api