在服务器上相互瘫痪的程序(带有openMP和python的c++)

programs paralyzing each other on the server (c++ with openMP and python)

本文关键字:openMP 带有 python c++ 程序 服务器      更新时间:2023-10-16

我有一个紧急问题,因为我的时间不多了:我让我的计算在一个有8个核心的服务器上进行,因此我在c++代码中使用了openMP,它运行得很好。当然,我不是唯一一个使用服务器的人,所以我的容量并不总是800%CPU。

但现在发生了好几次,有人在机器上启动了他的python程序,完全瘫痪了我和他的程序:虽然我仍然使用大约500%的CPU,但代码运行速度慢了大约100倍——对我和其他人来说你知道原因是什么吗?如何预防

这可能有很多原因,例如:

  • 分支预测中的失败率增加
  • 耗尽的CPU缓存
  • 已填充内存总线
  • 过多的上下文切换(这对很多事情都有影响,包括前面的所有要点)

正如Emil Vikström所列举的,有几个原因会导致这种瘫痪。我可以通过启用可用线程数的动态调整来解决这个问题:

omp_set_dynamic(1);

我以为它是默认打开的。事实并非如此。