使用Clad进行GPU加速的自动微分
摘要:自动微分(AD)对科学和工业至关重要。它是通过计算机程序来评估函数导数的工具。AD应用领域涵盖了从机器学习到机器人技术再到高能物理学的范围。与数值方法相比,使用AD计算梯度保证更加精确,而且在算术运算上与原始函数相比具有较低的常数因子。此外,AD应用于领域问题通常受到计算要求的限制。它们通常受到高维参数的计算要求的限制,因此可以从在图形处理器单元(GPUs)上的并行实现中受益。Clad旨在为C/C++和CUDA提供微分分析,并作为编译器扩展和ROOT中的编译器辅助AD工具提供。此外,Clad可以作为Clang编译器的插件扩展,作为Cling交互解释器的插件扩展,以及基于xeus-cling的Jupyter内核扩展。我们展示了在Clad上使用GPU进行并行梯度计算的优势。我们解释了如何通过扩展Clad来支持CUDA,带来了新的优化层和比例加速。可以自动在GPU上执行良好行为的C++函数的梯度计算。该库可以轻松集成到现有框架中或进行交互式使用。此外,我们展示了所实现的应用性能改进,包括ROOT直方图拟合中的(~10倍)和通过转移到GPU的相应性能提升。
作者:Ioana Ifrim, Vassil Vassilev and David J Lange
论文ID:2203.06139
分类:Mathematical Software
分类简称:cs.MS
提交时间:2023-03-01