在服务器上相互瘫痪的程序(带有openMP和python的c++)
programs paralyzing each other on the server (c++ with openMP and python)
我有一个紧急问题,因为我的时间不多了:我让我的计算在一个有8个核心的服务器上进行,因此我在c++代码中使用了openMP,它运行得很好。当然,我不是唯一一个使用服务器的人,所以我的容量并不总是800%CPU。
但现在发生了好几次,有人在机器上启动了他的python程序,完全瘫痪了我和他的程序:虽然我仍然使用大约500%的CPU,但代码运行速度慢了大约100倍——对我和其他人来说你知道原因是什么吗?如何预防
这可能有很多原因,例如:
- 分支预测中的失败率增加
- 耗尽的CPU缓存
- 已填充内存总线
- 过多的上下文切换(这对很多事情都有影响,包括前面的所有要点)
正如Emil Vikström所列举的,有几个原因会导致这种瘫痪。我可以通过启用可用线程数的动态调整来解决这个问题:
omp_set_dynamic(1);
我以为它是默认打开的。事实并非如此。
相关文章:
- OpenMP阵列性能较差
- Cpp-Tuple使用带有变量的get
- 当在带有Eigen的C++中使用GDB时,我如何才能看到更多的大矩阵
- C++中带有List类的迭代器Segfault
- 带有特殊路径部分的"std::filesystem::weakly_canonical"失败
- 在C应用程序中运行C++(带有STL)函数
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- C++使用数组作为多维数组,尽管将其初始化为带有指针的 1D
- C++Boost Asio Pool线程,带有lambda函数和传递引用变量
- 带有 OpenMP 的特征稀疏矩阵 - 插入值时崩溃
- 使用带有 c++ openmp 的自旋锁
- 使用MPI/OpenMP的C 程序带有派生数据类型(嵌套类对象)容器
- OpenCV 致命错误,同时编译带有 openmp 和 opencv 库的 cpp 文件
- 带有静态变量的OpenMP线程亲和力
- 带有OpenMP的平行部分
- 带有条件语句的OpenMP竞赛条件
- 如何在while循环中使用带有break的openmp
- 在服务器上相互瘫痪的程序(带有openMP和python的c++)
- OpenMP对带有映射的循环进行并行处理
- OpenMP 用于带有 std::vector 和标量变量的循环,带有缩减