[论文解读] Fast polynomial evaluation and composition
本文在Sage的fast_polynomial库中提出了一种新的平衡分治多项式求值方案,通过最小化惰性高度并消除在2的幂次处的性能瓶颈,优化了求值性能。该方案结合了模板化通用编程、基于OpenMP的多线程处理以及预计算的快速幂运算,在大整数求值方面实现了与Flint等顶尖库相当的性能表现。
The library \\emph{fast\\_polynomial} for Sage compiles multivariate polynomials for subsequent fast evaluation. Several evaluation schemes are handled, such as H\\"orner, divide and conquer and new ones can be added easily. Notably, a new scheme is introduced that improves the classical divide and conquer scheme when the number of terms is not a pure power of two. Natively, the library handles polynomials over gmp big integers, boost intervals, python numeric types. And any type that supports addition and multiplication can extend the library thanks to the template design. Finally, the code is parallelized for the divide and conquer schemes, and memory allocation is localized and optimized for the different evaluation schemes. This extended abstract presents the concepts behind the \\emph{fast\\_polynomial} library. The sage package can be downloaded at \\url{http://trac.sagemath.org/sage_trac/ticket/13358}.
研究动机与目标
- 解决经典分治多项式求值在2的幂次处出现的性能下降问题。
- 通过单一函数方案抽象,统一并扩展现有的求值方案(如Horner和Estrin方案)。
- 通过引入求值树中惰性高度的概念,最小化求值过程中的内存占用。
- 通过模板特化实现对任意数值类型的高效、通用且可并行化的多项式求值。
- 提供一个高性能、可扩展的多项式求值库,性能可与低层级优化库(如Flint)相媲美。
提出的方法
- 求值树结构通过函数方案 f(k) = ⌊k/2⌋ 递归分解多项式,定义了平衡分治策略。
- 惰性高度递归计算:仅当节点拥有两个或更多子节点时才增加,确保内存使用为对数级别。
- 库使用C++模板支持任意支持加法和乘法的数值类型,实现可扩展性。
- 通过OpenMP指令应用多线程,对分治方案中的子树求值进行并行化。
- 使用快速幂运算预计算 x^d,以减少求值过程中的重复乘法。
- 函数方案抽象允许无缝组合不同策略,例如在低次子多项式中切换至Horner方案。
实验结果
研究问题
- RQ1新的分治求值方案能否消除经典Estrin风格方案在2的幂次处出现的性能惩罚?
- RQ2如何优化求值树结构,以最小化多项式求值过程中的临时存储和内存分配?
- RQ3通用模板化C++库在多大程度上可实现与Flint等手工优化的低层库相当的性能?
- RQ4通过OpenMP进行并行化能否显著提升多核环境下大多项式的求值速度?
- RQ5与传统树高相比,惰性高度在内存效率和计算开销方面表现如何?
主要发现
- 平衡分治方案消除了经典Estrin方案在2的幂次处出现的求值时间阶梯效应。
- 所有方案中最大的惰性高度在项数上为对数级别,确保临时存储为 O(log n)。
- Horner方案的惰性高度为0,而Direct、Estrin和Balanced方案的最大惰性高度均为1。
- 该库的性能在大整数多项式求值方面与最先进的Flint库持平或更优,尤其在双线程的平衡方案中表现突出。
- 通过快速幂运算预计算幂次可减少重复乘法,尤其在Estrin和Balanced方案中,当不同次数呈对数级别时效果显著。
- 模板化设计使得对新数值类型(包括GMP整数、Boost区间和Python数值类型)的无缝扩展成为可能。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。