Week 14 Lesson 1
Week 14课程的材料是关于ML的硬件架构的,作为课程材料的论文也是非常的牛,作者都是来自于Stanford大学的教授。
课程材料的内容总结起来就是实现了一种针对ML优化的编程语言,该语言抽象了ML计算的硬件实现,就是说用这个语言编写的ML代码可以方便地利用ML的硬件加速器。
做这样一个语言的出发点是基于FPGA的ML加速器如果采用HDL编程的话对软件人员非常不友好,因为HDL就不是从算法的角度描述问题的。作者设计了一种针对ML的新的领域特定语言Domain Specified Language,自己设计了编译器可以将基于这种语言的代码编译成Chisel,然后Chisel可以编译成基于HDL的FPGA设计。
ML的优化主要是针对控制循环的优化,例如一个For循环的矩阵乘法可以直接利用硬件实现,但是要解决参数的传递,硬件矩阵乘法器的软件抽象,编程接口以及如何通过软件指定硬件实现的参数等。
ML的第二个优化是内存的设计,CPU只有寄存器和内存,Cache也算吧,而ML的硬件加速可以设计多种内存,软件可以指定代码使用哪种内存,并控制数据在不同类型的内存间的拷贝。
ML的第三个优化是关于接口的,硬件模块和软件之间的接口,具体设计类似FPGA的HLS。
作者牛就牛在实现了这个语言的定义,编译器的开发,拿常用的ML算法做了对比,然后把结果摆出来了。
结论:
本文设计了用于在可重构架构上设计ML应用程序加速器的语言。Spatial包括用于控制、内存和设计调优的特定于硬件的抽象,这有助于在高效加速器设计和性能驱动加速器设计之间提供平衡。我们已经证明,Spatial可以从单一源针对一系列可重构架构,并可以实现比SDAccel平均2.9倍的加速,而代码减少42%。Spatial语言和编译器是斯坦福大学一个正在进行的开源项目。
牛