hyperthreading相关内容

超线程处理器内核可以同时执行两个线程吗?

我很难理解超线程.如果逻辑核心实际上不存在,那么使用超线程有什么意义?wikipedia 文章指出: 对于物理上存在的每个处理器内核,操作系统会寻址两个虚拟(逻辑)内核并尽可能在它们之间共享工作负载. 如果两个逻辑核心共享同一个执行单元,这意味着其中一个线程必须在另一个线程执行时被搁置,话虽如此,我不明白超线程如何有用,因为您实际上并没有引入新的执行单元.我无法理解这个 解决方案 ..

生产者-消费者在超级兄弟与非超级兄弟之间共享内存位置的延迟和吞吐量成本是多少?

单个进程中的两个不同线程可以通过读取和/或写入共享一个公共内存位置. 通常,这种(有意的)共享是通过使用原子操作在 x86 上使用 lock 前缀来实现的,这对于 lock 前缀本身具有众所周知的成本(即,无竞争成本)以及缓存行实际共享时的额外一致性成本(true 或 false 共享). 这里我对生产消费者成本感兴趣,其中单个线程 P 写入内存位置,另一个线程 `C 从内存位置读取, ..
发布时间:2021-12-08 11:23:32 其他开发

使用 HT 在一个 Core 上执行的线程之间的数据交换将使用什么?

超线程 技术是同时多线程的一种形式英特尔推出的技术. 这些资源包括执行引擎、缓存和系统总线界面;资源共享允许两个逻辑处理器彼此更有效地合作,并允许停滞的逻辑处理器从另一个处理器借用资源. 在具有超线程的 Intel CPU 中,一个 CPU-Core(带有多个 ALU)可以在同一时钟下执行来自 2 个线程的指令.并且两个线程共享:存储缓冲区、缓存 L1/L2 和系统总线. 但是如 ..
发布时间:2021-12-06 11:36:55 其他开发

如何在 Windows、Mac 和 Linux 上检测物理处理器/内核的数量

我有一个多线程 C++ 应用程序,可以在 Windows、Mac 和一些 Linux 版本上运行. 长话短说:为了让它以最高效率运行,我必须能够为每个物理处理器/内核实例化一个线程.创建比物理处理器/内核更多的线程会大大降低我的程序的性能.我已经可以在所有这三个平台上正确检测到逻辑处理器/内核的数量.为了能够正确检测物理处理器/内核的数量,我必须检测是否支持和激活超线程. 因此,我的问 ..
发布时间:2021-12-05 19:41:39 C/C++开发

超线程代码示例

是否有一些示例代码可以说明英特尔的超线程性能?它是否可以从用户空间访问,或者该 CPU 是否对程序员透明地完成所有工作?这是针对 C、Linux 的. 解决方案 超线程性能取决于很多因素,难以估计. 简单解释一下超线程: 每个内核有多个寄存器组,但没有额外的执行单元 超线程的调度或多或少是均匀的 因此,如果运行在同一核心上的两个线程使用不同的执行单元,并且每个线程本身具 ..
发布时间:2021-11-17 02:49:17 其他开发

如何以跨系统的方式将进程仅绑定到物理内核?

我正在使用 一个项目,每次您将线程数加倍,您会增加 40% 到 60% 的开销.由于超线程将性能提高到最多 30%,这意味着程序在超线程系统上的运行速度比单线程模式要慢. 第一步似乎很简单. 通过len(os.sched_getaffinity(0)) 获取系统上的线程数 通过z3参数限制线程数. 使用 os.sched_setaffinity(0,mask) 将线程绑定 ..
发布时间:2021-10-04 20:34:46 Python

4 个内核的 8 个逻辑线程并行运行速度最多可提高 4 倍?

我是基准测试软件,它在英特尔 2670QM 上的执行速度比我的串行版本快 4 倍,使用我的所有 8 个“逻辑"线程.我想要一些关于我对基准测试结果的看法的社区反馈. 当我在 4 个内核上使用 4 个线程时,速度提高了 4 倍,整个算法并行执行.这对我来说似乎合乎逻辑,因为“Amdhals 定律"预测了这一点.Windows 任务管理器告诉我我使用了 50% 的 CPU. 但是,如果我在 ..
发布时间:2021-06-04 19:29:46 其他开发

关于超线程中L1缓存的自适应模式

我是一名学生,最近正在做一些有关超线程的研究.我对该功能感到有点困惑-L1数据缓存上下文模式. 在《英特尔®64和IA-32架构开发人员手册:第二卷》.3A (第11章/缓存控制),我在下面引用: 共享模式 在共享模式下,逻辑处理器之间竞争性地共享L1数据高速缓存.即使逻辑处理器使用相同的CR3寄存器和分页模式,也是如此.在共享模式下,可以对L1数据高速缓存中的线性地址进行别名处 ..

超线程处理器内核可以完全同时执行两个线程吗?

我很难理解超线程.如果逻辑核心实际上不存在,那么使用超线程有什么意义呢?维基百科文章指出: 对于物理上存在的每个处理器核心,操作系统都对两个虚拟(逻辑)核心进行寻址,并在可能的情况下共享它们之间的工作负荷. 如果两个逻辑内核共享相同的执行单元,这意味着一个线程将不得不搁置,而另一个线程要执行,也就是说,我不了解超线程如何有用,因为您实际上并没有引入新的执行单元.我不能为此缠住头 ..

超线程CPU是实现并行性还是仅并发性?

超线程CPU是实现并行性还是仅实现并发性(上下文切换)? 我的猜测不是并行性,而是上下文切换带来的并发性. 解决方案 具有超线程功能的单个物理CPU 内核在操作系统中显示为两个逻辑CPU .该CPU仍然是单个CPU,因此有点“作弊" -操作系统在每个内核中看到两个CPU,而实际的CPU硬件仅具有一套执行资源.CPU假装它具有比其更多的内核,并且它使用自己的逻辑来加速程序执行.超线程允 ..
发布时间:2021-04-24 21:04:27 其他开发

不同cpu AMD/Intel上的物理核心和逻辑核心

任何人都可以确认例如Intel i3 CPU具有2个物理核心和4个逻辑核心,因此如果我将进程亲和力设置为Core#0,则意味着我在第一个物理核心上设置了1个逻辑核心,但是如果我在Core上进行了设置#1,这意味着我在第一个物理核心1 HyperThreading核心上进行了设置, 但是,由于AMD CPU具有某种类型的“模块",因此如何处理?至少我在互联网上读到的东西 如何使用AMD CP ..
发布时间:2020-07-07 18:34:32 其他开发

不同CPU AMD/Intel上的物理核心和逻辑核心

谁能确认例如Intel I3 CPU有2个物理核心和4个逻辑核心,所以如果我将Process Afinity设置为Core#0,则意味着我将第一个物理核心设置为1个逻辑核心,但是如果我将核心设置为#1,这意味着我在第一个物理核心1 HyperThreading核心 上进行了设置 但是AMD CPU怎么样,因为它们有至少我在互联网上读到的“模块", 如何使用AMD CPUS? int ..
发布时间:2020-06-18 19:34:30 其他开发

超线程和游戏(以及其他计算应用程序)?

我想知道在不同情况下超线程(每个物理核有多个逻辑核)对现实世界的性能影响是什么.英特尔宣传此方法对于执行线程正在等待I/O的情况有效,但是在内存密集型应用程序中,此方法可能无效,因为在逻辑内核之间进行切换时,处理器高速缓存中会丢失局部性.第二个应用程序的数据被加载到缓存中,从而迫使第一个应用程序的内存超出缓存.返回第一个应用程序后,其引用将全部丢失高速缓存,从而导致性能下降.我认识几个超级计算机经 ..
发布时间:2020-06-18 19:34:27 其他开发

在启用了超线程的四核CPU上运行的单CPU程序

我是统计模式识别的研究人员,并且我经常运行模拟,运行了很多天.我正在运行带有Linux 3.2.0-24-generic的Ubuntu 12.04,据我所知,它支持多核和超线程.使用带有HTT的Intel Core i7 Sandy Bridge Quadcore,我经常同时运行4个仿真(程序需要很长时间).在我提出问题之前,这里是我已经(想知道)知道的事情. 我的操作系统(Ubuntu 1 ..
发布时间:2020-06-18 19:34:25 其他开发

状态资源的重复是否被认为是超线程的最佳选择?

此问题有一个答案,内容为: 超线程重复内部资源以减少上下文切换 时间.资源可以是:寄存器,算术单元,缓存. 为什么CPU设计人员最终会在状态资源中进行重复复制,以同时进行多线程(或Intel上的超线程)? 为什么相同的资源不能三倍(四倍等)为我们提供三个逻辑核心,因此吞吐量甚至更快? 重复是研究人员在某种意义上得出了最佳结果吗?,还是只是反映了当前的可能性(晶体管尺寸等)? ..

为什么没有将超线程报告为处理器支持?

我正在尝试收集系统信息,并在Intel Xeon E5420上注意到以下内容: 执行CPUID(EAX=1)后,将设置EDX [28],表示支持超线程,尽管该处理器在英特尔网站上被列为不支持超线程(有人对此有解释吗? 解决方案 根据英特尔开发人员手册,以下是该位的定义: 保留的最大APIC ID字段为有效. HTT的值为0表示存在 软件包和软件中仅应包含一个逻辑处理器 仅保留一 ..
发布时间:2020-06-18 19:34:20 其他开发

超级兄弟姐妹与非超级兄弟姐妹之间的生产者/消费者共享内存位置的延迟和吞吐量成本是多少?

单个进程中的两个不同线程可以通过读取和/或写入公用内存位置来共享. 通常,这样的(有意的)共享是使用x86上的lock前缀使用原子操作实现的,这对于lock前缀本身(即无竞争的开销)和附加的一致性都具有众所周知的成本实际共享(正确或错误共享)时的费用. 这里,我对生产消费成本感兴趣,在该生产中,单个线程P写入内存位置,而另一个线程`C从内存位置读取,都使用 plain 读取和写入. ..
发布时间:2020-06-18 19:34:18 其他开发

