异构计算与HLS释疑
1赞上周六和周日,应华中地区EDA学会邀请赴湖北恩施的湖北民族大学给大家做了一次FPGA异构计算方面的报告。到场的有来自湖北、湖南、江西、河南四省的高校老师。同时Altera公司的高级工程师王欣也到场做有关Intel收购Altera FPGA应用前景的报告。期间很多老师踊跃发言提问和讨论,提出了很多建设性的问题。周六下午另有部分老师介绍教学和科研经验。
总的说来这次交流还是受益匪浅,除了再次宣传了FPGA异构计算的相关概念之外,还从王工了解了很多关于Altera下一步的计划并一起探讨了HLS和OpenCL的分工。同时还很高兴的看到了新一代的EDA/FPGA领域的教师正在逐步崛起。相比于老一代的“半路出家”,他们从一开始就接受了更为正规和完整的EDA/FPGA教育。他们不会把综合叫“编译”,他们知道硬件描述语言最终还是要和硬件电路对应起来,他们清楚在课堂上讲那些无聊的语法是一件低效的事情。这一批老师逐渐成长并正在取代老一代人,会让中国的EDA/FPGA教育水平提升一个档次。但是,老一辈的人毕竟还在那里,里面太多学不动也不想学的家伙。但这次去开会,却看到了几位年龄很大但一直保持着技术敏感和学习兴趣的老人。华中地区的EDA研究会的理事长,武汉大学赵茂泰老先生就是这样一位老专家。此次也是赵老师再三要求我一定要到恩施去讲FPGA异构计算才促成了我此次恩施之行。
闲话少叙,言归正传!下面把大家问到的几个经典问题总结一下:
1、随着HLS和OpenCL在FPGA开发领域的推广,是否意味着传统的基于HDL语言的开发方式日渐式微甚至很快会被取代?
答:简便易用的东西总会带来不必要的浪费而使得效率不能最大化的被发挥。HDL语言在精细化开发上肯定是有优势的。例如开发一些一次开发工作量很大但是后续可以被重复使用的IP-Core或者关键设备时HDL是一定有优势的。比如华为在很大时候要求把FPGA的资源榨干到80%甚至90%以上。在未来很长一段时间内,HDL依然是不二选择。
2、需要给学生讲解OpenCL吗?大概需要多少课时?
答:不需要。其实OpenCL可以看做是按某种固定的格式C++编程。在这个知识大爆发的时代,要做一名合格的工程师,最重要的能力是快速学习能力。学校更多的是应该给学生打牢基础,讲清概念,明确知识体系。OpenCL这种语言(编程方式),我们最开始接触的一个同学大概用了不到2个月的时间学会的。他的基本背景是,通信与信息系统研二下学期学生,之前已经很多年没有碰过C了,没有学过C++。但是他之前做过几个SoC开发的项目,对Verilog和FPGA硬件结构都比较熟悉。那时候的参考资料还不多,他基本上是一手一脚从Altera的文档和白皮书做起来的,从安装软件做起。因此他成为了我们这本书的第二作者,在这个过程中他是做出了巨大的贡献的。相比于OpenCL,我觉得FPGA的原理和架构、编程的思维方式、计算机系统结构与组成、信息论这些才是真应该给学生好好讲清楚的。
3、HLS和OpenCL之间是什么关系?是否可以相互替代?
答:HLS和OpenCL是不同的层次。HLS主要用于模块级的算法快速实现,而OpenCL则是完整的编程模型。HLS实现模块级算法以后,可以支持被集成到片上系统中,而目前Qsys也确实有对IP集成支持力度很好。OpenCL则只能在既有框架下,按照编程模式完成完整的系统设计。喜欢OpenCL的开发者多半是系统设计开发者,不需要去关注太多底层的,直接按这个模式写完就得到一个可以高效运行的系统。但是坏处是设计者对于底层几乎没有什么干预能力,只能使用有限的优化手段和优化方式来影响最终结果。(不够我个人观点是,要是真像去影响底层,花点时间学学HDL不好吗?实在不行就招个人嘛……也花不了几个钱。)
4、OpenCL往前发展是否可以到自动的去划分\分配任务的阶段?
答:高层综合的概念已经推了多年,但到OpenCL被引入以后才真正看到了以后大规模应用的希望。其原因正是因为OpenCL的一套编程规则给了程序员去定义显式并行和host-device划分的任务分配机制。而这套机制在很大程度上解决了如何用C/C++如何来描述并行计算结构的问题。所以在可以预见的未来,还看不到这方面能有突破性的进展。毕竟机器的智能在很多方面还是还比不上人。未来这方面的技术进展,估计还得靠人工智能的进一步发展。
5、随着开发的层次越来越高,电子电路方面的知识还有没有必要教?
答:这个问题其实很难回答。这取决于不同专业的定位。例如微电子技术与工程、集成电路设计这类专业很显然应该是继续强化而不是弱化电子电路方面的知识。而类似于像信息工程这样的专业,如果主要定位于信号与信息处理,电子电路方面的内容适当的合并和简化是可以考虑的。(但实际上“信息工程”这个专业在全国各个高校开设出来的情况是千差万别的,基本属于“一个名称,各自表述”的状态。)至于电子信息工程这个专业,那就更是很难建议了。不过从我个人的观点来说,大家需要认清一点是:信息处理是根本,电子电路是手段。手段可以变但根本还是不太容易被动摇的。
6、Altera公司下一步的发展是什么,会有什么新的技术出来?
答:这个话题可能太大了,而且属于高层决策不太可能很快就公开的。但是又几个技术点大家可以关注。首先就是加速技术。Intel收购了Altera以后是为了什么?很明显是需要Altera来增强一些技术点。FPGA对于一个做处理器来说最明显的应用应该就是加速了。其次就是SoC技术持续发展。未来预计Altera FPGA和处理器的关系应该是这样的:MAX10及其后续产品主要考虑嵌入Nios软核,面向工控市场;Cyclone 和Arria系列嵌入ARM处理器,面向高端嵌入式设备应用;而Stratix 系列应该会嵌入Intel处理器,主攻服务器市场。在开发工具方面,在持续改进FPGA硬件本身的同时,完成HLS和OpenCL的融合,建立适用于不同用户的开发环境和方法是改进的重要方向。
7.为什么最新版的Quartus II对一些老器件如Cyclone II 和III都不支持了?这样对用户很不方便,是不是有强迫大家升级的嫌疑?
答:这是因为FPGA的体系结构在不断的演进,带来了布局布线算法的不断革新。对于不同的器件架构,实际上对应的布局布线算法是完全不同的。如果保留对所有老旧架构器件的支持,一方面软件会越来越大,另外一方面运行速度也会有一定影响。抛弃对老旧架构FPGA的支持在很大程度上可能是无奈之举。也许以后可以把核心代码改写成OpenCL并用FPGA来加速综合(笑话)。
以上就是此次恩施之行总结的几个经典问题,希望对大家有所帮助。