- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
英特尔在Xeon Phi上具有多个SIMD ISA,例如SSE,AVX,AVX2,AVX-512和IMCI。这些ISA在不同的处理器上受支持。例如,只有Skylake才支持AVX-512 BW,AVX-512 DQ和AVX-512 VL,而至强融核则不支持。 Skylake和Xeon Phi均支持AVX-512F,AVX-512 CDI,AVX-512 ERI和AVX-512 PFI。
英特尔为什么不设计一种可以在其所有高级处理器上运行的通用SIMD ISA?
此外,英特尔在开发ISA时会删除一些内在函数并添加新的内在函数。许多内在函数具有多种 flavor 。例如,有些工作在打包的8位上,而另一些工作在打包的64位上。某些口味没有得到广泛支持。例如,至强融核将不具备处理压缩8位值的功能。但是,Skylake将拥有此功能。
为什么英特尔会以这种不一致的方式更改其SIMD内部函数?
如果SIMD ISA彼此更兼容,则可以用更少的精力将现有的AVX代码移植到AVX-512。
最佳答案
我认为原因是三方面的。
(1)当他们最初使用designed MMX时,它们的工作空间很小,因此使其变得尽可能简单。他们还以与现有x86 ISA完全兼容的方式进行了此操作(精确中断+上下文切换中的某些状态保存)。他们没想到他们会不断扩大SIMD寄存器的宽度并添加这么多指令。每一代,当他们添加更宽的SIMD寄存器和更复杂的指令时,都必须维护旧的ISA以获得兼容性。
(2)您在AVX-512上看到的奇怪之处在于,他们试图统一两个不同的产品线。 Skylake来自英特尔的PC/服务器产品线,因此其路径可以看作是MMX-> SSE/2/3/4-> AVX-> AVX2-> AVX-512。 Xeon Phi是基于x86兼容的名为Larrabee的图形卡,该图形卡使用了LRBni指令集。这与AVX-512大致相同,但是指令较少,并且与MMX/SSE/AVX/etc尚未正式兼容。
(3)他们针对不同的人口特性提供不同的产品。例如(据我所知),AVX-512 CD指令将不会在用于PC的常规SkyLake处理器中提供,而仅在用于HPC的Xeon Phi上才会在用于服务器的SkyLake Xeon处理器中提供。由于CD扩展针对并行直方图生成之类的东西,因此我可以一定程度地理解这一点。与通用PC相比,这种情况更有可能成为服务器/HPC中的关键热点。
我同意这有点困惑。英特尔开始看到曙光,并计划更好地进行其他扩展。据称,AVX-512已准备好在下一代中扩展到1024位。不幸的是,它仍然还不够好,Agner Fog discusses this on the Intel Forums。
对我来说,我希望看到一个可以升级的模型,而无需用户每次都重新编译他们的代码。例如,不是将AVX寄存器定义为ISA中的512位,而是应该将其存储在微体系结构中,并由程序员在运行时进行检索。用户问这台机器上可用的最大SIMD宽度是多少?体系结构返回XYZ
,并且用户具有通用的控制流程来处理XYZ
的内容。与当前的技术相比,此技术更加干净和可扩展,而当前的技术对每个可能的SIMD版本都使用同一功能的多个版本。 :-/
关于intel - 英特尔为什么不以更加兼容或通用的方式设计其SIMD ISA?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31379636/
我的英语不好。首先我对此感到抱歉。我对 Android Studio 有疑问。我的操作系统是 LinuxMint。更新 v2.1.2 后,我的 AVD 不起作用。错误输出是这样的: Cannot la
英特尔在Xeon Phi上具有多个SIMD ISA,例如SSE,AVX,AVX2,AVX-512和IMCI。这些ISA在不同的处理器上受支持。例如,只有Skylake才支持AVX-512 BW,AVX
以下代码表示警告为 Direct access to objective-c's isa is deprecated in favor of object_setClass() and object_
根据这个 http://perldoc.perl.org/UNIVERSAL.html 我不应该使用UNIVERSAL :: isa(),而应该使用$ obj-> isa()或CLASS-> isa(
有什么区别: verify(mock, times(1)).myMethod(Matchers.isA(String.class)); verify(mock, times(1)).myMethod(
更新二:我写了两个例子来说明在接受的答案和评论中提出的想法。第一个 math_cmp.cc 执行显式类型操作。 // math_cmp.cc #include #include using nam
在 NSObject Class Reference 中,他们讨论了一个“isa 实例变量” is initialized to a data structure that describes the
我从未见过DOES之前在 Perl 程序中,但它在 docs 中上万能的。 我完全不明白 DOES 之间有什么区别和 ISA是,虽然。规范谈到了角色,可能通过聚合、委托(delegate)和模拟来完成
我正在尝试动态合并旧版本的模块 我们目前有一个使用模块的类......这个问题非常简单 use Modulev1; our @ISA = qw( Modulev1 ); sub new { m
在重构我的一些 perl 代码时,我 注意到以下奇怪的行为。 考虑这个小示例脚本: #!/usr/bin/perl -w package test; use strict; my $obj = ble
我有 ISA 层次结构的逻辑模型(“子树生成”设置为“每个实体的表”)。我将它设计为关系模型,当我想使用“生成 DDL”生成创建脚本时,我得到了这两个相同的错误: -- ERROR: No Discr
我无法理解指令集和指令集架构之间的区别。 我知道什么是 指令集 . 指令集只是定义了我们可以给处理器的可能指令,以及指令是如何给处理器的(因此是指令格式)。 现在是指令集架构 ? 我查了维基百科,它有
可靠地使用“isa()”的“最佳”方式是什么?换句话说,它可以在 上正常工作任何 值(value),而不仅仅是一个对象。 “最好”是指没有未处理的极端情况以及没有潜在的性能问题,所以这不是一个主观问题
我遇到了这段代码,但我不明白。 $type->isa('UNIVERSAL') or eval "require $type" or croak $@; 我引用了perldoc我知道子程序
ISA(例如 MIPS)和汇编语言之间有什么区别?我发现在某些上下文中它们似乎是同义词。 最佳答案 指令集架构(ISA)在物理上对应于特定处理器内的机器操作。这意味着 ISA 列出了可由特定处理器执行
我正在使用 C 编写 GameBoy 模拟器。现在我正在处理 CPU.c 文件,我对此处列出的一些指令感到有些困惑: http://realboyemulator.files.wordpress.co
我已经编写了一个 EDI 文档生成器,它当前会在 ISA 段中填充小于所需字符数的所有字段,并在左侧添加空格,例如“1234567890”表示 15 个字符的元素。我有一位客户希望我在右侧填充空格。我
我有这两个模块: package G1; sub new { my $class = shift; my $self = { one => 1, two
如果在 Java 中 B 扩展了 A。我们会说 B 'is-A' A。相反的方向关系叫什么? A“插入”B? 最佳答案 让我们将 A 替换为 Animal,将 B 替换为 Cat。如果 Cat 扩展
有什么区别 EasyMock.isA(String.class) 和 EasyMock.anyObject(String.class) (或提供的任何其他类) 在什么情况下您会使用其中一种而不是另一种
我是一名优秀的程序员,十分优秀!