GPU上修正贝塞尔函数对数的精确计算
分布式、并行与集群计算
2024-09-16 v1
摘要
贝塞尔函数在科学计算中至关重要,应用于机器学习、蛋白质结构建模和机器人等领域。然而,当前可用的程序库缺乏精度或在某些输入范围内失效,例如当阶数 很大时,且针对GPU的实现有限。我们解决了当前数值实现的精度限制,同时大幅提升了运行速度。我们提出了两种新算法,通过对数尺度计算中间值来计算第一类和第二类修正贝塞尔函数的对数。我们的算法稳健,从不会出现下溢或上溢问题,同时相对误差达到机器精度量级,即使在现有库失效的输入下也是如此。在C++/CUDA中,与测试的输入范围和第三方库相比,我们的算法在GPU上的中位数和最大加速比分别为45倍和6150倍,在CPU上分别为17倍和3403倍。与SciPy相比,在测试的输入上,算法在GPU上的中位数和最大加速比分别为77倍和300倍,在CPU上分别为35倍和98倍。稳健求解的能力和低相对误差使我们能够将von Mises-Fisher (vMF) 分布拟合到高维神经网络特征。例如,这与度量学习中的不确定性量化相关。我们通过使用预训练ResNet50的卷积层处理CIFAR10训练图像来获取图像特征数据。我们使用算法成功地将vMF分布拟合到2048维、8192维和32768维的图像特征数据。我们的方法提供了快速且准确的结果,而SciPy和mpmath中的现有实现则无法成功拟合。我们的方法易于在GPU上实现,并随本文提供了一个快速的开源实现。
引用
@article{arxiv.2409.08729,
title = {Accurate Computation of the Logarithm of Modified Bessel Functions on GPUs},
author = {Andreas Plesner and Hans Henrik Brandenborg Sørensen and Søren Hauberg},
journal= {arXiv preprint arXiv:2409.08729},
year = {2024}
}
备注
Accepted at ICS 2024