- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在哪里可以找到有关 x86 微体系结构“市场份额”的数据?有多少百分比的 x86 系列 CPU 用户拥有支持 SSE4.2、AVX、AVX2 等的 CPU?
我正在为我的程序分发预编译的二进制文件,我想知道什么是最佳优化目标,哪些 SIMD 扩展可以在没有运行时检查的情况下合理使用。
我可以找到英特尔与 AMD 的整体市场份额数据,但不能找到英特尔和 AMD 几代 CPU 的分割数据。理想情况下,我还希望按操作系统和国家/地区进行分割,但即使是微体系结构的一般全局统计数据也比没有好。
最佳答案
如果没有回退或安装时检测,任何比 SSE2(x86-64 的基线)更新的没有运行时检查的东西都是有风险的。
可悲的是,AVX 和 BMI1/2 离基线还很远,因为英特尔仍在销售禁用 VEX 前缀解码的赛扬/奔腾芯片(大概是为了利用具有 256 位执行单元缺陷的硅),但 SSE4.2 正在获得更接近,SSSE3 是可能的。见 Most recent processor without support of SSSE3 instructions? , 和 Mac OSX minumum support sse version
Do all 64 bit intel architectures support SSSE3/SSE4.1/SSE4.2 instructions?有一个链接到 the Valve Hardware Survey Steam 客户端 (目前显示 SSE3 的安装基数约为 100%,但 SSSE3 只有 97%),因此如果您要发布一款与目标受众相关度很高的 PC 游戏。但是,对于某些条目,分割有点奇怪。赞 fcmov
(x87 branchless conditional-move) 据说已经完成了 97.5%,但是每个 P6 兼容的 CPU 都有。您不会找到带有 SSE2 但没有 FCMOV 的 CPU。也许较新版本的 Steam 没有针对它进行测试。也许旧版本的 Steam 没有针对 CMPXCHG16B 进行测试?所以对它们持保留态度,但它们对于 SSE2/3/SSSE3/SSE4.x 和 AVX 可能相当明智。
对于服务器内容,您可以轻松设置 SSE4.2 最小值。 Atom/Silvermont 支持它,AMD 和 VIA 的低功耗架构也支持它,因此节能服务器可以运行它。古代主流 CPU 在个人家庭服务器以外的服务器上没有太多用处,因为它们通常比运行温度更低的更便宜的现代机器慢。
(Silvermont 不太可能很快支持 AVX,更不用说 AVX2 或 FMA。)
您不必将自己限制在单个二进制文件中。 您甚至可以让人们在下载时进行选择,或者您的安装程序可以在安装时进行选择。
或者你可以有一个运行时包装器来选择一个可执行文件和动态库,这样你就可以有效地获得运行时调度,同时仍然能够使用 gcc -O3 -march=haswell
进行编译。或任何让编译器在所有地方使用新指令集的方法(特别是对于 BMI1/BMI2 有效的单 uop 可变计数移位)。
另一种选择是动态链接器技巧,无论是在整个库的基础上还是在每个函数的基础上,如 glibc 用来解析 memcpy
至 __memset_avx2_unaligned_erms
. perf report shows this function "__memset_avx2_unaligned_erms" has overhead. does this mean memory is unaligned?
所有这些(除了每个函数的动态链接器技巧)都比让您的代码在运行时了解指令集扩展更容易,并且性能开销为零。 (除非您将原本不需要的东西放入动态库中,否则它无法内联。)
关于x86 微架构/SIMD 市场份额,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53036557/
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 11 年前。 Improve thi
我有一个名为 df 的 Pandas DataFrame,它包含 n 列。 列 之一名为COUNT,它显示A 中的值出现了多少次。 A 包含唯一标识符,因此每一行在 column COUNT 中的值为
我有一个非常简单的 java 程序,可以打印出 100 万个随机数。在 linux 中,我观察了这个程序在其生命周期中占用的 %CPU,它从 98% 开始,然后逐渐减少到 2%,从而导致程序非常慢。哪
我正在使用 (EC)DHE 加密类型 x25519,我在计算共享 key 时遇到了一个大问题。 我有三个键: 爱丽丝的私钥: a : "984a382e1e48d2a522a0e81b92fd1351
我是一名优秀的程序员,十分优秀!