Skip to main content
QUICK REVIEW

[论文解读] Toom-Cook Multiplication: Some Theoretical and Practical Aspects

M. J. Kronenburg|arXiv (Cornell University)|Feb 8, 2016
Cryptography and Residue Arithmetic参考文献 4被引用 5
一句话总结

本文对 Toom-Cook 乘法进行了理论与实践分析,强调其在多处理器环境中的高效性。推导了 B 方 Toom-Cook 乘法的复杂度,证明了包括偶-奇优化在内的插值方法,并实现了一个 32 位 C++/汇编版本,在 8 个线程下对 10⁸ 位小数的乘法,相比单线程 GMP FFT 乘法最高实现了 3.81 倍的加速。

ABSTRACT

Toom-Cook multiprecision multiplication is a well-known multiprecision multiplication method, which can make use of multiprocessor systems. In this paper the Toom-Cook complexity is derived, some explicit proofs of the Toom-Cook interpolation method are given, the even-odd method for interpolation is explained, and certain aspects of a 32-bit C++ and assembler implementation, which is in development, are discussed. A performance graph of this implementation is provided. The Toom-Cook method can also be used to multithread other types of multiplication, which is demonstrated for 32-bit GMP FFT multiplication.

研究动机与目标

  • 推导 B 方 Toom-Cook 乘法的理论时间复杂度,并分析其渐近时间复杂度。
  • 提供基于牛顿与拉格朗日公式的 Toom-Cook 插值方法的明确证明。
  • 解释并优化偶-奇插值技术,将计算开销降低两倍。
  • 展示如何将 Toom-Cook 用于多线程化非 Toom-Cook 乘法,特别是 GMP FFT 乘法。
  • 展示并评估一个 32 位 C++ 与汇编实现,在多核系统上的性能基准测试。

提出的方法

  • 推导 B 方 Toom-Cook 的时间复杂度为 $ T(N) = N^{ rac{/log(2B-1)}{/log(B)}} $,表明其具有次二次缩放特性。
  • 使用牛顿插值法,通过差商定义的递归系数 $ \alpha_k $ 重建乘积多项式。
  • 应用偶-奇方法将多项式拆分为偶部与奇部,将插值成本从 $ (2n)^2Y $ 降低至 $ 2n^2Y $。
  • 采用小的插值点 $ x_k = 0,1,2,4,...,2^{n-1} $,通过位移操作实现高效乘法。
  • 在顶层集成 Toom-Cook,以在多个处理器之间并行化独立的子乘法操作。
  • 在多线程框架中将 Toom-Cook 与 GMP FFT 乘法结合,每个线程执行基于 FFT 的乘法。

实验结果

研究问题

  • RQ1B 方 Toom-Cook 乘法的理论时间复杂度是什么?其随 B 值增加如何变化?
  • RQ2Toom-Cook 乘法中的多项式插值如何高效计算?有哪些优化可降低其成本?
  • RQ3Toom-Cook 在多线程化其他乘法算法(如 GMP FFT)方面能实现多大程度的应用?
  • RQ4在现代多核系统上,使用 32 位 C++/汇编实现可实现多大的实际性能提升?
  • RQ5偶-奇插值方法如何降低计算成本?其对并行化的影响如何?

主要发现

  • 在 10⁸ 位小数下,使用 8 个线程的 32 位 Toom-Cook 实现相比单线程 GMP FFT 乘法,实现了 3.81 倍的加速。
  • 在 10⁸ 位小数下,使用 GMP FFT 的多线程 Toom-Cook 将时间从 1 线程的 22.3 秒降低至 8 线程的 7.7 秒,实现 2.90 倍的改进。
  • 对于大输入,观测到的性能斜率为 1.265,接近 32 方 Toom-Cook 的理论复杂度 1.239。
  • 偶-奇插值方法将插值时间减少两倍,并支持对偶部与奇部分别独立并行处理。
  • 在无多线程时,内存使用量最高增加至输入大小的 6 倍;在多线程时,增加至输入大小的 $ 6 \cdot \text{nthr}/B $ 倍。
  • 该实现表明,使用 64 位系统及更高的 B 值(如 B=32)可进一步提升性能,尽管 32 位原型中使用了 B=16。

更好的研究,从现在开始

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

无需绑定信用卡

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