论文部分内容阅读
随着大数据时代的到来,人们需要对大量的数据进行快速处理。传统的CPU并行计算已经不能满足对海量数据快速处理的要求,异构计算成为人们研究的热门方向。目前,基于GPU+CPU的异构计算已经深入到高性能计算的各个领域,它解决了CPU并行计算的计算能力不足的问题,但GPU的功耗非常大,无法应用到低功耗领域。基于FPGA+CPU的异构计算充分利用了FPGA高度并行性和低功耗的特点,很好地解决了处理速度低和功耗大的问题。基于FPGA+CPU的异构计算采用了面向OpenCL的开发方法,比使用Verilog等硬件描述语言(HDL)的FPGA开发方法有更短的开发周期、几乎相同的时序约束和性能。基于FPGA+CPU的异构计算具有高性能和低功耗的特点,这使其在自动驾驶、导航跟踪和智能机器人等高性能、低功耗领域具有非常广阔的应用前景。本文对图像处理中的分片双边滤波算法和导向滤波算法进行了FPGA+CPU异构加速。首先分析了算法中存在的可并行执行部分,并用C语言进行主机程序设计以及用OpenCL进行内核程序设计。然后对分片双边滤波算法内核进行数据分配优化,对导向滤波算法内核进行内核合并、添加降采样内核和内核向量化的优化。优化后的分片双边滤波算法内核和导向滤波算法内核对2K分辨率图像的处理速度分别达到了41.08ms和38.9ms。最后,对比了两种算法在CPU、GPU和FPGA上实现的效果和单位功耗计算出的像素数。实验结果显示,FPGA具有与CPU和GPU几乎相同的滤波效果。对于分片双边滤波算法,FPGA在单位功耗下计算出的像素数是CPU的8.98倍,是GPU的1.32倍;对于导向滤波算法,FPGA在单位功耗下计算出的像素数是CPU的12.24倍,是GPU的1.79倍。本文最后将分片双边滤波算法和导向滤波算法应用到了暗通道先验去雾算法中,并利用FPGA进行异构加速。使用内核合并和循环展开的优化方法对基于两种不同滤波的暗通道先验去雾算法的内核进行优化,优化后的内核对全高清图像的执行时间分别达到了31.65ms和29.94ms。在去雾效果上,基于导向滤波的暗通道先验去雾方法要优于基于分片双边滤波的暗通道先验去雾方法。最后,对比了两种暗通道先验去雾方法在CPU、GPU和FPGA上单位功耗下计算出的像素数。结果显示,基于分片双边滤波的暗通道先验去雾方法在FPGA上单位功耗下计算出的像素数是CPU的9.03倍,是GPU的1.30倍;基于导向滤波的暗通道先验去雾方法在FPGA上单位功耗下计算出的像素数是CPU的12.36倍,是GPU的1.80倍。