如何在c++中充分利用多cpu

How to take advantage of multi-cpu in c++?

本文关键字:cpu c++      更新时间:2023-10-16

我在实验室工作,使用std::thread在C++11上编写了多线程计算程序。现在我有机会在多cpu服务器上运行我的程序。

服务器:

  • 运行Ubuntu服务器
  • 拥有40个Intel CPU

我对多cpu编程一无所知。首先,我想到了运行40个应用程序,然后将它们的结果粘合在一起。这是可能的,但我想更多地了解我的机会。

  1. 如果我在服务器上用它的gcc编译器编译代码,生成的应用程序会利用多cpu吗
  2. 如果#1的答案取决于情况,我该如何检查

谢谢!

如果你的程序运行多线程,你的操作系统应该自动注意使用可用的CPU。

确保将您必须做的工作分配给与您可以使用的CPU数量大致相同的线程。确保不是只有一个线程在做这项工作,而其他线程只是在等待这个线程的终止。

您的问题不仅仅是关于多线程,而是关于多cpu。

  1. 基本上,操作系统会自动将线程分布在内核上。你什么都不需要做。

  2. 一旦您使用C++11,您就有了std::thread::get_id(),您可以调用它并识别不同的线程,但您无法识别您正在使用的核心。直接使用pthreads+"cpu亲和性"。

你可以在谷歌上搜索"CPU亲和力",了解如何控制它的更多细节。如果你想要这种精度。你可以识别核心,也可以选择核心。。。您可以从以下内容开始:http://man7.org/linux/man-pages/man3/pthread_setaffinity_np.3.html