每个核心分配两个MPI流程

如何为每个内核分配2个MPI进程? 例如,如果我执行mpirun -np 4 ./application,则它应使用2个物理内核来运行4个MPI进程(每个内核2个进程).我正在使用Open MPI 1.6.我做了mpirun -np 4 -nc 2 ./application,但无法运行. 它抱怨mpirun was unable to launch the specified app ..
发布时间:2020-05-21 01:33:31 其他开发

OpenMP:请勿使用超线程核心(半个num_threads()具有超线程)

在我尝试使用schedule(static) num_threads(4),并且注意到我的程序始终在大约320%CPU上以11.5s至11.7s(始终低于12s)完成,例如,运行更一致,并且使用了更少的资源(即使运行得最好)比使用超线程的罕见异常值慢了半秒). 是否有任何简单的OpenMP方式可以检测超线程,并将num_threads()减少到CPU内核的实际数量? (有一个类似的问题 ..
发布时间:2020-05-21 01:24:38 C/C++开发

为什么超线程对我的算法有好处?

由于具有超线程功能,我有一台具有4个逻辑处理器的双核计算机.我正在C#中执行SHA1映像前蛮力测试.在每个线程中,我基本上都有一个for循环并计算一个SHA1哈希,然后将该哈希与所需的内容进行比较.我确保所有线程都以完全分离的方式执行.它们之间没有共享内存. (除了一个变量:long count,我在每个线程中使用: System.Threading.Interlocked.Incremen ..
发布时间:2020-05-14 01:29:55 C#/.NET