图像处理的gpu加速技术研究与评价

上传人:ji****n 文档编号:46018732 上传时间:2018-06-21 格式:DOC 页数:5 大小:347.50KB
返回 下载 相关 举报
图像处理的gpu加速技术研究与评价_第1页
第1页 / 共5页
图像处理的gpu加速技术研究与评价_第2页
第2页 / 共5页
图像处理的gpu加速技术研究与评价_第3页
第3页 / 共5页
图像处理的gpu加速技术研究与评价_第4页
第4页 / 共5页
图像处理的gpu加速技术研究与评价_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《图像处理的gpu加速技术研究与评价》由会员分享,可在线阅读,更多相关《图像处理的gpu加速技术研究与评价(5页珍藏版)》请在金锄头文库上搜索。

1、图像处理的图像处理的 GPU 加速技术研究与评价加速技术研究与评价刘伟峰 蒋楠 宋付英 孟凡密 陈芳莉(中国石油化工股份有限公司石油勘探开发研究院信息技术研究所,北京,100083,)摘摘 要要: 针对大多数图像处理问题的计算密集性,提出了图像处理的GPU加速技术。首先,描述了相对于CPU,采用GPU能够带来计算效率提升的体系结构基础。其次,将直方图生成和快速傅里叶变换计算二维卷积两个具有代表性的图像处理算法移植至GPU。最后,利用同样市场价格组合的CPU和GPU进行实验,利用多分辨率图像作为测试数据,比对CPU和GPU方案的计算效率。结果显示,与相同算法的CPU实现相比,其GPU实现分别将计

2、算效率最高提高到了17倍和40倍。关键词关键词: 图形处理器;直方图;快速傅里叶变换;二维卷积;统一计算设备架构Evaluation and Comparative Research of GPU Acceleration Techniques of Image ProcessingLIU Wei-feng,JIANG Nan,SONG Fu-ying,MENG Fan-mi,CHEN Fang-li(Information and Technology Station, SINOPEC Exploration & Production Research Institute, Beijing

3、100083)Abstract: For the compute-intensive character of image processing, we propose GPU acceleration techniques of image processing. In this paper, first, we describe the efficient architecture of GPU. Second, we implement two representative image processing algorithms, histogram generation and Fas

4、t Fourier Transformation-based two-dimensional convolution, on GPU. Finally, using the same market price CPU and GPU as hardware platform, and using multi-resolution images as test datasets, we compare the computational efficiency of GPU with CPU. The results show the speed of the two algorithms imp

5、lemented on GPU can be improved by up to 17 times and 40 times compared to CPU-based implementations. Keywords: GPU;histogram;FFT;2D convolution;CUDA1 引言引言随着科学技术的迅猛发展,图像处理技术已 经成为了近代信息处理领域一项非常重要的技术, 并已在遥感、医学、生物特征鉴别、运动分析等 领域得到了广泛应用。由于大多数图像处理问题 是计算密集型的,所以许多串行处理方法在应用 中遇到了难以实时计算的困难。随着并行计算机 及并行处理技术的发展,并行图

6、像处理技术应运 而生,但这些技术往往要么运行于大型集群上, 要么还在被作为测试并行机性能的辅助技术使用,其推广完全受制于硬件环境的推广。本文利用已 被广泛接受并使用的 GPU(graphics processing unit, 图形处理器)作为硬件载体,在其上并行地 实现了两个图像处理的常用算法直方图生成 和快速傅里叶变换计算二维卷积,并对其执行性 能数据与 CPU 上的相同算法执行性能数据进行了 比对。实验结果显示,同样的图像处理算法, GPU 组合对比于同样市场价格的 CPU,其计算效 率是后者的 17-40 倍。可得出结论,将原有 CPU 执行的算法移植至 GPU 执行能够获得很高的效率

7、 提升,而且是经济、可行的。2 GPU介绍介绍过去的二十年间,中央处理器遵循摩尔定律 发展,在不断提升性能的同时降低价格,为高性 能计算提供了有效的支持。然而,自 2003 年以来, 这种趋势发生了变化,不断提高的 CPU 频率带来 了高功耗和高发热量,使得 CPU 频率止步于 4 GHz,并向提高频率以外的方向发展。从那时起, 以游戏加速和图形处理为初衷设计的 GPU 以超出 摩尔定律的速度发展,并开始在高性能计算领域 被大量使用。图 1 为近年来 CPU 和 GPU 的浮点 运算速度对比图1。图1 GPU和CPU的FLOPS理论峰值Fig.1 Theoretical peak FLOPS

8、on GPUs and CPUs带来这种数据处理能力差别的主要原因在于 GPU 是典型的关注于计算而不太在乎如何访问存 储器的流处理机,流式编程模型的约束使得 GPU 以并行的方式运行高运算强度(arithmetic intensity, 即算法运算时间开销和存储器操作时 间开销的比率)的应用,因此可以同时处理很多 数据元素。一般来讲,能够在 GPU 上高效执行的 算法都是可将问题分割为高度独立单元且每个单 元都具有高运算强度的算法。高度重复且仅局部 相关的图像处理属于这一类算法,例如,滤波运 算对所有像素执行同样的运算,而且是处理顺序 无关的,这样的运算可以通过对每个像素执行相 同的指令在

