我在发布模式下使用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。
答案 0 :(得分:0)
解决:
我想我确实知道我的问题的答案:只有25%的CPU负载而所有4个踏板都处于活动状态,意味着4个核心中的3个完成了他们的工作并等待最后一个核心完成他的工作。可能这个核心仍然存在计算(有一个积分计算,如果积分不收敛,它会尝试减少步长并继续计算)。
我不确定,这是我的猜测。