关键词:
可复现性
舍入误差
无误差变换
DGEMV
摘要:
在高性能计算中,求解大规模、大尺度、长时程和病态问题过程中舍入误差的累计都可能会使算法的最终数值结果失真。在不同的计算软硬件资源下,每次运行的结果可能不一致,而这些结果是开发者调试程序和正确性检查的重要依据,会对科研工作的顺利进行造成干扰,因此算法数值结果的可复现性变得至关重要。文中面向飞腾处理器,基于OpenBLAS软件框架,结合美国伯克利国家实验室的Demmel教授团队开发的ReproBLAS软件中提出的可复现的方法与Castado提出的多层分块技术,使用舍入误差分析和无误差变换等技术,设计出了多线程可复现DGEMV的算法。数值实验显示,所提算法实现了数值计算的可复现性,且输出结果与ReproBLAS相同,验证了所提算法的可靠性。同时,所提算法在相同的测试环境下运行速度至少是ReproBLAS实现算法运行速度的2倍。此外,还将所提算法与日本理化研究所Mukunoki提出的OzBLAS中的可复现DGEMV函数进行对比,同为单线程时该算法的运行速度至少是OzBLAS算法的20倍,在相同多线程数量情况下,该算法的运行速度至少是OzBLAS算法的9倍。理论分析和数值实验均表明,该改进算法比国际上现有的可复现数值算法性能更优。