问题标签 [hyperthreading]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - JVM + Linux + Intel 的超线程 =
我注意到 JVM 线程由于某些原因在 Linux 下作为进程运行(如果我错了,请纠正我)。此外,事实上英特尔的超线程只为属于同一进程的两个线程提供了额外的并行化。
这是否意味着单个多线程 JVM 程序不会从 Linux 下的超线程中受益,因为它的线程从 CPU“角度”来看不是线程?
matlab - 如何从 MATLAB 查询物理内核的数量?
有谁知道从 MATLAB 查询物理内核数量的方法?我特别想获得物理核心而不是逻辑核心的数量(启用超线程时可能会有所不同)。
我需要跨平台的方法(Windows 和 Linux,不关心 Mac),但我很乐意使用两个单独的方法和switch
基于computer
.
到目前为止,我已经尝试过:
java.lang.Runtime.getRuntime().availableProcessors
System.Environment.ProcessorCount
!wmic cpu get NumberOfCores
和!wmic cpu get NumberOfLogicalProcessors
。
1 是跨平台的,但返回逻辑而不是物理处理器的数量。
2 仅适用于 Windows,并且还返回逻辑处理器而不是物理处理器。
3 提供物理和逻辑处理器,但也仅适用于 Windows,虽然我可以从 DOS 命令窗口成功使用它,但由于某种原因,从 MATLAB 运行时它似乎永远挂起。
python - 使用超线程运行模拟使运行时间加倍
我使用用 python/numpy/cython 编写的模拟。由于我需要对许多模拟运行进行平均,因此我使用多处理模块批量运行所有单独的模拟运行。
在办公室,我有一个带 HT 的 i7-920 工作站。在家里,我没有 i5-560。我认为我可以在办公室的每批中运行两倍的模拟实例,并将运行时间缩短一半。令人惊讶的是,与在我的家庭工作站上花费的时间相比,每个单独实例的运行时间增加了一倍。也就是说,在家里并行运行 3 个模拟实例需要 8 分钟,而在办公室运行 6 个实例大约需要 15 分钟。使用 'cat /proc/cpuinfo' 我验证了 'siblings' = 8 和 'cpu cores' = 4,因此启用了 HT。
我不知道任何“总运行时间守恒”定律(尽管从科学的角度来看,它可能非常有趣:)),在这里跳出某人可能会对这个难题有所了解。
cpu-architecture - 两个进程可以同时在一个 CPU 内核上运行吗?
两个进程可以同时运行在一个具有超线程的 CPU 内核上吗?我从网上学习。但是,我没有看到一个明确的直接答案。
编辑: 感谢讨论和分享!我在这里发布我的问题的目的不是讨论并行计算。太大了,这里就不讨论了。我只想知道多线程应用程序是否比多进程应用程序更能从超线程中受益。进一步阅读后,我有以下作为我的学习笔记。
1) 启用超线程技术的 CPU 内核有两组 CPU 状态和中断逻辑。同时,它只有一套执行单元和缓存。(我还没有研究什么是管道)
2)只有在某些执行的线程中发生延迟时,多线程才能从超线程中受益。我认为这一点可以准确地映射到软件程序员为什么以及何时使用多线程的常见原因。如果多线程应用程序已经优化。它可能不会从 Hypter 线程中获得任何好处。
3)如果CPU状态映射到进程状态,我相信Marc是正确的,多进程应用程序甚至可以从超线程技术中受益更多。
4) 当 CPU 供应商说“线程”时,看起来他们的“线程”与我作为 java 程序员所知道的线程不同?
performance - 我应该禁用超线程来运行并行模拟吗?
我的电脑有一个四核 i7 处理器。我正在研究科学模拟的并行化。超线程如何影响并行性能?我知道我不应该使用超过 4 个工作流程来获得下降性能。但是我也应该禁用超线程吗?它对并行性能有影响吗?
multithreading - 超线程会影响 32 位处理器上 32 位 int 读/写的原子性吗?
我在某处读到超线程可以使 32 位 int(在 32 位处理器上)读取和写入非原子,即使它是边界对齐的。谁能解释超线程如何影响这一点?
multithreading - 4 核的 8 个逻辑线程并行运行的速度最高可提高 4 倍?
我正在对软件进行基准测试,该软件在 Intel 2670QM 上的执行速度比我使用所有 8 个“逻辑”线程的串行版本快 4 倍。我想要一些关于我对基准测试结果的看法的社区反馈。
当我在 4 个内核上使用 4 个线程时,我的速度提高了 4 倍,整个算法是并行执行的。这对我来说似乎是合乎逻辑的,因为“阿姆达尔定律”预测了这一点。Windows 任务管理器告诉我我正在使用 50% 的 CPU。
但是,如果我在所有 8 个线程上执行相同的软件,我会再次得到 4 倍的加速,而不是8 倍的加速。
如果我理解正确的话:我的 CPU 有 4 个内核,频率分别为 2.2GHZ,但是当应用于 8 个“逻辑”线程时,频率分为 1.1GHZ,其余组件(如缓存内存)也是如此? 如果这是真的,那么为什么任务管理器声称我的 CPU 只使用了 50%?
我不包括使用磁盘 I/O 的时间。我只对 STL 调用所需的时间(STL 排序)感兴趣,而不是磁盘 I/O。
c# - 如何使用此代码使我的 i7 处理器达到 100% 的使用率(解析 xml 的最快方法)
如何使用此代码使我的 i7 处理器达到 100% 的使用率?XmlDocument 中是否发生了一些特别的事情?仅仅是因为上下文变化吗?如果是这样,为什么放置更多线程不会使处理器使用其全部功能?一次解析多个字符串的最佳方法是什么?
编辑:
也许这段代码会让它更清楚,不管它使用 30% 的处理器的线程数是多少:
x86 - 为什么在没有它的处理器上报告支持超线程?
我正在尝试收集系统信息,并在 Intel Xeon E5420 上注意到以下内容:
执行后CPUID(EAX=1)
,EDX[28] 被设置,表明支持超线程,尽管处理器在英特尔网站上被列为不支持超线程 ( ark.intel.com )
有人对此有解释吗?
linux - 为什么开启超线程后性能变差了?
我将 Linux 内核 2.6.32 移植到 Intel(R) Xeon(R) CPU E31275 @ 3.40GHz。如果我在 BIOS 中启用超线程,我可以看到 8 个 CPU 内核(CPU0 ~ CPU7)。大部分中断发生在 CPU 4 中,这个核心的 CPU 使用率远高于其他核心(几乎是其他核心的两倍)。我不是很明白,因为我认为我没有设置任何IRQ绑定操作。
如果我在 BIOS 中禁用超线程,那么一切正常。IRQ 已经平衡,所有内核(CPU0 ~ CPU3)的 CPU 使用率也接近平衡。
有人可以解释一下吗?和BIOS有关吗?我应该在内核中做一些特殊的设置吗?