基于GPU的JPEG压缩算法实现

2014-10-17 17:49李杰刘灏马恩财刘明锋
电脑知识与技术 2014年26期

李杰 刘灏 马恩财 刘明锋

摘要:图形处理器(Graphic Processing Unit),简称GPU,是针对多线程程序对吞吐量进行优化的处理器,在硬件设计上属于众核架构,非常适合于大规模并行计算任务。JPEG图像压缩作为计算密集型的矩阵数据运算,用GPU技术对JPEG算法进行实现,能充分发挥GPU的并行处理能力,极大提高编码效率。

关键词:GPU;CUDA;JPEG

中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2014)26-6158-03

1 概述

在计算机系统中,GPU起初用于计算机图像的加速,为了适应图形图像应用中并行度高且计算量大的需要,优化硬件架构,相比CPU具有更多的流水线和内存吞吐量,使其非常适合于大规模并行计算[1]。CUDA 是NVIDIA推出的统一计算设备架构,是一种将GPU作为数据并行计算设备的软硬件体系,CUDA采用类C语言编程,掌握并行算法就可以控制GPU进行并行运算开发[2]。

2 CUDA编程方法

CUDA包含CUDA指令集架构以及GPU内部的并行计算引擎,使GPU能够解决复杂的计算问题[3][4]。GPU相当于拥有成千上百个核的CPU,对于并行计算任务,通过CUDA将相同计算逻辑的任务封装成kernel,然后控制所有的核同时运行kernel,就能展现GPU的高性能多任务并行处理能力。

4 结束语

本文用1024*1024大小的图像对程序进行测试。硬件平台:GPU为NVIDIA GT630;CPU为intel Q9550。软件平台:VS2008、CUDA3.2版驱动和工具开发包。运算时间测试结果如表1所示。可以看出,JPEG压缩算法在CPU和GPU两种不同平台的实现上速度差别非常明显,GPU运算占有极大的速度优势;同时由于图像文件较大,主机和GPU设备的数据传输占用时间较多,相对拖后了GPU带来的并行运算速度优势。

在序列图像持续产生的环境中,只要在两帧图像的间隔内完成数据传输和压缩过程,就可显著降低序列图像的数据流量,当压缩数据流小于硬盘写入带宽时,就可实现图像数据流的无失帧写入硬盘。由此可见,JPEG算法在GPU平台进行实现,可以应用在高速图像采集存储领域。

参考文献:

[1] 王泽寰.GPU并行计算编程技术介绍[J].科研信息化技术与应用,2013(4):81-87.

[2] 张舒.GPU高性能运算之CUDA[M].北京:中国水利水电出版社,2009.

[3] 桑德斯.GPU高性能编程CUDA实战[M].北京:机械工业出版社,2011.

[4] 邓仰东.NVIDIA CUDA超大规模并行程序设计训练课程[Z].清华大学,2008:10-200.

[5] 程思远.CUDA并行数据压缩技术研究[J].电脑知识与技术,2011(5):1035-1036.

[6] 冈萨雷斯.数字图像处理[M].北京:电子工业出版社,2007.

[7] 吴嘉慧.JPEG图像解码方案[J].现代计算机,2007(3):49-53.

[8] 郭静.基于CUDA的快速图像压缩[J].计算机工程与设计,2010(14):3302-3304.