Performance 使用OpenMP降低x64的性能
我注意到在版本模式下用VS2008以x64“模式”运行代码时出现了一个非常奇怪的行为 我寻求性能改进,因此我将我的项目转向x64平台(我最初的项目是作为控制台应用程序Win32编写的) 我确实取得了一些进步,但在跑步过程中我发现了一个非常奇怪的行为。我使用OpenMP pragmas来并行化循环(“for”)。因此,当我在四核i5处理器上运行我的程序(Win32)时,我看到100%的CPU负载和4个线程。没关系 但是当我切换到x64模式(在Projet Properties->Configuration Manager->…)时,100%的负载会下降到75%、50%甚至25%(3-5分钟后)。但仍然有4个线程在运行。(根据资源监视器) 怎么可能在所有4个踏板上只有25%的CPU性能?假设每个线程在其各自的内核上运行 p.S.操作系统Windows 7 x64和VS 2008 提前谢谢!任何建议都将不胜感激 A.K.已解决: 我想我确实知道我的问题的答案:当所有4个踏板都处于活动状态时,只有25%的CPU负载,这意味着4个内核中的3个完成了他们的工作,并等待最后一个内核完成他的工作。可能这个核心被计算卡住了(有一个积分计算,如果积分不收敛,它会尝试减小步长并继续计算)Performance 使用OpenMP降低x64的性能,performance,parallel-processing,64-bit,openmp,Performance,Parallel Processing,64 Bit,Openmp,我注意到在版本模式下用VS2008以x64“模式”运行代码时出现了一个非常奇怪的行为 我寻求性能改进,因此我将我的项目转向x64平台(我最初的项目是作为控制台应用程序Win32编写的) 我确实取得了一些进步,但在跑步过程中我发现了一个非常奇怪的行为。我使用OpenMP pragmas来并行化循环(“for”)。因此,当我在四核i5处理器上运行我的程序(Win32)时,我看到100%的CPU负载和4个线程。没关系 但是当我切换到x64模式(在Projet Properties->Configura
我不确定,这是我的猜测 不幸的是,这是不可能的,因为没有简短而独立的部分。粗略地说,有两个嵌套的“for”循环,它们在每个矩阵单元用繁琐的积分表达式填充二维矩阵。