CN109451322A - 用于图像压缩的基于cuda架构的dct算法和dwt算法的加速实现方法 - Google Patents

用于图像压缩的基于cuda架构的dct算法和dwt算法的加速实现方法 Download PDF

Info

Publication number
CN109451322A
CN109451322A CN201811074849.8A CN201811074849A CN109451322A CN 109451322 A CN109451322 A CN 109451322A CN 201811074849 A CN201811074849 A CN 201811074849A CN 109451322 A CN109451322 A CN 109451322A
Authority
CN
China
Prior art keywords
cuda
algorithm
later
dwt
dct
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201811074849.8A
Other languages
English (en)
Other versions
CN109451322B (zh
Inventor
滑艺
陈浩
牛文龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Harbin Institute of Technology
China Aerospace Times Electronics Corp
Beijing Aerospace Control Instrument Institute
Original Assignee
Harbin Institute of Technology
China Aerospace Times Electronics Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Harbin Institute of Technology, China Aerospace Times Electronics Corp filed Critical Harbin Institute of Technology
Priority to CN201811074849.8A priority Critical patent/CN109451322B/zh
Publication of CN109451322A publication Critical patent/CN109451322A/zh
Application granted granted Critical
Publication of CN109451322B publication Critical patent/CN109451322B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/625Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using discrete cosine transform [DCT]

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Discrete Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

用于图像压缩的基于CUDA架构的DCT算法和DWT算法的加速实现方法,属于图像压缩领域。现有的图像处理手段存在压缩速率低的问题。一种用于图像压缩的基于DWT架构的DCT算法和DWT算法的加速实现方法,分析CUDA平台的软件体系与硬件体系,并在Windows操作系统下基于VS2010搭建CUDA平台;分别将DCT算法和DWT算法映射为两层CUDA执行模型的内核函数,得到改进的DCT算法和DWT算法,分别实现改进的DCT算法和DWT算法在GPU端运行;在CUDA平台上运行改进的DCT算法。本发明适用于对DCT算法和DWT算法在CUDA平台上的实现。并行执行运算过程能够获得相对于CPU几十倍的压缩比,从而能够有效提高数字图像个压缩的压缩速率。

Description

用于图像压缩的基于CUDA架构的DCT算法和DWT算法的加速实 现方法
技术领域
本发明涉及一种图像处理方法,具体涉及一种用于图像压缩的基于CUDA架构的DCT算法和DWT算法的加速实现方法。
背景技术
如今,社会已经步入信息化时代,数字图像因其信息量大和便于进行处理的特点,已 经成为人们获取和交换信息的重要手段。图像处理的应用领域涉及到人类生活和工作的方 方面面,包括航空航天,生物医学工程,通信工程技术应用,工业工程,军事公安和文化 艺术等领域。但是数字图像本身数据量大,信息传输和存储也变得困难。因此研究减少图 像数据量的图像压缩技术十分必要,特别是随着计算机网络和多媒体技术的飞速发展,原 有的压缩技术已经很难满足处理速度的要求,如何实现高性能的快速图像压缩技术已经迫 在眉睫。
目前主流计算机中的处理器主要是中央处理器CPU和图像处理器GPU。传统的GPU只负责图像渲染,大部分处理都交给CPU。但是近年来,GPU已经发展成为具备高计算 能力、多核心的图形和非图形处理工具,这主要是因为GPU专为计算密集型和高度并行 的计算设计。因此GPU将更多的晶体管专用于数据处理,而非数据高速缓存和流控制, GPU很适合于解决数据并行的高运算密度计算问题。特别是在NVIDIA提出CUDA (Compute UnifiedDevice Architecture,统一计算设备架构)后,利用GPU来处理复杂的数 据并行计算已经成为一种趋势,很多程序开发人员利用GPU处理复杂的计算问题,获得 了很高的加速比。由于JPEG和JPEG2000标准应用在数字图像压缩的各个领域,提高压 缩速率就显得十分重要,所以研究其核心变化算法——DCT和DWT在GPU上的高速并 行执行有积极的意义。
发明内容
本发明的目的是为了解决现有的图像处理手段存在压缩速率低的问题,而提出一种用 于图像压缩的基于CUDA架构的DCT算法和DWT算法的加速实现方法的实现方法。
一种用于图像压缩的基于CUDA架构的DCT算法的加速实现方法,所述方法通过以下步骤实现:
步骤一、分析CUDA平台的软件体系与硬件体系,并在Windows操作系统下基于VS2010搭建CUDA平台;其中,CUDA是指统一计算设备架构,为Compute Unified DeviceArchitecture的简称;VS2010指Microsoft Visual Studio 2010版本,是微软公司推出的Windows平台应用程序开发环境;
步骤二、将DCT算法映射为两层CUDA执行模型的内核函数,得到改进的DCT算 法,实现改进的DCT算法在GPU端运行;DCT算法是指离散余弦变换,GPU是指图像 处理器;
步骤三、在CUDA平台上运行改进的DCT算法。
一种用于图像压缩的基于CUDA架构的DWT算法的加速实现方法,所述方法通过 以下步骤实现:
步骤一、分析CUDA平台的软件体系与硬件体系,并在Windows操作系统下基于VS2010搭建CUDA平台;其中,CUDA是指统一计算设备架构,为Compute Unified DeviceArchitecture的简称;VS2010指Microsoft Visual Studio 2010版本,是微软公司推出的Windows平台应用程序开发环境;
步骤二、将DWT算法映射为两层CUDA执行模型的内核函数,得到改进的DCT算 法,实现改进的DWT算法在GPU端运行;DWT算法是指离散小波变换,GPU是指图 像处理器;
步骤三、在CUDA平台上运行改进的DWT算法。
本发明的有益效果为:
本发明借助CUDA架构的软硬件体系实现DCT算法以及DWT算法的并行执行,从 而使得两种算法在GPU上都具有高速并行执行的能力,具有较好的前景。
本发明适用于对DCT算法和DWT算法在CUDA平台上的实现。并行执行运算过程 能够获得相对于CPU几十倍的压缩比,从而能够有效提高数字图像个压缩的压缩速率, 为图像压缩算法的研究提供了便利。
附图说明
图1为CUDA环境搭建正确的运行结果界面图;
图2为DCT算法的CPU程序流程图;
图3为DWT算法的CPU程序流程图;
图4-1为未改进的DCT算法的图像分块方式;
图4-2为改进的DCT算法的图像分块方式;
图5-1为未改进的DWT算法的图像分块方式;
图5-2为改进的DWT算法的图像分块方式;
图6为DCT算法的GPU程序流程图;
图7为DWT算法的GPU程序流程图;
图8为实验测试图像;
图9为5_3小波变换算法输出图像结果。
具体实施方式
具体实施方式一:
本实施方式的用于图像压缩的基于CUDA架构的DCT算法的加速实现方法,所述方法通过以下步骤实现:
步骤一、分析CUDA平台的软件体系与硬件体系,并在Windows操作系统下基于VS2010搭建CUDA平台;其中,CUDA是指统一计算设备架构,为Compute Unified DeviceArchitecture的简称;VS2010指Microsoft Visual Studio 2010版本,是微软公司推出的Windows平台应用程序开发环境;
步骤二、首先,在CPU上实现串行DCT算法的运行,用于与本发明方法的对比;将DCT算法映射为两层CUDA执行模型的内核函数,得到改进的DCT算法,实现改进的 DCT算法在GPU端运行;DCT算法是指离散余弦变换,常用于图像压缩算法;改进的 DCT算法在GPU上的高速并行执行,提高图像压缩速率,GPU是指图像处理器;
步骤三、在CUDA平台上运行改进的DCT算法。
具体实施方式二:
与具体实施方式一不同的是,本实施方式的用于图像压缩的基于CUDA架构的DCT算法的加速实现方法,步骤一所述的在Windows操作系统下基于VS2010搭建CUDA平 台的具体过程为:
第1,所述的Windows操作系统选为WIN732位旗舰版操作系统,程序开发环境基 于Visual Studio 2010进行搭建,所述的CUDA版本为CUDA4.0,
第2,准备如下软件包:
Microsoft Visual Studio 2010,简称为VS2010,
Driver:devdriver_4.0_winvista-win7_32_275.33_notebook.exe,为显卡驱动
CUDA Toolkit v4.0:cudatoolkit_4.0.17_win_32.msi,
CUDA SDK v4.0:gpucomputingsdk_4.0.19_win_32.exe,
Visual Assist X,为VS2010的插件助手,
Parallel Nsight v2.0:Parallel_Nsight_Win32_2.0.11166.msi,
并按照如下的软件安装顺序进行安装:VS2010及其助手Visual Assist X、Driver、 CUDA Toolkit v4.0和CUDA SDKv4.0,最后安装Parallel Nsight v2.0;
第3,在软件包安装结束后,最主要也最繁琐的工作是进行环境变量的配置、函数库 的生成和文本高亮支持的配置;一般来说,安装完成CUDAToolkit和SDK后,已自动配 置好环境变量,但是为了保险起见,其中,
环境变量的配置过程最好通过手动完成,具体为在系统环境变量中新建如下项:
CUDA_SDK_PATH=C:\ProgramData\NVIDIA Corporation\NVIDIA GPU
Computing SDK4.0\C\common
CUDA_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.0
CUDA_LIB_PATH=%CUDA_PATH%\lib\Win32
CUDA_BIN_PATH=%CUDA_PATH%\bin
CUDA_SDK_LIB_PATH=%CUDA_SDK_PATH%\lib\Win32
CUDA_SDK_BIN_PATH=%CUDA_SDK_PATH%\bin
其中,CUDA_SDK_PATH和CUDA_PATH分别是指CUDA SDK v4.0和CUDA Toolkit v4.0的安装路径,随后在系统环境变量Path后添加如下内容:
%CUDA_LIB_PATH%;%CUDA_INC_PATH%;%CUDA_BIN_PATH%;%CUDA_SDK_LIB_PATH%;%CUDA_SDK_BIN_PATH%;%CUDA_SDK_INC_PATH%;
完成环境变量的配置后,进行文本高亮支持的配置,具体过程为,在VS2010中添加对.cu文件的支持并利用VisualAssist X支持CUDA函数的高亮;
第4,最后使用Visual Studio 2010打开CUDA_SDK_PATH\C\common目录下的解决方案文件cutil_vs2010.sln和CUDA_SDK_PATH\share\shrUtils_vs2010.sln,选择批生成;至此,CUDA平台已全部搭建完毕。
搭建完毕后可以打开devicequery这个工程运行,查看及其上的GPU设备和平台版本, 同时验证环境搭建是否正确,如果正确将出现图1所示的运行结果。
具体实施方式三:
与具体实施方式一或二不同的是,本实施方式的用于图像压缩的基于CUDA架构的DCT算法的加速实现方法,步骤二所述的在CPU上实现串行DCT算法的过程为,所述 的CPU处理器相关信息如下表:
如图2所示,DCT算法的串行运行过程为:输入图像;之后分配存储空间;之后将byte类型转换成float类型;之后各个像素值-128;之后计算第一块各个系数,重复上述 步骤到最后一块处理完毕;之后进行IDCT算法处理;之后各个像素值+128;之后将float 类型转换成byte类型;之后生成图像;之后计算PSNR和输出时间;之后释放存储空间; 最后结束。
具体实施方式四:
与具体实施方式三不同的是,本实施方式的用于图像压缩的基于CUDA架构的DCT算法的加速实现方法,步骤二所述的将DCT算法映射为两层CUDA执行模型的内核函数, 得到改进的DCT算法,实现改进的DCT算法在GPU端运行的过程为,DCT算法分为原 始算法和改进的DCT算法,二者区别体现在线程分配和CUDA核函数的实现两部分的改 进,其余部分均相同;其中未改进的DCT算法将图像分成若干8x8的小块,如图4-1所 示,每一块的处理是并行执行的,每一块中的各个系数也是并行处理的,这正好可以对应 到CUDA的两层CUDA执行模型。其CUDA核函数的具体实现过程如下:
(1)将用matlab产生的8×8变换矩阵存到常数存储器中;
(2)定义两个8×8的共享存储器CurBlockLocal1[8×8]和CurBlockLocal2[8×8];
(3)每个线程根据自己的Id读取显存上每个8×8小块数据到第一个CurBlockLocal1 中,进行同步;
(4)每个线程根据自己的Id对CurBlockLocal1中的1行做1维DCT变换并存储在CurBlockLocal2中,每个线程计算1个系数,进行同步;
(5)每个线程根据自己的Id对CurBlockLocal2中的1列做1维DCT变换并存储在CurBlockLocal1中,每个线程计算1个系数,进行同步;
(6)每个线程根据自己的Id将CurBlockLocal1中的数据拷贝到显存上的8×8小块中。
对于线程分配,根据分块方式和CUDA执行模型的对应方式,可以为每一个8×8小块分配一个CUDA block,每个CUDA block中分配8×8个线程。具体线程分配方式如下:
dim3threads(8,8);//block中线程的分配
dim3grid(ImageWidth/8,ImageHeight/8);//gird中block的分配
(threadIdx.x,threadIdx.y)是8×8小块中每个元素的索引,(blockIdx.x,blockIdx.y) 是网格中每个小块的索引。
将DCT算法映射为两层CUDA执行模型的内核函数是将图像分成若干个8x8大小的小块,再将得到的小块组按照块的大小为32*16的条件进行组合,得到一系列宏模块,分 块方式如图4-2所示;为了充分利用CUDA资源,对于改进的DCT算法,本发明中用1 个线程来宏模块,而不是像未改进的DCT算法中用1个线程来处理1个元素。每一行间 的宏模块间是并行执行的,宏模块内部的每一列或每一行元素的处理是并行执行的,进而 可以很好地映射到CUDA的两层执行模型上;
具体地:
首先,这部分共利用两个核函数完成CUDA核函数的实现,一个是__device__函数,用于计算1维8点DCT变换,只在设备端调用,和另一个是__global__函数,用于对图像 2维DCT变换的整体实现,在主机端调用;
其中,__global__函数核函数的具体实现过程如下:
第1,将a,b,c,d,e,f等常数系数预先计算好,存放在静态数据区;
第2,定义一个32×16的共享存储器CurBlockLocal;
第3,每个线程根据自己的Id读取显存上每个宏模块数据到共享存储器CurBlockLocal 中,进行同步;
第4,连续2次调用__device__函数,第1次每个线程按照自己的Id处理1行元素,进行同步,第2次每个线程按照自己的Id处理1列元素,进行同步;
第5,每个线程根据自己的Id将共享存储器CurBlockLocal中的数据拷贝到显存上的 每个宏模块中;
然后,进行线程分配:根据分块方式和CUDA执行模型的对应方式,为每一个宏模块分配一个CUDA block,每个CUDA block对应8个8×8的小块,由于用一个线程处理 一行或一列元素,因此为每个小块分配8个线程,每个CUDA block只分配8×8个线程; 具体线程分配方式如下:
dim3threads(8,4,2);
dim3grid(ImageWidth/32,ImageHeight/16,1);
threadIdx.x是行或列号的索引,(threadIdx.y,threadIdx.z)是宏模块中每个8×8小块的 索引;(blockIdx.x,blockIdx.y)是网格中宏模块的索引。
具体实施方式五:
与具体实施方式一、二或四不同的是,本实施方式的用于图像压缩的基于CUDA架构的DCT算法的加速实现方法,所述步骤四所述的在CUDA平台上运行改进的DCT算 法的过程为,如图6所示:输入图像;之后将byte类型转换成float类型;之后各个像素 值-128;之后分配存储空间;之后内存拷贝到显卡;之后进行线程分配;之后 CUDAkernelDCT;之后将显存拷贝到内存;之后各个像素值+128;之后将float类型转换 成byte类型;之后生成图像;之后计算PSNR和输出时间;之后释放存储空间;最后结 束。
具体实施方式六:
本实施方式的用于图像压缩的基于CUDA架构的DWT算法的加速实现方法,所述 方法通过以下步骤实现:
步骤一、分析CUDA平台的软件体系与硬件体系,并在Windows操作系统下基于VS2010搭建CUDA平台;其中,CUDA是指统一计算设备架构,为Compute Unified DeviceArchitecture的简称;VS2010指Microsoft Visual Studio 2010版本,是微软公司推出的Windows平台应用程序开发环境;
步骤二、首先,在CPU上实现串行DWT算法的运行,用于与本发明方法的对比; 将DWT算法映射为两层CUDA执行模型的内核函数,得到改进的DCT算法,实现改进 的DWT算法在GPU端运行;改进的DCT算法在GPU上的高速并行执行,提高图像压 缩速率,DWT算法是指离散小波变换,常用于图像压缩算法;GPU是指图像处理器;
步骤三、在CUDA平台上运行改进的DWT算法。
具体实施方式七:
与具体实施方式六不同的是,本实施方式的用于图像压缩的基于CUDA架构的DWT算法的加速实现方法,步骤一所述的在Windows操作系统下基于VS2010搭建CUDA平 台的具体过程为:
第1,所述的Windows操作系统选为WIN7 32位旗舰版操作系统,程序开发环境基于Visual Studio 2010进行搭建,所述的CUDA版本为CUDA4.0,
第2,准备如下软件包:
Microsoft Visual Studio 2010,简称为VS2010,
Driver:devdriver_4.0_winvista-win7_32_275.33_notebook.exe,为显卡驱动
CUDA Toolkit v4.0:cudatoolkit_4.0.17_win_32.msi,
CUDA SDK v4.0:gpucomputingsdk_4.0.19_win_32.exe,
Visual Assist X,为VS2010的插件助手,
Parallel Nsight v2.0:Parallel_Nsight_Win32_2.0.11166.msi,
并按照如下的软件安装顺序进行安装:VS2010及其助手Visual Assist X、Driver、 CUDAToolkit v4.0和CUDA SDKv4.0,最后安装Parallel Nsight v2.0;
第3,在软件包安装结束后,最主要也最繁琐的工作是进行环境变量的配置、函数库 的生成和文本高亮支持的配置;一般来说,安装完成CUDA Toolkit和SDK后,已自动配置好环境变量,但是为了保险起见,其中,
环境变量的配置过程最好通过手动完成,具体为在系统环境变量中新建如下项:
CUDA_SDK_PATH=C:\ProgramData\NVIDIA Corporation\NVIDIA GPU
Computing SDK4.0\C\common
CUDA_PATH=C:\Program Files\NVIDIAGPU Computing Toolkit\CUDA\v4.0
CUDA_LIB_PATH=%CUDA_PATH%\lib\Win32
CUDA_BIN_PATH=%CUDA_PATH%\bin
CUDA_SDK_LIB_PATH=%CUDA_SDK_PATH%\lib\Win32
CUDA_SDK_BIN_PATH=%CUDA_SDK_PATH%\bin
其中,CUDA_SDK_PATH和CUDA_PATH分别是指CUDA SDK v4.0和CUDAToolkit v4.0的安装路径,随后在系统环境变量Path后添加如下内容:
%CUDA_LIB_PATH%;%CUDA_INC_PATH%;%CUDA_BIN_PATH%;%CUDA_SDK_LIB_PATH%;%CUDA_SDK_BIN_PATH%;%CUDA_SDK_INC_PATH%;
完成环境变量的配置后,进行文本高亮支持的配置,具体过程为,在VS2010中添加对.cu文件的支持并利用Visual Assist X支持CUDA函数的高亮;
第4,最后使用Visual Studio 2010打开CUDA_SDK_PATH\C\common目录下的解决方案文件cutil_vs2010.sln和CUDA_SDK_PATH\share\shrUtils_vs2010.sln,选择批生成;至此,CUDA平台已全部搭建完毕。
搭建完毕后可以打开devicequery这个工程运行,查看及其上的GPU设备和平台版本, 同时验证环境搭建是否正确,如果正确将出现图1所示的运行结果。
其他步骤与具体实施方式一相同。
具体实施方式八:
与具体实施方式六或七不同的是,本实施方式的用于图像压缩的基于CUDA架构的DWT算法的加速实现方法,步骤二所述的在CPU上实现串行DWT算法的运行的过程为, 所述的CPU处理器相关信息如下表:
处理器 英特尔酷睿2双核P8400@2.26GHz笔记本处理器
速度 2.27GHz(267MHzx8.5)/前端总线:1067MHz
处理器数量 核心数:2/线程数:2
生产工艺 45纳米
插槽/插座 Socket P(478)
一级数据缓存 2 x 32KB,8-Way,64bytelines
一级代码缓存 2 x 32KB,8-Way,64byte lines
二级缓存 3MB,12-Way,64byte lines
如图3所示,DWT算法的串行运行过程为:输入图像;之后分配存储空间;之后将byte类型转换成float类型;之后计算行偶位系数;之后计算行奇位系数;之后计算列欧 位系数;之后计算列奇位系数;之后进行IDWT算法处理;之后将float类型转换成byte 类型;之后生成图像;之后计算PSNR和输出时间;之后释放存储空间;最后结束。
具体实施方式九:
与具体实施方式八不同的是,本实施方式的用于图像压缩的基于CUDA架构的DWT算法的加速实现方法,步骤二所述的将改进的DWT算法映射为两层CUDA执行模型的 内核函数,实现改进的DWT算法在GPU端运行的过程为:根据图像的大小以及GPU的 计算能力确定分块方案,可以按照图5-1到图5-2所示的方式进行分块。由图中的分块方 式可以看出,每一行间并行执行的,行中的每个元素间是并行执行的,则设计的改进的 DWT算法可以很好地映射到CUDA的两层CUDA执行模型上;行和列的核函数执行方 式基本相同,下面先进行CUDA行核函数的具体实现过程:
第1,定义1个共享存储器CurBlockLocal1[ImageWidth/2];
第2,每个线程根据自己的Id读取显存上每一行中一半的数据到共享存储器CurBlockLocal1中,进行同步;
第3,每个线程根据自己的Id对共享存储器CurBlockLocal1中的数据做1维DWT 变换,每个线程计算1个系数,同时将计算好的系数存储到显存上,进行同步;
对于线程分配,根据分块方式和CUDA执行模型的对应方式,可以为每一行分配2个CUDA block,每个CUDA block中分配ImageWidth/2个线程;具体线程分配方式如下:
dim3threads1(ImageWidth/32,16);//block中线程的分配
dim3grid1(2,ImageWidth);//gird中block的分配
根据行和列的核函数执行方式基本相同的原理,按照上述方法执行列的核函数执行方 式。
具体实施方式十:
与具体实施方式六、七或九不同的是,本实施方式的用于图像压缩的基于CUDA架构的DWT算法的加速实现方法,如图7所示在CUDA平台上实现改进的DWT算法具体 过程为:输入图像;之后将byte类型转换成float类型;之后分配存储空间;之后内存拷 贝到显卡;之后进行线程分配;之后CUDAkernelDWTTow;之后CUDAkernelDWTColumn; 之后IDWTKernel;之后显卡拷贝到内存;之后将float类型转换成byte类型;之后生成 图像;之后计算PSNR和输出时间;之后释放存储空间;最后结束。
仿真实验:
用于图像压缩的基于CUDA架构的DCT算法和DWT算法的加速实现方法,在两台 具有不同型号的GPU的机器上运行改进的DCT算法和5_3小波变换算法,其中,5_3小 波变换算法属于DWT算法的一种,测试程序的稳定性和可移植性,两种型号的GPU的 信息分别如下表所示。
GPU型号 GeForce GTX 560 GeForce 9650M GT
CUDA版本号 4.1/4.1 4.0/4.0
CUDA计算能力 2.1 1.1
显存大小 1024MBytes 978MBytes
核心个数 336CUDA Cores 32CUDA Cores
GPU时钟频率 1.85GHz 1.35GHz
存储器时钟频率 2100.00Mhz 400.00Mhz
存储器带宽 256-bit 128-bit
常数存储器大小 65536bytes 65536bytes
每块共享存储器大小 49152bytes 16384bytes
每块中寄存器文件个数 32768 8192
Warp大小 32 32
每块中最大线程数 1024 512
每块各个维度最大值 1024x 1024x 64 512x 512x 64
每网格各个维度最大值 65535x 65535x 65535 65535x 65535x 1
本发明的测试图像共四幅,如图8所示。上面两幅分别是512×512和1024×1024的标准测试图像barbara,下面两幅分别是512×512和1024×1024的遥感图像。各个输入图像均为8bitbmp格式,输出结果为raw格式,可以用photoshop读取显示。
改进的DCT算法的实现输出图为经过DCT+IDCT后的图像以及其与源图像的 PSNR,同时还有CPU与GPU端的执行时间,然后计算加速比,进行比较。表1是未改 进的DCT算法的测时结果、加速比计算结果及PSNR,表2是改进的DCT算法的测时结 果、加速比计算结果及PSNR。
表1原始的DCT算法实验结果
表2改进的DCT算法实验结果
DWT的输出结果共有两部分,一个是对源图像进行DWT变换的图像和对源图像进行DWT+IDWT的图像,另一部分是命令窗口中所显示的经过DWT+IDWT的图像与源图 像的PSNR,以及程序在CPU和GPU上分别执行的测时。然后计算加速比,进行比较。 图9是DWT的输出图像,表3是DWT的测时结果、加速比计算结果及PSNR。
表3 5_3小波变换算法的实验结果
纵观总体数据,本发明达到了DCT算法和5_3小波变换算法在GPU上的实现的目标,并且得到了几十倍的加速比。
本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,本领域技术 人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发 明所附的权利要求的保护范围。

Claims (8)

1.一种用于图像压缩的基于CUDA架构的DCT算法的加速实现方法,其特征是:所述方法通过以下步骤实现:
步骤一、分析CUDA平台的软件体系与硬件体系,并在Windows操作系统下基于VS2010搭建CUDA平台;其中,CUDA是指统一计算设备架构,为Compute Unified DeviceArchitecture的简称;VS2010指Microsoft Visual Studio 2010版本,是微软公司推出的Windows平台应用程序开发环境;
步骤二、将DCT算法映射为两层CUDA执行模型的内核函数,得到改进的DCT算法,实现改进的DCT算法在GPU端运行;DCT算法是指离散余弦变换,GPU是指图像处理器;
步骤三、在CUDA平台上运行改进的DCT算法。
2.根据权利要求1所述的用于图像压缩的基于CUDA架构的DCT算法的加速实现方法,其特征是:步骤二所述的将DCT算法映射为两层CUDA执行模型的内核函数,得到改进的DCT算法,是将图像分成若干个8x8大小的小块,再将得到的小块组按照块的大小为32*16的条件进行组合,得到一系列宏模块,用1个线程来宏模块,每一行间的宏模块间是并行执行的,宏模块内部的每一列或每一行元素的处理是并行执行的,进而将DCT算法映射到CUDA的两层执行模型上;改进的DCT算法体现在线程分配和CUDA核函数的实现两部分的改进,具体地:
首先,利用__device__函数和__global__函数这两个核函数完成CUDA核函数的实现,其中,__global__函数核函数的具体实现过程如下:
第1,将常数系数预先计算好,存放在静态数据区;
第2,定义一个32×16的共享存储器CurBlockLocal;
第3,每个线程根据自己的Id读取显存上每个宏模块数据到共享存储器CurBlockLocal中,进行同步;
第4,连续2次调用__device__函数,第1次每个线程按照自己的Id处理1行元素,进行同步,第2次每个线程按照自己的Id处理1列元素,进行同步;
第5,每个线程根据自己的Id将共享存储器CurBlockLocal中的数据拷贝到显存上的每个宏模块中;
然后,进行线程分配:根据分块方式和CUDA执行模型的对应方式,为每一个宏模块分配一个CUDA block,每个CUDA block对应8个8×8的小块,每个CUDA block只分配8×8个线程,为每个小块分配8个线程。
3.根据权利要求1或2所述的用于图像压缩的基于CUDA架构的DCT算法的加速实现方法,其特征是:所述步骤四所述的在CUDA平台上运行改进的DCT算法的过程为,输入图像;之后将byte类型转换成float类型;之后各个像素值-128;之后分配存储空间;之后内存拷贝到显卡;之后进行线程分配;之后CUDAkernelDCT;之后将显存拷贝到内存;之后各个像素值+128;之后将float类型转换成byte类型;之后生成图像;之后计算PSNR和输出时间;之后释放存储空间;最后结束。
4.根据权利要求3所述的用于图像压缩的基于CUDA架构的DCT算法的加速实现方法,其特征是:步骤一所述的在Windows操作系统下基于VS2010搭建CUDA平台的具体过程为:
第1,所述的Windows操作系统选为WIN732位旗舰版操作系统,程序开发环境基于Visual Studio 2010进行搭建,所述的CUDA版本为CUDA4.0,
第2,准备如下软件包:
Microsoft Visual Studio 2010,简称为VS2010,
Driver:devdriver_4.0_winvista-win7_32_275.33_notebook.exe,为显卡驱动
CUDA Toolkit v4.0:cudatoolkit_4.0.17_win_32.msi,
CUDA SDK v4.0:gpucomputingsdk_4.0.19_win_32.exe,
Visual Assist X,为VS2010的插件助手,
Parallel Nsight v2.0:Parallel_Nsight_Win32_2.0.11166.msi,
并按照如下的软件安装顺序进行安装:VS2010及其助手Visual Assist X、Driver、CUDA Toolkit v4.0和CUDA SDK v4.0,最后安装Parallel Nsight v2.0;
第3,在软件包安装结束后,最主要也最繁琐的工作是进行环境变量的配置、函数库的生成和文本高亮支持的配置;完成环境变量的配置后,进行文本高亮支持的配置,具体过程为,在VS2010中添加对.cu文件的支持并利用Visual AssistX支持CUDA函数的高亮;
第4,最后使用Visual Studio 2010打开CUDA_SDK_PATH\C\common目录下的解决方案文件cutil_vs2010.sln和CUDA_SDK_PATH\share\shrUtils_vs2010.sln,选择批生成;至此,CUDA平台已全部搭建完毕。
5.一种用于图像压缩的基于CUDA架构的DWT算法的加速实现方法,其特征是:所述方法通过以下步骤实现:
步骤一、分析CUDA平台的软件体系与硬件体系,并在Windows操作系统下基于VS2010搭建CUDA平台;其中,CUDA是指统一计算设备架构,为Compute Unified DeviceArchitecture的简称;VS2010指Microsoft Visual Studio 2010版本,是微软公司推出的Windows平台应用程序开发环境;
步骤二、将DWT算法映射为两层CUDA执行模型的内核函数,得到改进的DCT算法,实现改进的DWT算法在GPU端运行;DWT算法是指离散小波变换,GPU是指图像处理器;
步骤三、在CUDA平台上运行改进的DWT算法。
6.根据权利要求5所述的用于图像压缩的基于CUDA架构的DWT算法的加速实现方法,其特征是:步骤二所述的将改进的DWT算法映射为两层CUDA执行模型的内核函数,实现改进的DWT算法在GPU端运行是指根据图像的大小以及GPU的计算能力确定分块方案,每一行间并行执行,行中的每个元素间是并行执行的,则改进的DWT算法映射到CUDA的两层CUDA执行模型上,具体为:
首先,进行CUDA行核函数的具体实现过程为:
第1,定义1个共享存储器CurBlockLocal1[ImageWidth/2];
第2,每个线程根据自己的Id读取显存上每一行中一半的数据到共享存储器CurBlockLocal1中,进行同步;
第3,每个线程根据自己的Id对共享存储器CurBlockLocal1中的数据做1维DWT变换,每个线程计算1个系数,同时将计算好的系数存储到显存上,进行同步;
然后,对于线程分配,根据分块方式和CUDA执行模型的对应方式,可以为每一行分配2个CUDAblock,每个CUDAblock中分配ImageWidth/2个线程;具体线程分配方式如下:
dim3 threads1(ImageWidth/32,16);//block中线程的分配
dim3 grid1(2,ImageWidth);//gird中block的分配;
最后,根据行和列的核函数执行方式相同的原理,按照上述方法执行列的核函数执行方式。
7.根据权利要求5或6所述的用于图像压缩的基于CUDA架构的DWT算法的加速实现方法,其特征是:步骤三所述的在CUDA平台上实现改进的DWT算法具体过程为:输入图像;之后将byte类型转换成float类型;之后分配存储空间;之后内存拷贝到显卡;之后进行线程分配;之后CUDAkernelDWTTow;之后CUDAkernelDWTColumn;之后IDWT Kernel;之后显卡拷贝到内存;之后将float类型转换成byte类型;之后生成图像;之后计算PSNR和输出时间;之后释放存储空间;最后结束。
8.根据权利要求7所述的用于图像压缩的基于CUDA架构的DWT算法的加速实现方法,其特征是:步骤一所述的在Windows操作系统下基于VS2010搭建CUDA平台的具体过程为:
第1,所述的Windows操作系统选为WIN732位旗舰版操作系统,程序开发环境基于Visual Studio 2010进行搭建,所述的CUDA版本为CUDA4.0,
第2,准备如下软件包:
Microsoft Visual Studio 2010,简称为VS2010,
Driver:devdriver_4.0_winvista-win7_32_275.33_notebook.exe,为显卡驱动
CUDA Toolkit v4.0:cudatoolkit_4.0.17_win_32.msi,
CUDA SDK v4.0:gpucomputingsdk_4.0.19_win_32.exe,
Visual Assist X,为VS2010的插件助手,
Parallel Nsight v2.0:Parallel_Nsight_Win32_2.0.11166.msi,
并按照如下的软件安装顺序进行安装:VS2010及其助手Visual Assist X、Driver、CUDA Toolkit v4.0和CUDA SDK v4.0,最后安装Parallel Nsight v2.0;
第3,在软件包安装结束后,最主要也最繁琐的工作是进行环境变量的配置、函数库的生成和文本高亮支持的配置;完成环境变量的配置后,进行文本高亮支持的配置,具体过程为,在VS2010中添加对.cu文件的支持并利用Visual Assist X支持CUDA函数的高亮;
第4,最后使用Visual Studio 2010打开CUDA_SDK_PATH\C\common目录下的解决方案文件cutil_vs2010.sln和CUDA_SDK_PATH\share\shrUtils_vs2010.sln,选择批生成;至此,CUDA平台已全部搭建完毕。
CN201811074849.8A 2018-09-14 2018-09-14 用于图像压缩的基于cuda架构的dct算法和dwt算法的加速实现方法 Active CN109451322B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811074849.8A CN109451322B (zh) 2018-09-14 2018-09-14 用于图像压缩的基于cuda架构的dct算法和dwt算法的加速实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811074849.8A CN109451322B (zh) 2018-09-14 2018-09-14 用于图像压缩的基于cuda架构的dct算法和dwt算法的加速实现方法

Publications (2)

Publication Number Publication Date
CN109451322A true CN109451322A (zh) 2019-03-08
CN109451322B CN109451322B (zh) 2021-02-02

Family

ID=65530591

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811074849.8A Active CN109451322B (zh) 2018-09-14 2018-09-14 用于图像压缩的基于cuda架构的dct算法和dwt算法的加速实现方法

Country Status (1)

Country Link
CN (1) CN109451322B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110135569A (zh) * 2019-04-11 2019-08-16 中国人民解放军国防科技大学 一种异构平台神经元定位三级流水并行方法、系统及介质
CN110704768A (zh) * 2019-10-08 2020-01-17 支付宝(杭州)信息技术有限公司 基于图形处理器的网页渲染方法以及装置
CN112926202A (zh) * 2021-02-23 2021-06-08 中国地质大学(北京) 一种基于CUDA Fortran的短波辐射模式加速方法

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102404561A (zh) * 2010-09-14 2012-04-04 盛乐信息技术(上海)有限公司 在cuda上实现mpeg4i帧编码的方法
CN102547291A (zh) * 2012-02-08 2012-07-04 中国电影科学技术研究所 基于fpga的jpeg2000图像解码装置及方法
CN102695060A (zh) * 2012-06-13 2012-09-26 西安电子科技大学 基于jpeg2000标准的自适应存储器和存储方法
CN103198451A (zh) * 2013-01-31 2013-07-10 西安电子科技大学 一种用gpu通过分块实现快速小波变换的方法
US8537899B1 (en) * 2010-02-19 2013-09-17 Otoy, Inc. Fast integer and directional transforms for data encoding
CN103414901A (zh) * 2013-08-26 2013-11-27 江苏新瑞峰信息科技有限公司 一种快速jpeg2000图像压缩系统
CN104125466A (zh) * 2014-07-10 2014-10-29 中山大学 一种基于gpu的hevc并行解码方法
CN105338358A (zh) * 2014-07-25 2016-02-17 阿里巴巴集团控股有限公司 对图像进行解码的方法及装置
US9762898B2 (en) * 2010-02-01 2017-09-12 Kelly Y Kishore Method and system for parallelizing video compression
CN107333136A (zh) * 2017-06-26 2017-11-07 西安万像电子科技有限公司 图像编码方法和装置
CN107483964A (zh) * 2017-08-07 2017-12-15 山东交通学院 一种利用gpu实现jpeg2000解压缩算法中逆小波变换的加速方法

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9762898B2 (en) * 2010-02-01 2017-09-12 Kelly Y Kishore Method and system for parallelizing video compression
US8537899B1 (en) * 2010-02-19 2013-09-17 Otoy, Inc. Fast integer and directional transforms for data encoding
CN102404561A (zh) * 2010-09-14 2012-04-04 盛乐信息技术(上海)有限公司 在cuda上实现mpeg4i帧编码的方法
CN102547291A (zh) * 2012-02-08 2012-07-04 中国电影科学技术研究所 基于fpga的jpeg2000图像解码装置及方法
CN102695060A (zh) * 2012-06-13 2012-09-26 西安电子科技大学 基于jpeg2000标准的自适应存储器和存储方法
CN103198451A (zh) * 2013-01-31 2013-07-10 西安电子科技大学 一种用gpu通过分块实现快速小波变换的方法
CN103414901A (zh) * 2013-08-26 2013-11-27 江苏新瑞峰信息科技有限公司 一种快速jpeg2000图像压缩系统
CN104125466A (zh) * 2014-07-10 2014-10-29 中山大学 一种基于gpu的hevc并行解码方法
CN105338358A (zh) * 2014-07-25 2016-02-17 阿里巴巴集团控股有限公司 对图像进行解码的方法及装置
CN107333136A (zh) * 2017-06-26 2017-11-07 西安万像电子科技有限公司 图像编码方法和装置
CN107483964A (zh) * 2017-08-07 2017-12-15 山东交通学院 一种利用gpu实现jpeg2000解压缩算法中逆小波变换的加速方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
李玉峰等: "基于GPGPU的JEPG2000图像压缩方法", 《电子器件》 *
白兆峰: "基于GPU的JPEG2000图像压缩编码技术的研究", 《中国优秀硕士学位论文全文数据库》 *
阮军,韩定定: "基于CUDA的DCT快速变换实现方法", 《微电子学与计算机》 *
黄琮轩: "基于GPU的离散余弦变换并行程序设计", 《中国优秀硕士学位论文全文数据库》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110135569A (zh) * 2019-04-11 2019-08-16 中国人民解放军国防科技大学 一种异构平台神经元定位三级流水并行方法、系统及介质
CN110704768A (zh) * 2019-10-08 2020-01-17 支付宝(杭州)信息技术有限公司 基于图形处理器的网页渲染方法以及装置
CN110704768B (zh) * 2019-10-08 2022-03-18 支付宝(杭州)信息技术有限公司 基于图形处理器的网页渲染方法以及装置
CN112926202A (zh) * 2021-02-23 2021-06-08 中国地质大学(北京) 一种基于CUDA Fortran的短波辐射模式加速方法

Also Published As

Publication number Publication date
CN109451322B (zh) 2021-02-02

Similar Documents

Publication Publication Date Title
Liang et al. High‐Level Synthesis: Productivity, Performance, and Software Constraints
EP3713093A1 (en) Data compression for a neural network
DE102019133028A1 (de) Für neuronale netzwerke geeignetes effizientes matrixformat
CN106095588B (zh) 基于gpgpu平台的cdvs提取过程加速方法
CN109451322A (zh) 用于图像压缩的基于cuda架构的dct算法和dwt算法的加速实现方法
Enfedaque et al. Implementation of the DWT in a GPU through a register-based strategy
DE102018110607A1 (de) Verallgemeinerte Beschleunigung von Matrix-Multiplikations-und-Akkumulations-Operationen
DE102021102589A1 (de) Berechnungsgraph-optimierung
WO2023082576A1 (zh) 面向神经网络计算的分布式数据路由的建模方法和装置
DE102021104561A1 (de) Asynchrone datenbewegungspipeline
DE102023105565A1 (de) VERFAHREN UND VORRICHTUNG FÜR EFFIZIENTEN ZUGRIFF AUF MEHRDIMENSIONALE DATENSTRUKTUREN UND/ODER ANDERE GROßE DATENBLÖCKE
Mueller‐Roemer et al. Ternary sparse matrix representation for volumetric mesh subdivision and processing on GPUs
Wan et al. Efficient inter-device task scheduling schemes for multi-device co-processing of data-parallel kernels on heterogeneous systems
Jiang et al. Optimizing small channel 3D convolution on GPU with tensor core
Vanegas et al. Multi-port abstraction layer for FPGA intensive memory exploitation applications
Liu et al. Parallel reconstruction of neighbor-joining trees for large multiple sequence alignments using CUDA
Liu et al. Parallel program design for JPEG compression encoding
Lee et al. Implementing algorithms for signal and image reconstruction on graphical processing units
Cao et al. Performance and portability with opencl for throughput-oriented hpc workloads across accelerators, coprocessors, and multicore processors
Incardona et al. Distributed sparse block grids on GPUs
Zhou et al. A Parallel Scheme for Large‐scale Polygon Rasterization on CUDA‐enabled GPUs
Gómez-Luna et al. Load balancing versus occupancy maximization on graphics processing units: The generalized hough transform as a case study
Ma et al. Developing a Multi‐GPU‐Enabled Preconditioned GMRES with Inexact Triangular Solves for Block Sparse Matrices
Appelhans et al. Leveraging NVLINK and asynchronous data transfer to scale beyond the memory capacity of GPUs
Gutierrez et al. Memory locality exploitation strategies for FFT on the CUDA architecture

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant