使用OpenMP,性能下降了x64

时间:2012-02-21 16:32:41

标签: performance parallel-processing 64-bit openmp

我在发布模式下使用VS 2008以x64“模式”运行代码时发现了一个非常奇怪的行为。

我寻求性能改进,因此我将项目转换为x64平台(我的原始项目被编写为控制台应用程序Win32)。

我确实获得了一些改善,但我在跑步过程中发现了一种非常奇怪的行为。我使用OpenMP pragma来并行化循环(“for”)。因此,当我在四核i5处理器上运行我的程序(Win32)时,我看到100%的CPU负载和4个线程。没关系。

但是当我切换到x64模式(在Projet Properties-> Configuration Manager-> ...中)时,100%负载下降(3-5分钟后)到75%, 50%,甚至25%。但仍然有4(!)个线程运行。 (根据资源监测报告)。

如何在所有4个踏板上仅占总CPU性能的25%?每个线程都假设在其各自的核心上运行。

P.S。 OS Windows 7 x64和VS 2008。

提前致谢!任何建议都非常感谢!

A.K。

1 个答案:

答案 0 :(得分:0)

解决:

我想我确实知道我的问题的答案:只有25%的CPU负载而所有4个踏板都处于活动状态,意味着4个核心中的3个完成了他们的工作并等待最后一个核心完成他的工作。可能这个核心仍然存在计算(有一个积分计算,如果积分不收敛,它会尝试减少步长并继续计算)。

我不确定,这是我的猜测。