[论文解读] Performance of SSE and AVX Instruction Sets
本文通过手动SIMD编程,评估了SSE和AVX指令集在优化格点规范理论模拟中的性能表现。通过数据打包、数据重用和异步预取技术,作者证明AVX1相比SSE4.2实现了高达3倍的性能提升,相较于原始C++代码更是实现了10倍以上的加速,显著提升了线性代数密集型物理工作负载的计算效率。
SSE (streaming SIMD extensions) and AVX (advanced vector extensions) are SIMD (single instruction multiple data streams) instruction sets supported by recent CPUs manufactured in Intel and AMD. This SIMD programming allows parallel processing by multiple cores in a single CPU. Basic arithmetic and data transfer operations such as sum, multiplication and square root can be processed simultaneously. Although popular compilers such as GNU compilers and Intel compilers provide automatic SIMD optimization options, one can obtain better performance by a manual SIMD programming with proper optimization: data packing, data reuse and asynchronous data transfer. In particular, linear algebraic operations of vectors and matrices can be easily optimized by the SIMD programming. Typical calculations in lattice gauge theory are composed of linear algebraic operations of gauge link matrices and fermion vectors, and so can adopt the manual SIMD programming to improve the performance.
研究动机与目标
- 评估SSE和AVX指令集在加速格点规范理论模拟中的性能增益。
- 研究通过手动SIMD编程实现的数据打包、重用和异步数据传输如何提升计算效率。
- 在不同优化级别和工作负载下,对比原始C++、SSE4.2和AVX1的性能表现。
- 量化算术强度和内存访问模式对SIMD性能的影响。
提出的方法
- 采用三种方法实现SIMD操作:内联汇编、内建函数和向量类,其中内联汇编用于实现最高性能。
- 通过数据打包技术,将多个单精度浮点数(4个单精度或8个单精度)加载到XMM/YMM寄存器中,实现并行处理。
- 通过将中间结果保留在寄存器中,实现数据重用,从而最小化冗余内存传输。
- 使用预取指令(如`prefetch1`)实现计算与数据传输的重叠,降低内存延迟。
- 通过测量重复求和与数据复制操作在C++、SSE4.2和AVX1中的CPU时钟周期数来评估性能。
- 将算术强度(AI)作为关键指标,用于关联计算吞吐量与内存带宽。
实验结果
研究问题
- RQ1SSE和AVX指令集在格点规范理论数值模拟中的性能表现如何比较?
- RQ2通过手动SIMD编程实现的数据打包和重用,能在多大程度上超越自动优化的C++代码?
- RQ3通过预取实现的异步数据传输,在减少SIMD工作负载的内存瓶颈方面效果如何?
- RQ4算术强度对AVX与SSE性能扩展的影响是什么?
- RQ5向量类抽象能否在高性能计算中达到内建函数或内联汇编的性能水平?
主要发现
- AVX1在执行10⁹次求和操作时,性能为26.9 × 10⁴个CPU时钟周期,而未优化的原始C++代码为732 × 10⁴个时钟周期,实现了27倍的加速。
- 在最大优化下,SSE4.2将所需时钟周期减少至78.8 × 10⁴,仍比原始C++代码快9.3倍。
- 对于相同的求和工作负载,AVX1的性能约为SSE4.2的3倍,证明了256位YMM寄存器相比128位XMM寄存器的优势。
- 预取技术使AVX1性能提升5%,SSE4.2提升1.5%,表明由于操作系统和系统级内存管理的干扰,其效果有限。
- 数据重用显著降低了内存带宽压力,SIMD方法通过避免重复加载相同数据,提高了算术强度。
- 本研究证实,即使在最高优化级别下,手动SIMD优化(尤其是使用内联汇编)仍能显著超越编译器自动优化,实现更高的性能。
更好的研究,从现在开始
从论文设计到论文写作,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。