论文部分内容阅读
[摘要]传统的视频压缩技术完全依赖于CPU的工作,占用大量的系统资源。而基于CUDA技术的视频压缩软件不仅减轻系统负担,更大大加快视频处理速度。
[关键词]CUDA NVIDIA 视频压缩 流处理器
中图分类号:TP2文献标识码:A文章编号:1671-7597(2009)0910035-01
一、引言
为了能够在手机,MP4上播放视频,进行视频压缩和转换是必要的操作。而完全依赖CPU进行视频处理还会造成系统资源的紧张,难以进行其他方面的操作。NVIDIA公司推出的CUDA技术则有效地解决了这一问题,不仅让视频压缩的速度成倍提高,而且还极大地降低了CPU的占用率。
二、CUDA技术简介
CUDA(Compute Unified Device Architecture),是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。开发人员现在可以使用C语言来为CUDA架构编写程序,C语言是应用最广泛的一种高级编程语言。所编写出的程序于是就可以在支持CUDA的处理器上以超高性能运行。将来还会支持其它语言,包括FORTRAN以及C++。
随着显卡的发展,GPU越来越强大,而且GPU为显示图像做了优化。在计算上已经超越了通用的CPU。如此强大的芯片如果只是作为显卡就太浪费了,因此NVidia推出CUDA,让显卡可以用于图像计算以外的目的。
CUDA是用于GPU计算的开发环境,它是一个全新的软硬件架构,可以将GPU视为一个并行数据计算的设备,对所进行的计算进行分配和管理。在CUDA的架构中,这些计算不再像过去所谓的GPGPU架构那样必须将计算映射到图形API(OpenGL和Direct 3D)中,因此对于开发者来说,CUDA的开发门槛大大降低了。CUDA的GPU编程语言基于标准的C语言,因此任何有C语言基础的用户都很容易地开发CUDA的应用程序。
由于GPU的特点是处理密集型数据和并行数据计算,因此CUDA非常适合需要大规模并行计算的领域。目前CUDA除了可以用C语言开发,也已经提供FORTRAN的应用接口,未来可以预计CUDA会支持C++、Java、Python等各类语言。可广泛的应用在图形动画、科学计算、地质、生物、物理模拟等领域。
三、CUDA软硬件环境
CUDA支持的GPU(CUDA-enabled GPU)包含GeForce、Quadro和Tesla三个系列。CUDA-enabled GPU的产品线涵盖了从笔记本电脑到高性能多GPU的系统中。CUDA-enabled GPU支持并行数据高速缓冲(Parallel Data Cache)和线程执行管理器(Parallel Data Cache),每个不同的GPU具备8-128个Stream Processor,具备强大的并行数据计算能力。目前只有G80、G92、G94和GT200平台的NVidia显卡才能使用CUDA,工具集的核心是一个C语言编译器。其中G80中拥有128个单独的ALU,因此非常适合并行计算,而且数值计算的速度远远优于CPU。
在CUDA的软件层面,NVIDIA C编译器是其中的核心。CUDA程序是GPU和CPU的混合代码,它首先由NVIDIA C编译器进行编译。经过编译后,GPU和CPU的代码将被分离,GPU代码被编译成GPU计算的机器码,而CPU的C代码输出由标准的C编译器进行编译。因此一个完整的CUDA软件开发环境还需要有一个面向CPU的C编译器。CUDA可以支持多种运行在Windows XP和Linux操作系统下的C开发系统诸如Microsoft Visual C++等。右图是NVIDI
A C编译器结构。
其中,EDG将CPU和GPU的代码分离;Open64生成GPU PTX(Parallel Thread eXecution)汇编码。CUDA运行需要CUDA runtime driver的支持,而Profiler则可以提供GPU和CPU kernel调用和内存拷贝的时序分析,从而对性能进行评估并且发现潜在的性能上的问题。
除了编译器外,NVIDIA提供了一些非常实用的函数库。目前有两个数字计算库包含在已经发布的软件包里面,分别是CUDA FFT和CUDA BLAS子程序库。CUDA FFT是快速傅立叶变换(Fast Fourier Transform,FFT)的子程序库,快速傅立叶变换是信号处理之类应用的基本算法。
四、基于CUDA技术视频压缩软件介绍
由于CUDA技术出现的时间不长,目前基于这一技术的视频压缩软件并不多见,比较知名的CUDA视频压缩软件主要有三款,分别是:Badaboom Media Converter、TMPGEnc 4.0 XPress和PowerDirector。而这三款软件中又以Badaboom Media Converter最著名,推出的时间也最早。Badaboom
是一款由NVIDIA和Elemental联合推出的消费级视频转码软件。软件操作界面简约直观,操作方式简单易懂,用户很容易上手。BadaBOOM软件是NVIDIA
CUDA通用计算技术的应用,这就意味着它是用C语言编写的,专为NVIDIA GPU而优化,确切地说就是GPU来实现视频转换加速。Badaboom利用GPU进行大部分转码工作,因此CPU的占用率很低。BadaBOOM的转码性能基本和GPU流处理器数量成线性关系。即使是入门级的只拥有32个流处理的Geforce 9500GT显卡,使用BadaBOOM软件来进行编码也能够领先目前最高端的四核处理器数倍。
在国外一个专业网站的测试中,用Badaboom和老牌的使用CPU进行编码的Mainconcept H.264 Encoder软件进行了对比测试。对同一段视频的转换,Badaboom配合Geforce 9500GT显卡以接近三倍的速度差距毫无疑问的拿下了胜利,差距相当明显。可以肯定,如果换上拥有128个GPU流处理器的Geforce 9800GTX,Badaboom的转换速度还会成倍提高。在测试中我们还注意到Mainconcept H.264 Encoder的CPU平均占用率达到了90%,而Badaboom的CPU平均占用率仅为33%。可见CUDA技术确实大大减轻了CPU的负担。
参考文献:
[1]Rob Farber,CUDA了解和使用共享内存。西北太平洋国家实验室,2008.
[2]Rob Farber,CUDA用于大量数据的超级计算。西北太平洋国家实验室,2008.
[3]邓培智,CUDA编程模型,NVIDIA,2008.
[4]周洪敏、龚建荣,视频压缩编码的新发展H.264,南京邮电学院,2006.
[关键词]CUDA NVIDIA 视频压缩 流处理器
中图分类号:TP2文献标识码:A文章编号:1671-7597(2009)0910035-01
一、引言
为了能够在手机,MP4上播放视频,进行视频压缩和转换是必要的操作。而完全依赖CPU进行视频处理还会造成系统资源的紧张,难以进行其他方面的操作。NVIDIA公司推出的CUDA技术则有效地解决了这一问题,不仅让视频压缩的速度成倍提高,而且还极大地降低了CPU的占用率。
二、CUDA技术简介
CUDA(Compute Unified Device Architecture),是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。开发人员现在可以使用C语言来为CUDA架构编写程序,C语言是应用最广泛的一种高级编程语言。所编写出的程序于是就可以在支持CUDA的处理器上以超高性能运行。将来还会支持其它语言,包括FORTRAN以及C++。
随着显卡的发展,GPU越来越强大,而且GPU为显示图像做了优化。在计算上已经超越了通用的CPU。如此强大的芯片如果只是作为显卡就太浪费了,因此NVidia推出CUDA,让显卡可以用于图像计算以外的目的。
CUDA是用于GPU计算的开发环境,它是一个全新的软硬件架构,可以将GPU视为一个并行数据计算的设备,对所进行的计算进行分配和管理。在CUDA的架构中,这些计算不再像过去所谓的GPGPU架构那样必须将计算映射到图形API(OpenGL和Direct 3D)中,因此对于开发者来说,CUDA的开发门槛大大降低了。CUDA的GPU编程语言基于标准的C语言,因此任何有C语言基础的用户都很容易地开发CUDA的应用程序。
由于GPU的特点是处理密集型数据和并行数据计算,因此CUDA非常适合需要大规模并行计算的领域。目前CUDA除了可以用C语言开发,也已经提供FORTRAN的应用接口,未来可以预计CUDA会支持C++、Java、Python等各类语言。可广泛的应用在图形动画、科学计算、地质、生物、物理模拟等领域。
三、CUDA软硬件环境
CUDA支持的GPU(CUDA-enabled GPU)包含GeForce、Quadro和Tesla三个系列。CUDA-enabled GPU的产品线涵盖了从笔记本电脑到高性能多GPU的系统中。CUDA-enabled GPU支持并行数据高速缓冲(Parallel Data Cache)和线程执行管理器(Parallel Data Cache),每个不同的GPU具备8-128个Stream Processor,具备强大的并行数据计算能力。目前只有G80、G92、G94和GT200平台的NVidia显卡才能使用CUDA,工具集的核心是一个C语言编译器。其中G80中拥有128个单独的ALU,因此非常适合并行计算,而且数值计算的速度远远优于CPU。
在CUDA的软件层面,NVIDIA C编译器是其中的核心。CUDA程序是GPU和CPU的混合代码,它首先由NVIDIA C编译器进行编译。经过编译后,GPU和CPU的代码将被分离,GPU代码被编译成GPU计算的机器码,而CPU的C代码输出由标准的C编译器进行编译。因此一个完整的CUDA软件开发环境还需要有一个面向CPU的C编译器。CUDA可以支持多种运行在Windows XP和Linux操作系统下的C开发系统诸如Microsoft Visual C++等。右图是NVIDI
A C编译器结构。
其中,EDG将CPU和GPU的代码分离;Open64生成GPU PTX(Parallel Thread eXecution)汇编码。CUDA运行需要CUDA runtime driver的支持,而Profiler则可以提供GPU和CPU kernel调用和内存拷贝的时序分析,从而对性能进行评估并且发现潜在的性能上的问题。
除了编译器外,NVIDIA提供了一些非常实用的函数库。目前有两个数字计算库包含在已经发布的软件包里面,分别是CUDA FFT和CUDA BLAS子程序库。CUDA FFT是快速傅立叶变换(Fast Fourier Transform,FFT)的子程序库,快速傅立叶变换是信号处理之类应用的基本算法。
四、基于CUDA技术视频压缩软件介绍
由于CUDA技术出现的时间不长,目前基于这一技术的视频压缩软件并不多见,比较知名的CUDA视频压缩软件主要有三款,分别是:Badaboom Media Converter、TMPGEnc 4.0 XPress和PowerDirector。而这三款软件中又以Badaboom Media Converter最著名,推出的时间也最早。Badaboom
是一款由NVIDIA和Elemental联合推出的消费级视频转码软件。软件操作界面简约直观,操作方式简单易懂,用户很容易上手。BadaBOOM软件是NVIDIA
CUDA通用计算技术的应用,这就意味着它是用C语言编写的,专为NVIDIA GPU而优化,确切地说就是GPU来实现视频转换加速。Badaboom利用GPU进行大部分转码工作,因此CPU的占用率很低。BadaBOOM的转码性能基本和GPU流处理器数量成线性关系。即使是入门级的只拥有32个流处理的Geforce 9500GT显卡,使用BadaBOOM软件来进行编码也能够领先目前最高端的四核处理器数倍。
在国外一个专业网站的测试中,用Badaboom和老牌的使用CPU进行编码的Mainconcept H.264 Encoder软件进行了对比测试。对同一段视频的转换,Badaboom配合Geforce 9500GT显卡以接近三倍的速度差距毫无疑问的拿下了胜利,差距相当明显。可以肯定,如果换上拥有128个GPU流处理器的Geforce 9800GTX,Badaboom的转换速度还会成倍提高。在测试中我们还注意到Mainconcept H.264 Encoder的CPU平均占用率达到了90%,而Badaboom的CPU平均占用率仅为33%。可见CUDA技术确实大大减轻了CPU的负担。
参考文献:
[1]Rob Farber,CUDA了解和使用共享内存。西北太平洋国家实验室,2008.
[2]Rob Farber,CUDA用于大量数据的超级计算。西北太平洋国家实验室,2008.
[3]邓培智,CUDA编程模型,NVIDIA,2008.
[4]周洪敏、龚建荣,视频压缩编码的新发展H.264,南京邮电学院,2006.