GPU 上的任意精度整数

Cai*_*aio 7 bigint arbitrary-precision

我目前正在对大量数字(最多 10M 位)进行素性测试。

现在,我正在使用带有 GMP 库的 ac 程序。我使用 OpenMP 进行了一些并行化,并获得了不错的加速(4 核时为 3.5~)。问题是我没有足够的 CPU 核心来运行我的整个数据集。

我有一个 NVidia GPU,并且我试图找到 GMP 的替代方案,但适用于 GPU。它可以是 CUDA 或 OpenCL。

是否有可以在我的 GPU 上运行的任意精度库?如果有一种简单或更优雅的方法,我也愿意使用另一种编程语言。

Arc*_*Arc 8

似乎Julia 语言已经能够进行多精度算术并使用 GPU(请参阅此处结合这两者的简单示例),但您可能需要学习 Julia 并重写代码。

CUMP库旨在成为 CUDA 的 GMP 替代品,它试图通过提供类似于 GMP 的接口来更轻松地将 GMP 代码移植到 CUDA,例如用 1 替换变量mpf_...和函数cumpf_...make如果适合您的 CUDA,您可以使用一个演示。虽然没有文档或支持,但您必须仔细检查代码才能查看它是否有效。

LAAS-CNRS 人员提供的CAMPARY库也可能是一个尝试,但也没有文档。它比 CUMP被应用在更多的研究中,所以有一些机会。这里的答案对如何使用它进行了一些说明。

GRNS在 CUDA 兼容处理器上使用残数系统,它没有文档,但有一篇有趣的论文可用。另外,请参阅这个

XMP直接来自 NVIDIA 实验室,但似乎不完整,也没有文档。这里有一些信息,这里有一篇论文。

XMP 2.0似乎较新,但目前仅支持最大 32k 位的大小。

GPUMP看起来很有前途,但似乎无法下载,也许可以联系作者。

MPRES -BLAS是 CUDA 上线性代数的多精度库,并且当然具有基本算术代码。另外,论文在这里这里

我还没有测试过其中任何一个,所以请让我们知道其中任何一个是否工作正常。