使用运行时例程声明锁时,OpenMP Profiler(ompP)失败 - omp_set_lock(& lock)

时间:2016-01-10 04:47:48

标签: multithreading profiling openmp

我正在尝试测量openMP程序中的锁争用。我一直在使用OpenMP Profiler(ompP)。对于使用编译器指令表示所有并行化的代码,ompP非常适用。但是,当代码使用运行时例程omp_set_lock()

时,探查器似乎失败了

我得到的错误信息是:

export OMPP_DISABLE_LOCKS=yes

在使用gdb运行程序时,我发现错误是在omp_set_lock()命令之后立即触发的。此外,如果我设置环境变量

Document doc = Jsoup.connect(url).timeout(5000).get();

然后我没有收到任何错误。

我还检查了第870行的文件ompp_regstat.c。代码本质上是switch语句,如果并行化不是通过编译器指令,则设计为失败。

这让我提出两个问题:

  1. 如何检测运行时例程定义的锁的锁争用? ompP似乎无法做到这一点,还是我错过了一个明显的步骤?
  2. ompP生成的报告中同步开销的含义是什么?这是否包括争用通过编译指示隐式定义的锁?

0 个答案:

没有答案