我有以下代码
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秒钟,这看起来过于昂贵。有什么可能导致它的线索?
我的猜测是,可能存在一些负载不平衡?我该如何验证这个假设?