openMP并行区域的过高开销

时间:2013-12-10 20:12:26

标签: performance parallel-processing profiling openmp tracing

我有以下代码

for (int i = 0; i < BIG_INT ~O(1e5); ++i)
{
    intialize()
    TIMER_START("T1")
    #pragma omp parallel 
    {
        TIMER_START("T2")

        // Some big chunk of work 

        TIMER_START("T2")
    }
    TIMER_STOP("T1")
}

计时器T1和T2测量编译指示内外的时间。对于每个线程,都有自己的定时器T2副本。 T1和T2是累积计时器。

这是最让我烦恼的部分。定时器T1报告的总时间约为19秒,而T2定时器报告的时间从11-14秒变化。

因此看似平行开销花费了5秒钟,这看起来过于昂贵。有什么可能导致它的线索?

我的猜测是,可能存在一些负载不平衡?我该如何验证这个假设?

0 个答案:

没有答案