9、GPU 上并行实现。 2.1 体系结构体系结构 GPU 的流式数据并行模型保证在多数据流上 执行相同指令,以 nVidia G80 核心为代表的 GPU 包含 1-16 个多处理器(multiprocessors) ,每个多 处理器包含 8 个流处理器(stream processors)和 2 个专用于执行如平方根倒数等标量运算的特殊功 能单元(special functional units) 。其中一个多处理器内部的所有流处理器以 SIMD(单指令多数据) 的结构执行同样指令,而不同的多处理器可以以 MIMD(多指令多数据)结构执行不同的指令。从 线程角度讲,每个多处理器可并行运行 76

10、8 个活 动线程,即包含 16 个多处理器的 GPU 可并行运 行 12288 个活动线程。从存储器角度讲,每个多 处理器有 16 KB 可读写共享内存(shared memory) 、 8 KB 只读常量内存(constant memory) 、8 KB 只 读纹理内存(texture memory)和 8192 个寄存器 (Registers) 。图 2 表示了这种架构。在图像处理 的 GPU 加速算法设计中,如何针对这种架构分割 像素或图像块以映射到并行线程进行处理,再经 由多级存储器将被处理的像素或图像块重新组合 成结果图像是高效算法设计的关键。GPU 设设备备多多处处理理器器 N多多

11、处处理理器器 2多多处处理理器器 1.共共 享享 内内 存存寄寄存存器器寄寄存存器器寄寄存存器器常常 量量 内内 存存纹纹 理理 内内 存存指指令令单单元元特特殊殊功功能能单单元元 1特特殊殊功功能能单单元元 2流流处处理理器器 8流流处处理理器器 2流流处处理理器器 1.设设 备备 内内 存存图2 nVidia G80 GPU架构简图(N = 1, 2, 4, 8, 12, 14, 16)Fig.2 Simplified view of the nVidia G80 GPU architecture开始在 GPU 上计算之前,需要加载输入数据 到 GPU 的设备内存(显存)中,计算过后,如果

12、 CPU 需要计算结果,就要从 GPU 把结果数据读回 CPU,数据流图见图 3。与此相对,在 CPU 上执 行程序不需要这些额外的操作。所以评估 GPU 性 能时,必须考虑数据加载和读回造成的性能损耗2。2.2 编程接口编程接口 一直以来,编写 GPU 程序主要是通过图形 API(OpenGL 或 DirectX)来完成,但由于图形编 程的学习曲线相对较长,运用 GPU 进行高性能运 算由于软件层面的限制难以大面积普及3。2007 年,由 nVidia 推出的 CUDA(Compute Unified Device Architecture,统一计算设备架构)编程接 口弥补了这一不足。利用

13、CUDA 编程接口,可以 用 C 语言直接调用 GPU 资源,而无需将其映射到 图形 API,为 GPU 的非图形编程普及消除了障碍。并 行 执 行加 载 数 据 到 GPU读 回 数 据 到 CPU输 入 数 据结 果 数 据CPUGPU图3 GPU程序的数据流Fig.3 GPU application data flow3 实验设计实验设计采用价格完全相等的两套硬件平台进行实验, CPU 实验平台选用 1500 元人民币(2008 年 3 月 价格,下同)的 Intel Core2 Duo E6750 CPU 和 Intel GMA3100 集成显卡(计 0 价格) ;GPU 实验 平台选

14、用 400 元人民币的 Intel Pentium Dual-Core E2140 CPU 和 1100 元人民币的 nVidia GeForce 8800GT GPU(14 个多处理器/256 MB 显存) 。内 存配置均为 2GB 800MHz DDR2 内存。 测试数据选用 44 像素到 81928192 像素 (以 22倍数依次递增)的真实图像各 3 张,共 36 张。实验结果取 3 张图像运算时间的平均值。由 于篇幅所限,本文不给出算法运算结果或图像处 理前后对比图。4 算法实现和实验结果分析算法实现和实验结果分析基于以往经验,选用 256-bin 直方图生成和快 速傅里叶变换计算二

15、维卷积两个常用图像处理算 法进行图像处理的 GPU 加速实验。对 GPU 程序, 使用 CUDA 编程接口实现与 CPU 端完全相同的算 法,并统一采用 32-bit 浮点数运算,以保证结果的 公平性。 4.1 256-bin 直方图直方图 直方图描述图像中像素强度的分布,是多种 图像处理技术的基础。本算法生成 256-bin 直方图, 根据经验,此级别的直方图对一般应用是足够的。 其 CPU 实现相对简单,不再赘述。 在 GPU 上,算法需改为并行处理:(1)将图像 拆分成子序列分给执行线程;(2)每线程执行子序 列并将执行结果存储为子直方图;(3)将多个子直 方图合并成最终结果。其中步骤(

16、2)中子直方图数 量的设置是算法的关键,多个线程将计算结果写入同一个子直方图可以减少子直方图数量以减低 存储空间需求,但也会带来费时的共享内存冲突 问题。直观的解决方案是每线程对应单独的子直 方图,但目前 GPU 可分配给单线程的共享内存为 85 bytes,最多可以存储 1 byte/bin 的 64-bin 子直 方图,不足以存储 4 bytes/bin 的 256-bin 的子直方 图,所以本文使用每 warp(GPU 上 32 个线程组 成的 SIMD 集合)对应一个子直方图的方案,并 用线程标记的方法协助控制共享内存冲突,其中 每线程标记占用 5 bits(每 warp 32 个线程, 32 = 25) 。从实验结果来看,控制共享内存冲突给整体 性能带来的额外开销很小。CPU/GPU 生成 256 灰 度级直方图的实验数据对比见表 1(由于篇幅所限, 只在表中列出 6 个尺寸级别的实验数据,下同) 。表 1 CPU/GPU 算法生成

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号