如何在c++中充分利用多cpu
How to take advantage of multi-cpu in c++?
我在实验室工作,使用std::thread
在C++11上编写了多线程计算程序。现在我有机会在多cpu服务器上运行我的程序。
服务器:
- 运行Ubuntu服务器
- 拥有40个Intel CPU
我对多cpu编程一无所知。首先,我想到了运行40个应用程序,然后将它们的结果粘合在一起。这是可能的,但我想更多地了解我的机会。
- 如果我在服务器上用它的gcc编译器编译代码,生成的应用程序会利用多cpu吗
- 如果#1的答案取决于情况,我该如何检查
谢谢!
如果你的程序运行多线程,你的操作系统应该自动注意使用可用的CPU。
确保将您必须做的工作分配给与您可以使用的CPU数量大致相同的线程。确保不是只有一个线程在做这项工作,而其他线程只是在等待这个线程的终止。
您的问题不仅仅是关于多线程,而是关于多cpu。
-
基本上,操作系统会自动将线程分布在内核上。你什么都不需要做。
-
一旦您使用C++11,您就有了
std::thread::get_id()
,您可以调用它并识别不同的线程,但您无法识别您正在使用的核心。直接使用pthreads
+"cpu亲和性"。
你可以在谷歌上搜索"CPU亲和力",了解如何控制它的更多细节。如果你想要这种精度。你可以识别核心,也可以选择核心。。。您可以从以下内容开始:http://man7.org/linux/man-pages/man3/pthread_setaffinity_np.3.html
相关文章:
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 在模拟器中使用并集来模拟CPU寄存器有多合适
- 编写一个函数以使用 n 百分比的 CPU 使用率
- 如何禁用 CPU 的无序执行
- CPU 瓶颈;处理具有许多非静态对象的 3D 场景渲染的简单方法
- 分别测量每个线程上花费的 CPU 时间(C++)
- 什么时候最好在子进程中使用 CPU 或 I/O 密集型代码 [ C++ ]
- 在程序运行时监视 VxWorks 中的任务 CPU 利用率
- 对于等待以 std::future wait() 返回的函数的 CPU 使用率或检查标志在循环中休眠一段时间哪个更好?
- 您选择的 CPU 不支持 x86-64 指令集
- 如何降低应用程序的 CPU 使用率?
- 对于 CPU 无法原子操作的类型,std::atomic 有什么意义?
- 如何区分CPU和内存瓶颈?
- 如何以编程方式获取任务管理器进程CPU使用率(不是PerfMon API)
- CPU 如何提供memory_order_acquire保证?
- 一段时间后 CPU 使用率高
- C/C++memcpu基准测试:测量CPU和墙时间
- 高CPU使用率,在API桌面复制中获取帧之间具有不同的超时间隔
- 超过CPU时间限制:当MPI_Sent一个非常大的int*时
- Tensorflow如何默认使用CPU核心