openmp数量的线程在Fortran代码上发生了变化

时间:2014-11-23 23:31:28

标签: multithreading fortran openmp

我在使用Intel Xeon CPU的机器上使用Ubuntu 14.04 x64。我正在经历一种奇怪的行为。我有一个Fortran代码,计算的冗长部分与OpenMP并行。使用较小的数据集(比如小于4000)一切正常。但是,当我测试一个具有90K元素的数据集时,在计算中间,使用的线程数突然下降到1,这显然减慢了计算速度。

我已经做过这些检查了: 使用OMP_GET_NUM_THREADS()我监视进程中的线程数,即使在系统使用1个线程之后它仍然是相同的。

我在循环内使用LAPACK例程进行特征值计算。我在我的系统上再次编译了Lapack,以确保我系统上的库不做任何事情。

系统是否可以从外部更改已使用线程的数量?如果是这样的话? 谢谢。

1 个答案:

答案 0 :(得分:2)

它看起来像负载平衡问题。尝试动态调度:

   !$OMP PARALLEL SCHEDULE(DYNAMIC)