当你阅读用高层语言描述的深度学习模型时,你会发现模型是有规律的。比如,卷积操作在 C 语言里就是一个六层的嵌套循环。此时我就可以针对这个循环开发一个 IP 核,确定如何进行流水线设计(pipelining),如何分配存储等,然后再将 IP 核用在 FPGA 上,进而让神经网络中的所有卷积层来共享 IP 核即可。
此时设计的优化要点是 IP 核的大小、是否需要多个 IP 核并行运算等。这是一个非常适用 HLS 的场景,因为 HLS 可以自动化地、快速地探索不同的解决方案。如果采用 RTL,则需要很多工程师,组成多个团队,每个团队根据工程师过去的设计经验着重探索一个方向,这是一个成本非常高的过程。