我已经写了一个使用OpenMP并行化了多个循环的代码。当执行此代码的单个实例时,运行时间非常短。但是当我并行执行代码的多个实例时,每个实例的运行时间都比预期的要长。
使用Zoom,我分析了一个实例(当70个实例并行运行时),配置文件显示OpenMP消耗了65%的时间(请参见下图)。这可能是正确的吗?

发布于 2014-05-01 01:49:23
看起来你已经oversubscribed这台机器了。因此,OpenMP运行时开始在自旋循环中浪费时间,等待preempted线程。即使自旋循环是超订用感知的(即周期性地调用sched_yield() ),它仍然将时间浪费在频繁的上下文切换和其他开销上。
https://stackoverflow.com/questions/23393842
复制相似问题