在进行超频和运行压力测试时,我注意到启用Hyperthreading时,优化了AVX的LINPACK版本的多线程浮点吞吐量低于禁用Hyperthreading时。这是在Ivy Bridge i7(3770k)上发现的。我还注意到,尽管我将CPU运行在更低的核心电压下,但禁用Hyperthreading后,LINPACK导致更高的核心温度。所有这些都让我相信,在没有Hyperthreading的情况下,流水线利用率实际上更高。
我很好奇:这只是LINPACK算法固有的导致流水线停顿或SMT中低效分配的问题,还是英特尔的SMT实现在两个线程都发出宽SIMD指令时真的很难调度流水线?如果是这样,Haswell解决了这个问题吗,或者未来的英特尔架构会解决这个问题?AVX512是否容易出现这个问题?
最后,在使用AVX进行Intel系统编程时,有哪些好的步骤可以避免SMT中低效的流水线分配?
我很好奇:这只是LINPACK算法固有的导致流水线停顿或SMT中低效分配的问题,还是英特尔的SMT实现在两个线程都发出宽SIMD指令时真的很难调度流水线?如果是这样,Haswell解决了这个问题吗,或者未来的英特尔架构会解决这个问题?AVX512是否容易出现这个问题?
最后,在使用AVX进行Intel系统编程时,有哪些好的步骤可以避免SMT中低效的流水线分配?