We use cookies to improve your experience with our site.

基于ARMv8处理器的向量超越函数量化评估

A Quantitative Evaluation of Vector Transcendental Functions on ARMv8-Based Processors

  • 摘要:
    研究背景 超越函数在科学计算、工程计算、机器学习、数学建模等领域使用广泛,其依赖复杂的软件实现计算函数近似值,一次调用通常需要数十至数百拍,是浮点计算中最耗时的一类函数。随着现代处理器SIMD单元宽度的增加以及SIMD指令集功能的丰富,开发向量超越函数成为提高超越函数性能的一种可行方法。当前,工业级和学术界已实现若干向量数学库,但这些向量数学库的性能和精度尚未得到全面研究。本文指出对向量超越函数进行详细评估至关重要:首先,可以帮助数学库开发人员更好的理解向量超越函数在处理器上的性能表现,从而研发出更适合向量化的优化算法;第二,可以帮助硬件架构师更好的定制加速超越函数的SIMD指令;第三,可以帮助应用开发人员更好的匹配满足应用性能和精度需求的数学库。
    目的 本文旨在对向量超越函数进行详细评估,以推动高性能向量数学库的发展。本文拟解决的关键科学问题是:(1)向量超越函数的性能影响因子有哪些,如何影响性能?(2)向量超越函数的精度以及精度和性能之间的关系具体如何?(3)向量超越函数库是否可以替代标量超越函数库?
    方法 为了解决这些关键科学问题,本文提出了一种适用于向量超越函数的分段量化评估方法。本文首先设计了一套微基准测试程序,用以分析向量浮点计算的理论加速比上限和下限。由于标量和向量超越函数对操作数的分段不同,并且不同操作数分支采用的实现不同、计算量不同,因此本文提出了一种可以覆盖所有操作数分支的分段量化评估方法,从而确保评估的全面性。在此基础上,本文提出了一系列用以评估向量超越函数性能和精度的量化指标,包括每操作数计算周期数,纵向加速比、向量化效率、横向加速比和最大ULP误差。根据本文所提分段量化评估方法,对每一个向量超越函数的每一个分支进行测试、量化和分析,从而挖掘向量超越函数的性能影响因子和精度特征,并对向量数学库和标量数学库进行全方位对比。
    结果 本文选取了两个基于SIMD内建函数构建的向量数学库,并在两款ARMv8兼容处理器上进行全面评估。通过测量向量超越函数的纵向加速比和向量化效率,我们发现向量化(使用向量实现、使用向量浮点舍入指令、使用向量浮点乘加指令)和算法优化是提升向量超越函数性能的主要因素,我们进一步量化了每个因素对向量超越函数性能的贡献。通过测量横向加速比,我们发现在大多数操作数分支向量超越函数的性能优于标量超越函数,也存在一些分支因向量化导致冗余计算,而使得向量超越函数性能不如标量实现。通过量化最大ULP误差,我们发现向量超越函数的精度能够满足其设计需求,并分析了不同向量数学库实现对精度和性能的取舍。
    结论 本文通过量化方法找出向量超越函数的两个主要性能影响因子是向量化和算法优化。指出基于SIMD内建函数构建的向量数学库在大多数情况下可以替带标量数学库,但不是所有情况。向量数学库的实现还不够成熟,需要进一步优化。可行的优化方向包括选择并向量化某些标量数学库分支,以及在一个数学库中提供具有不同性能和精度级别的超越函数实现。本文所提分段量化评估方法可以应用于其他类型的处理器和向量数学库。

     

    Abstract: Transcendental functions are important functions in various high performance computing applications. Because these functions are time-consuming and the vector units on modern processors become wider and more scalable, there is an increasing demand for developing and using vector transcendental functions in such performance-hungry applications. However, the performance of vector transcendental functions as well as their accuracy remain largely unexplored. To address this issue, we perform a comprehensive evaluation of two Single Instruction Multiple Data (SIMD) intrinsics based vector math libraries on two ARMv8 compatible processors. We first design dedicated microbenchmarks that help us understand the performance behavior of vector transcendental functions. Then, we propose a piecewise, quantitative evaluation method with a set of meaningful metrics to quantify their performance and accuracy. By analyzing the experimental results, we find that vector transcendental functions achieve good performance speedups thanks to the vectorization and algorithm optimization. Moreover, vector math libraries can replace scalar math libraries in many cases because of improved performance and satisfactory accuracy. Despite this, the implementations of vector math libraries are still immature, which means further optimization is needed, and our evaluation reveals feasible optimization solutions for future vector math libraries.

     

/

返回文章
返回