论文部分内容阅读
随着当今社会数字信息化的不断发展,人们对高效的计算系统的需求也在不断提高,所以在不同的领域开发高性能的产品成为当今时代发展的趋势。从最早的单核CPU串行运算,发展到如今的异构计算。OpenCL是针对异构平台所设计的标准程序语言,使用它可以构建高效的异构计算系统。2012年,Altera公司推出能在FPGA上开发OpenCL的SDK,它把FPGA硬件电路所固有的并行架构与OpenCL自身软件编程所固有的结构有效地结合起来。此时FPGA的应用转向了一个新的领域,高性能的异构计算以及海量的数据处理。而FPGA的使用对象也不再是传统的硬件工程师,很可能是以开发软件为本职工作的程序员。论文是基于SoC-FPGA平台来进行OpenCL的开发和研究,主要采用DE0-NanoSoC以及DE1-SoC开发板。通过对FPGA的OpenCL实现机制的详细解析,以及可执行OpenCL的两种不同的FPGA架构的深入分析,证明了使用FPGA来开发OpenCL有天然的优越性。SoC-FPGA平台中ARM硬核处理器与FPGA计算设备相当于在一个芯片上实现异构平台,加速效果更明显,二者之间是通过AXI总线进行数据交互。文中对OpenCL在So C-FPGA平台上无论是环境配置,还是实现方法等都做了具体地介绍,并对OpenCL的优化方式做了详尽的解释。为了验证这些优化方式的效果,论文设计选中并行度较高且算法较为简单的矢量加法运算与任何算法中都不可或缺的高阶矩阵乘法运算。通过分析其内部存在的并行性,并以此为根据来编写相应的主机程序以及内核代码,通过板上调试,完成算法的基本实现。然后首先通过访问存储优化的方式来对算法进行处理,尔后通过多流水线、向量化等方法对特定算法进行优化。通过获取相应的内核执行时间,ARM硬核执行时间以及吞吐率,最后对其进行归类分析比较加速效果。为了验证特定优化方法的局限性,设计实现了矩阵广义逆的OpenCL求解。根据具体实验结果,在FPGA平台上实现Open CL并行算法的性能要远高于单纯ARM硬核的串行计算,且通过相关优化策略之后,算法性能更是成倍的增加,不过这也是以消耗硬件资源为代价的,当片上资源受限的时候,需要找到合适的优化参数。实际上FPGA在不使用优化方法时,只生成最基本的运算单元,甚至谈不上并行。该异构系统主要依靠后期的编译优化指令复制电路,所以需要尽可能地使用更多的片上资源才能把FPGA的并行能力充分发挥出来。换句话说,要用OpenCL来开发FPGA,使用合理的编译优化方法才是关键。