Skip to main content
QUICK REVIEW

[论文解读] Computing the Mertens function on a GPU

Eugene Kuznetsov|arXiv (Cornell University)|Jul 31, 2011
Neural Networks and Applications参考文献 2被引用 7
一句话总结

本文提出了一种基于GPU加速的算法,以 $ O(x^{2/3+\theta}) $ 时间复杂度计算梅尔滕斯函数 $ M(x) $,利用递归求和恒等式与并行数组更新。报告了在 $ x \approx 1.161 \times 10^{19} $ 处取得的新极值 $ M(x)/x^{1/2} = -0.585768 $,并将搜索范围扩展至 $ \exp(10^{15}) $,未发现梅尔滕斯猜想的反例。

ABSTRACT

A GPU implementation of an algorithm to compute the Mertens function in O(x2/3+{\ko}) time is discussed. Results for x up to $10^{22}$, and a new extreme value for $M(x)/x^{1/2}$, -0.585768 ($M(x) \approx -1.996 \ast 10^9$ at $x \approx 1.161 \ast 10^{19}$), are reported.An approximate algorithm is used to examine values of M(x) for x up to $\exp{(10^{15})}$.

研究动机与目标

  • 使用GPU并行计算加速梅尔滕斯函数 $ M(x) = \sum_{n=1}^x \mu(n) $ 的计算,其中 $ \mu(n) $ 为莫比乌斯函数。
  • 将 $ M(x) $ 的计算范围扩展至远超以往的极限,特别是用于检验梅尔滕斯猜想。
  • 开发一种可扩展的算法,通过利用求和恒等式中的递归结构,同时计算多个 $ x $ 值的 $ M(x) $。
  • 解决在 $ x \gg \exp(10^{10}) $ 时对 $ M(x) $ 进行近似分析所必需的高精度三角函数计算中的数值精度问题。

提出的方法

  • 使用恒等式 $ M(n) = 1 - \sum_{x=2}^n M(\lfloor n/x \rfloor) $,通过按 $ \lfloor n/x \rfloor $ 的值对项进行分组,将不同项的数量减少至 $ O(\sqrt{n}) $。
  • 采用两阶段方法:(1) 通过CPU基于筛法计算 $ y \leq u $ 时的 $ M(y) $,(2) 使用GPU并行更新计算 $ x > 1 $ 时的 $ M(\lfloor n/x \rfloor) $,其中 $ u = O(n^{2/3+\theta}) $。
  • 对部分素数乘积使用对数近似,以8位整数存储,减少内存带宽并提高筛法过程中的缓存效率。
  • 利用位操作标记平方因子数(通过符号位是否置位),并从累积对数素数乘积的符号和大小中计算 $ \mu(y) $。
  • 对大 $ n $ 采用分块处理,每一块更新高精度常数表,以在大 $ x $ 值下保持余弦函数计算的精度。
  • 为每个块使用偏移参考表 $ b_i' = (b_i + z_i x_0) \mod 2\pi $,以在近似分析中使用的三角函数项中保持精度。

实验结果

研究问题

  • RQ1能否利用GPU并行计算高效地大规模计算梅尔滕斯函数?
  • RQ2目前已知的 $ |M(x)/x^{1/2}| $ 的最大值是多少?是否超过了梅尔滕斯猜想所提出的界限?
  • RQ3该算法能否在保持数值精度的前提下扩展至 $ x \approx \exp(10^{15}) $?
  • RQ4在计算范围内是否存在梅尔滕斯猜想 $ |M(n)| < n^{1/2} $ 的反例?

主要发现

  • 该算法实现了 $ O(x^{2/3+\theta}) $ 的时间复杂度,并成功计算了 $ x $ 高达 $ 10^{22} $ 时的 $ M(x) $。
  • 在 $ x \approx 1.161 \times 10^{19} $ 处发现新的极值 $ M(x)/x^{1/2} = -0.585768 $,此时 $ M(x) \approx -1.996 \times 10^9 $。
  • 在 $ \exp(10^{15}) $ 范围内未发现梅尔滕斯猜想的反例,将此前的搜索范围扩展了两个数量级。
  • 观测到的 $ |q_{10^6}(x)| $($ M(x)/x^{1/2} $ 的代理变量)的最大值为 $ 0.95652 $,出现在 $ x \approx \exp(5.0586 \times 10^{14}) $ 处。
  • $ q_{10^6}(x) $ 极值的分布是对称的,未发现大正负值之间存在符号不对称的证据。
  • 高精度的分块常数更新使余弦函数计算在 $ \exp(10^{15}) $ 范围内保持准确,有效缓解了GPU单精度浮点数精度损失的问题。

更好的研究,从现在开始

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

无需绑定信用卡

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