gpt4 book ai didi

x86 微架构/SIMD 市场份额

转载 作者:行者123 更新时间:2023-12-04 23:12:38 24 4
gpt4 key购买 nike

在哪里可以找到有关 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com