在多处理机上执行c++程序

Executing C++ program on multiple processor machine

本文关键字:c++ 程序 执行 多处理机      更新时间:2023-10-16

出于研究目的,我用c++开发了一个程序。需要几天才能完成。

现在我在我们的实验室8核服务器机器上执行它以快速获得结果,但我看到机器只给我的程序分配了一个处理器,并且它仍然保持在13%的处理器使用率(即使我将进程优先级设置为高级别并且亲和性为8核)。

(这是一个简单的面向对象程序,没有任何并行性和多线程)

如何从强大的服务器机器中获得真正的好处?

将你的代码分割成可以并行执行的块。

你需要去读一下数据并行和任务并行。

那么您可以使用OpenMP或MPI

(它是一个简单的面向对象程序,没有任何并行性多线程)

如何从强大的服务器机器中获得真正的好处?

通过使用更多线程。无论计算机有多强大,它都不能在多个处理器上分配线程。找到程序的独立部分并并行运行它们。

    <
  • c++ 0 x线程/gh><
  • 提高线程/gh>
  • OpenMP

我个人认为OpenMP是个玩具。

您必须通过将代码拆分为可以独立执行的多个任务,然后直接使用线程原语或更高级别的并行化框架(如OpenMP)来显式地利用多并行性。

如果您不想让您的程序本身使用多线程库或技术,您可以尝试将您的工作分解为几个独立的块。然后运行你的程序的多个副本…每个都被分配给不同的块,通过获取不同的命令行参数来指定。

至于总体上提高程序的性能…有一些分析工具可以帮助您加快速度或找到内存使用、I/O、CPU方面的瓶颈:

https://stackoverflow.com/questions/tagged/c%2b%2b%20profiling

不会帮助你将工作分散到多个核心,但如果你能在一个算法中获得8倍的加速,那可能比多线程在8核上的帮助更大。再考虑一下。