Skip to main content
QUICK REVIEW

[论文解读] Multiplying boolean Polynomials with Frobenius Partitions in Additive Fast Fourier Transform

Ming-Syan Chen⋆, Chen-Mou Cheng|arXiv (Cornell University)|Mar 30, 2018
Coding theory and cryptography参考文献 18被引用 8
一句话总结

本文提出了一种新型算法,利用弗罗贝尼乌斯分拆(Frobenius partitions)在加法快速傅里叶变换(FFT)框架内高效计算高次布尔多项式乘法。通过利用弗罗贝尼乌斯映射下的高阶元素,并结合SIMD指令与内存访问模式的优化,作者实现了目前已知最快的软件实现,在实际基准测试中相较先前方法提速两倍。

ABSTRACT

We show a new algorithm and its implementation for multiplying bit-polynomials of large degrees. The algorithm is based on evaluating polynomials at a specific set comprising a natural set for evaluation with additive FFT and a high order element under Frobenius map of $\mathbb{F}_{2}$. With the high order element, we can derive more values of the polynomials under Frobenius map. Besides, we also adapt the additive FFT to efficiently evaluate polynomials at the set with an encoding process. For the implementation, we reorder the computations in the additive FFT for reducing the number of memory writes and hiding the latency for reads. The algebraic operations, including field multiplication, bit-matrix transpose, and bit-matrix multiplication, are implemented with efficient SIMD instructions. As a result, we effect a software of best known efficiency, shown in our experiments.

研究动机与目标

  • 开发一种针对 $\mathbb{F}_2[x]$ 中高次布尔多项式乘法的高性能软件实现。
  • 通过利用弗罗贝尼乌斯分拆与加法FFT结构,降低多项式乘法的计算开销。
  • 通过优化内存访问并利用SIMD指令,提升域运算、位矩阵转置与乘法的效率。
  • 在保持最优渐近时间复杂度的前提下,实现比现有实现更优的运行时效率。

提出的方法

  • 该算法使用加法FFT在弗罗贝尼乌斯分拆 $\Sigma = v_{l+m/2} + V_l$ 处对多项式进行求值,该分拆专为 $\mathbb{F}_{2^m}$ 中的高效求值而设计。
  • 提出一种新颖的编码过程 'Encode',通过将 $l_m$ 层运算表示为矩阵乘法并截断冗余结果,加速蝴蝶操作。
  • 通过重排加法FFT中的计算顺序,最小化内存写入次数并隐藏内存延迟。
  • 利用 PCLMULQDQ 指令集加速域乘法,通过SIMD指令优化位矩阵运算。
  • 利用 $\mathbb{F}_{2^m}$ 的子域结构,降低域乘法的计算成本。
  • 通过弗罗贝尼乌斯映射生成高阶元素,从而在变换中实现更高效的求值点。

实验结果

研究问题

  • RQ1弗罗贝尼乌斯分拆能否有效提升布尔多项式乘法中加法FFT的效率?
  • RQ2如何通过内存访问重排与SIMD并行化,在实际中优化加法FFT?
  • RQ3结合弗罗贝尼乌斯分拆、高效编码与域算术,可实现多大的性能提升?
  • RQ4与基于Kronecker替换的方法相比,该方法在运行时间与可扩展性方面表现如何?

主要发现

  • 在 $\mathbb{F}_{2^{64}}$ 中的实现优于所有已知的先前实现,在运行时间上相较基于Kronecker替换的方法提速两倍。
  • 尽管 $\mathbb{F}_{2^{128}}$ 支持更大的多项式度数,但 $\mathbb{F}_{2^{64}}$ 版本由于域乘法更高效而运行更快。
  • 实验结果表明,基于加法FFT的算法在双对数图中表现出近乎线性缩放,而乘法FFT因群大小不够理想而出现轻微偏差。
  • 蝴蝶组件虽为 $O(n)$,但在实际运行中占据主导时间,表明其为关键性能瓶颈。
  • BasisCvt 组件的运行时间增长最快,其次为 Butterfly,再为 Encode,与它们的理论时间复杂度水平一致。
  • 该实现达到了目前实践中最优的效率,实测运行时间显著低于先前的顶尖库(如 gf2x 与 bitpolymul2)。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。