FFmpeg开发人员声称使用手写AVX-512指令可将性能提高94倍

摘要:

高级矢量扩展是 x86 指令集架构的一种"单指令、多数据"扩展,由 Intel 和 AMD 在现代 CPU 中实现。 这些指令可显著增强并行处理工作负载,尤其是与 512 位寄存器和 AVX-512 指令集中的其他高级功能配合使用时。

图片.png

FFmpeg 团队最近强调了 AVX-512 指令如何在视频处理工作负载中显著提升性能。 根据其中一位开发人员展示的幻灯片,利用这些 SIMD 指令的优化"手写汇编"可以将视频解码程序的速度提高 3 到 94 倍。

虽然没有提供用于基准测试的 CPU 或系统的具体信息,但 AVX-512 技术于 2016 年首次出现在英特尔的 Xeon Phi x200(Knights Landing)CPU 系列中。 AVX-512 向量指令与高度优化的汇编代码的结合大幅提升了性能,尽管 AVX 指令从一开始就是为增强 SIMD 并行处理而设计的。

FFmpeg 是一款免费的开源软件包,它提供了一整套用于处理音频和视频流的库和工具,是名副其实的"多媒体瑞士军刀",被 VLC 等流行媒体播放器和 YouTube 等大型企业所采用。 FFmpeg 核心团队负责监督该项目,而志愿者社区则提供代码和补丁。

开发人员说,FFmpeg 目前约有 8% 的代码依赖汇编语言,因此还有很大的改进空间。 汇编语言是一种低级语言,如今很少有程序员会专门学习这种语言,尤其是因为软件行业现在大多优先使用高级、易学的语言,如 Python 。

尽管如此,熟练的开发人员总是渴望在最新的硬件上最大限度地提高性能。 FFmpeg 包括针对 x86 和 ARM 处理器的自定义"手写"解码例程,尽管软件行业中有些人希望 AVX-512 能" 痛苦地死去"。

最近,英特尔推出了AVX10,这是一种重新构想的 ISA,在所有 x86 CPU 体系结构和内核类型中实现了 AVX-512 指令的标准化。 然而,Intel 在第 12 代酷睿处理器及其后续型号的固件级别上禁用了AVX-512 支持,从而有效地将 SIMD ISA 从其消费类芯片中移除,这在业界掀起了轩然大波。

查看评论
created by ceallan