Performance 密集计算不使用全核?

Performance 密集计算不使用全核?,performance,monitoring,cpu-usage,computation,Performance,Monitoring,Cpu Usage,Computation,我正在做一个程序,涉及一些计算密集型算法。在我的i7上,执行一次完整的计算大约需要±45秒 它还不是多线程的,因此它只使用一个内核,因此有明显的改进机会 然而,当我监控我的处理器使用情况时,我注意到它甚至没有完全使用一个内核。在没有其他密集型进程运行的情况下,我在我的8个核心中的一个上看到了活动,但它只运行了60-80%,而我希望运行我的程序的核心完全占用了100% 该算法不涉及磁盘或网络访问,也不涉及大量内存(它执行一些非常繁重的图像处理,我目前只使用非常小的图像),而且不使用GPU。这是一个

我正在做一个程序,涉及一些计算密集型算法。在我的i7上,执行一次完整的计算大约需要±45秒

它还不是多线程的,因此它只使用一个内核,因此有明显的改进机会

然而,当我监控我的处理器使用情况时,我注意到它甚至没有完全使用一个内核。在没有其他密集型进程运行的情况下,我在我的8个核心中的一个上看到了活动,但它只运行了60-80%,而我希望运行我的程序的核心完全占用了100%

该算法不涉及磁盘或网络访问,也不涉及大量内存(它执行一些非常繁重的图像处理,我目前只使用非常小的图像),而且不使用GPU。这是一个简单、直接的过程,只需做一次繁重的计算,我不会睡觉,也不会打断或等待事件或任何事情


计算密集型程序(完全不依赖外部资源)不使用运行中的内核的原因是什么?

一个简单的解释是,计算的内存访问量比您想象的要多。您是否分析过代码或使用过其他方法来了解实际情况?cpu温度是否达到很高?@HighPerformanceMark好的,我正在进行的计算通常不是内存密集型的。我使用了一些大约4KB的缓冲区(这些缓冲区不连续地被完全读取或写入),但仅此而已。然而,我想知道,即使内存访问是瓶颈,这不也会出现在核心活动中吗?我的意思是,处理器实际上大部分时间都在忙于访问内存?@phoxis不,如果我运行其他非常有目的的进程,我通常可以听到我的风扇上升,但这里不是这样。这是另一个问题,我不想回答。如果你愿意的话可以问,但是首先要做你的研究,注意遵守SO关于构建好问题的指导方针。