关键词:
张量运算
FPGA
设计空间探索
预测模型
自动优化
摘要:
在科学计算和深度学习领域中,大多数应用程序的核心部分是具有多重嵌套循环结构的张量运算。通用处理器难以满足此类运算对于算力的需求,目前学界和工业界主要使用GPU、ASIC以及FPGA对张量运算处理进行加速。其中FPGA因其高并行、低功耗以及硬件可编程特性,可适应不断变化的需求,具有巨大的应用潜力。
在以往基于FPGA的张量运算加速器设计工作中,大多根据经验针对特定运算进行手动设计。加速器复杂的硬件结构与设计空间导致了低设计效率,同时FPGA的工程实现难度与设计验证周期也给应用的优化带来了困难,难以确定特定张量运算在指定FPGA平台上的合理实现方式。
为减轻手动优化的试错成本,提高设计效率,本文研究面向FPGA的张量运算自动优化方法。建立张量运算到硬件架构的映射关系,确定参数化的硬件设计空间。并基于预测模型评估设计以选择合理的设计参数。主要工作如下:
(1)确定张量运算的统一硬件实现方法,形成参数化的硬件设计空间。首先,对张量运算进行统一抽象表示,以定量描述张量运算信息,包括嵌套循环结构、张量的内存访问模式等。其次,结合张量运算信息分析各种循环优化策略对硬件架构组织以及数据流动方式的影响。最后,将张量运算的计算操作与访存操作分离,确定通用的硬件加速模板形式,形成统一的硬件设计参数空间。
(2)建立资源及性能预测模型,并应用差分进化算法执行搜索过程。在资源预测模型建立阶段,根据主要硬件参数信息建立线性关系估计片上逻辑资源占用,结合BRAM与LUTRAM的使用估计片上存储资源占用。在性能预测模型建立阶段,设计内存读写访问基准以准确建模访存延时,分析循环依赖关系计算PE阵列执行延时,最后结合乒乓缓冲的使用得到总体延时。在设计空间探索阶段,本文对硬件设计空间进行编码,生成规则的参数空间。针对高维离散的参数空间,设计差分进化算法执行搜索,在满足资源约束的条件下追求最佳性能。
本文基于AX7020,KV260两种硬件平台,对多种类型的张量运算进行测试,以验证本文的自动优化方法。实验表明,结合预测模型与差分进化算法,可快速完成设计空间探索,搜索到的配置也可在目标平台上成功实现。对于DSP,BRAM,LUTRAM资源的预测误差最大不超过20%,达到目标时钟频率时,运行延时预测误差不超过15%。并且自动优化后的结果有良好的性能表现,以矩阵乘法为例,在AX7020与KV260平台上分别达到了9.8GFLOPs与52.1GFLOPs的32位浮点运算性能,以及45.3GOPs与174.6GOPs的16位定点运算性能,计算资源效率最高可达90%。