如何控制Microsoft的 OpenMP 自旋锁时间?
How can Microsoft's OpenMP spinlock time be controlled?
英特尔编译器使用的 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 编译时的问题。
相关文章:
- C++为构建时间获取QDateTime的可靠方法
- 从持续时间构造std::chrono::system_clock::time_point
- 如何使用OpenMP并行化此矩阵时间矢量运算
- 我使用 OpenMP 的线程越多,执行时间就越长,这是怎么回事?
- 为什么 std::chrono 在测量循环和编译器优化的并行 OpenMP 的执行时间时不起作用?
- 为什么 C++ openMP 程序执行时间更长
- openMp 动态调度与按处理时间排序任务时的 LPT 调度相同吗?
- 使用 OpenMP 并行执行比串行执行 c++ 花费更长的时间,我计算执行时间是否正确?
- OpenMP 并行编程基于线程数与执行时间的关系
- 使用OpenMP库,执行时间如何取决于线程数量的增加
- 为什么使用openMP的VC++矩阵时间矢量比异步更快
- 如何在最短的时间内处理大文件(c ++,openmp,输入文件:FASTQ/FASTA)
- OpenMP:嵌套的 for 循环,执行时间几乎没有任何差异
- 为什么要在我的OpenMP代码中增加执行时间
- 如何控制Microsoft的 OpenMP 自旋锁时间?
- C++和OpenMP——线程的执行时间大不相同
- 在 OpenMP 代码C++测量执行时间
- OpenMP代码大部分时间都在Join Barrier上等待
- 通过使用OpenMP并行化来减少时间
- OpenMP,循环并行,处理时间差异大