高效低精度内核合成技术解析
1. 引言
自动化程序合成有望简化和加速常见编程任务,程序员只需编写计算规范,合成工具就能自动生成实现,且正确性有保证。当前许多合成技术会生成针对特定指标优化的程序,如枚举技术常选择满足规范的最小规模程序,或使用静态成本模型剔除低效程序。
引入近似值是提高程序效率的另一种方法。很多应用能容忍一定程度的误差或噪声,不必精确计算结果。但近似值会带来准确性和效率的权衡,确定合适的近似值需要验证程序的整体准确性,且可能的近似值空间巨大,手动优化程序既繁琐又容易出错。
目前大多数合成技术只考虑精确规范,不适合生成有误差范围的程序,且多数技术未明确针对程序效率进行优化。少数生成近似程序的方法通过少量样本输入测试来检查正确性,无法保证准确性。
为此,提出了一种全自动合成方法,用于数值内核领域。该方法对算术运算和基本函数进行近似处理,并提供可靠的端到端准确性保证。用户指定理想的实值程序和最大误差范围,该技术会生成具有基本函数多项式近似的高效有限精度实现。
数值内核涵盖了多个领域的广泛应用,如嵌入式控制、科学计算模拟和机器学习模型等。目前程序员通常使用库实现基本函数,但这些实现精度有限,严重限制了优化机会。此外,还针对定点算术实现,它在加速器(如 FPGA)上执行时,能在准确性和效率的权衡上提供高度灵活性,但会显著增加搜索空间,使代码合成更具挑战性。
2. 背景知识
- 定点算术 :浮点算术是在离散计算机上实现实数近似的常见选择,但浮点单元支持的精度有限,对于有限范围的应用,很多位未被使用,造成资源浪费。定点算术允许程序员使用纯整数算术进行
超级会员免费看
订阅专栏 解锁全文
589

被折叠的 条评论
为什么被折叠?



