所以我目前正在学习openmp4。
我所经历的是,如果我第二次调用一个函数,它会明显加快。 omp块在此函数内部。
在我的例子中,第一个呼叫需要5秒,第二个呼叫需要0,3秒。 我正在使用带有Intel Xeon Phi(60cores 240Threads)的intel-icc。
有人可以解释为什么会这样吗?
答案 0 :(得分:0)
我认为这是由于OpenMP线程初始化造成的。创建线程团队,并初始化每个线程等。这实际上是一个昂贵的过程。
我不知道你的代码是什么样的,但这也可能是缓存的影响。在第一次,麦克风将开始缓存所需的数据。第二次:数据已经缓存并准备就绪。但在看到代码之前,我无法确认这一点。