核心数和逻辑处理器数有什么区别?

Bor*_*lis 6 cpu cpu-cores

我一直在使用Erdas Imagine在我的计算机上进行一些图像处理。具体来说,我正在对图像运行 5x5 中值滤波器。我可以指定 Erdas 批处理命令窗口中同时发生的进程数。当我指定 16 个并发进程时,我一直在观察异常行为,这导致我仔细检查机器上的处理器数量。我使用以下命令提示符命令来评估处理器的数量:

wmic cpu > cpu.txt
Run Code Online (Sandbox Code Playgroud)

其中产生(部分):

Number of Cores: 8 
Number of Logical Processors: 16
Run Code Online (Sandbox Code Playgroud)

在 Erdas 等软件的上下文中,内核的数量与逻辑处理器的数量有何不同?我试图确定是否应该指定 8 个或 16 个同时进行的进程以最大限度地提高效率。

Jas*_*n C 14

超线程将使一个物理内核在操作系统中显示为两个。

超线程本质上允许一个内核一次执行两组指令,具体取决于指令的性质。当它第一次推出时(早在 2002 年,当时非常热闹,超频者和当时的新博主疯狂地争论 HT 与真正的多核——有些事情永远不会改变)它有点像“双核精简版” ”。为了使超线程的使用对现有软件和操作系统透明,它们被设计成两个内核,因此内核可以继续使用其现有的调度和负载平衡,并利用超线程而无需任何更改(当然,稍后,进行了优化)。这就是它以这种方式开始的原因——因此超线程 CPU 可以直接替代已经具有多处理器支持的平台。

无论如何,由于效率取决于应用程序的性质,您可能希望在 8 和 16 处进行基准测试(如果进程不受 CPU 限制,但例如网络或 IO 限制,则更高)。

  • 我基本上同意,但想澄清的是,超线程 (HT) 不允许一个内核同时执行两组指令。就最小化对性能的影响而言,HT 使得在两组指令之间*切换* 非常快,或者说“便宜”。在任一时刻,每个物理核只执行两个 HT 线程中的一个,但它们之间切换的开销大大降低。然而,仍然存在一些开销。如果某些系统管理员经常有大量 CPU 密集型线程,则可能会关闭超线程,以消除这种开销。 (5认同)