gpt4 book ai didi

c++ - 并行程序 : How to find the bottleneck (CPU bound threads)

转载 作者:太空狗 更新时间:2023-10-29 21:20:49 26 4
gpt4 key购买 nike

我使用 OpenMP 编写了一个并行程序。它使用两个线程,因为我的笔记本电脑是双核的,线程做很多矩阵运算,所以它们受 CPU 限制。线程之间没有数据共享。该程序的单个实例运行得相当快。但是当我同时运行同一个程序的多个实例时,性能会下降。这是一个情节:running time vs number of parallel instances

单个实例(两个线程)的运行时间为0.78秒。两个实例(总共四个线程)的运行时间为 2.06,是 0.78 的两倍多。之后,运行时间随着实例数(线程数)的增加而增加。

这是多个并行运行时其中一个实例的计时配置文件:

profile

有人可以提供有关可能发生的事情的见解吗?该配置文件显示 OpenMP 消耗了 50% 的时间。这是什么意思?

最佳答案

与@Bort 所说的类似,您使应用程序成为多线程(两个线程),因为您有两个内核。

这意味着当您的程序只有一个实例在运行时(理想情况下)它会使用整个 CPU。

但是,如果应用程序的两个实例正在运行,则没有更多可用资源。他们每人将花费两倍的时间。更多实例相同。

如果不增加每个实例可用的内核数量(即保持每个实例 2 个,而不是缩小百分比),则无法解决此问题。

关于c++ - 并行程序 : How to find the bottleneck (CPU bound threads),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23769131/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com