【新智元】丛京生院士深度解读可定制计算的设计自动化:自动将代码转换成电路描述,解决开发人员最大难题( 五 )


【新智元】丛京生院士深度解读可定制计算的设计自动化:自动将代码转换成电路描述,解决开发人员最大难题
本文插图
实现上述步骤还是需要一些专业训练 。 我们现在提供了Merlin编译器来自动地按照这个流程进行计算加速优化 。 我在2014年成立了峰科计算来给业界提供这样的解决方案 。 我们希望Merlin编译器可以为CPU+FPGA的可定制计算提供更大的便利 。 Merlin编译器给用户提供了及其简单的pragma来进行优化操作 。 用户可以简单地指定哪里需要做流水线 , 哪里需要做并行 。 这样的操作极大地简化了HLS的难度 。 相比于HLS的设计, Merlin现在可以减少90%的pragma数量 , 达到相同的最优性能 。 这样利用C/C++做电路设计的难度就大大减小了 。
【新智元】丛京生院士深度解读可定制计算的设计自动化:自动将代码转换成电路描述,解决开发人员最大难题
本文插图
不过我们觉得这样还不够 。 利用Merlin设计时用户还是需要一些经验去指定哪里应该做流水线或者并行 。 有没有什么方法能够让机器自动找出最优解呢?我们现在正在基于Merlin结合人工智能算法进行各种各样的尝试 。 有一天我和我的学生说现在人工智能已经能打败最厉害的围棋选手了 , 也许我们的工作以后能打败最有经验的硬件设计师 。 这件事情比围棋的人工智能设计困难很多 。 因为围棋的规则是确定的 , 即使解空间很大但只要是确定规则 , 理论上人工智能就可以做的非常好 。 而电路设计没有特别定式可寻 , 所以难度相对比较大 。 我们在这个课题上已经提出了基于Merlin的解决方案[18] , 通过学习上一轮设计的性能和缺陷我们可以决定在下一轮中插入什么样的优化 。
【新智元】丛京生院士深度解读可定制计算的设计自动化:自动将代码转换成电路描述,解决开发人员最大难题
本文插图
这套流程已经在我的课上被测试过 。 我要求15个研究生首先自己设计HLS C/C++代码得到一个优化的数字识别电路 , 然后通过Merlin的这套搜索流程来设计相同的电路 。 结果区分非常明显:HLS C/C++设计达到的平均性能是18000个时钟周期 , 而使用Merlin设计的平均性能为 4000个时钟周期 , 4.5倍的提升 。 尽管有一位有几年HLS设计经验的学生仅利用HLS C/C++就得到了3000个时钟周期的最优设计 , 但可以看出来Merlin的自动设计水平已经非常接近优秀的硬件设计师了 。 峰科和UCLA也一起合作在亚马逊AWS平台上评估了很多工业界的测试案例 。 峰科负责提供Merlin的结果 , UCLA负责提供手动设计的结果 。 我们可以看见全自动的加速结果显著优于通用的CPU结果 , 而且非常接近手动设计的结果 。
【新智元】丛京生院士深度解读可定制计算的设计自动化:自动将代码转换成电路描述,解决开发人员最大难题
本文插图
最后 , 我想在可定制计算“民主化”的这条线上补充一下我们最新的科研成果 。 我和康奈尔大学的Zhiru Zhang教授一起开发了HeteroCL[19] 。 这是一个基于Python的硬件加速模型 , 这项工作为图形图像以及人工智能的高层语言提供了通往FPGA的桥梁 。 同时我们也利用了峰科的技术开发了HeteroHalide[21] 。 Halide语言是麻省理工学院专门为图像处理开发的语言 ,而这项工作专门为Halide语言通往FPGA提供了便利 。
【新智元】丛京生院士深度解读可定制计算的设计自动化:自动将代码转换成电路描述,解决开发人员最大难题
本文插图
【新智元】丛京生院士深度解读可定制计算的设计自动化:自动将代码转换成电路描述,解决开发人员最大难题
本文插图
可定制计算现在已经在各类共有私有云上大面积铺开了 。 现在我们的工作致力于消除可定制计算的编程壁垒使得更多的人能够实实在在利用起可定制计算 。 在这条路上我们已经做出了像Merlin编译器, HeteroCL, HeteroHalide等一系列的重大进展 , 所以我认为这条路的前途是光明的 。 我们也欢迎各位专家和学者一起投入到这个领域来 , 让更加简单智能的可定制计算更好更快地为所有人服务 。谢谢大家 。