CN112598566A - 基于gpu的cuda的图像处理方法、装置和存储介质 - Google Patents

基于gpu的cuda的图像处理方法、装置和存储介质 Download PDF

Info

Publication number
CN112598566A
CN112598566A CN202011558675.XA CN202011558675A CN112598566A CN 112598566 A CN112598566 A CN 112598566A CN 202011558675 A CN202011558675 A CN 202011558675A CN 112598566 A CN112598566 A CN 112598566A
Authority
CN
China
Prior art keywords
gpu
parallelization
image
module
texture
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.)
Pending
Application number
CN202011558675.XA
Other languages
English (en)
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.)
Southern Power Grid Digital Grid Research Institute Co Ltd
Hainan Digital Power Grid Research Institute of China Southern Power Grid Co Ltd
Original Assignee
Hainan Digital Power Grid Research Institute of China Southern Power Grid Co Ltd
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 Hainan Digital Power Grid Research Institute of China Southern Power Grid Co Ltd filed Critical Hainan Digital Power Grid Research Institute of China Southern Power Grid Co Ltd
Priority to CN202011558675.XA priority Critical patent/CN112598566A/zh
Publication of CN112598566A publication Critical patent/CN112598566A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Image Processing (AREA)

Abstract

本发明提供一种基于GPU的CUDA的图像处理方法、装置和存储介质,所述方法包括以下步骤:S1、初始化CUDA;S2、通过纹理拾取函数进行纹理参数拾取,将纹理添加至待处理图像上;S3、将步骤S2所获得图像数据传输至GPU,GPU基于所接收数据通过CUDA完成图像处理的并行化核心程序;S4、将步骤S3所获得图像数据写入图像文件。本发明相对于现有的计算机图像转换处理技术转换速率更快,处理效率更高,并且转换后的图像更加精细。

Description

基于GPU的CUDA的图像处理方法、装置和存储介质
技术领域
本发明涉及图像数据处理技术领域,尤其涉及一种基于GPU的CUDA的图像处理方法、装置和存储介质。
背景技术
随着数字电网的建设不断推进,海量的电网数据给电网的大数据挖掘工作提供了大量的机遇和挑战,人们通过数据可视化,利用计算机图像转换技术将电网数据转换为可视化图像,从而便于直观的呈现数据,有利于高效的进行大规模的数据分析,以提高电网管理业务水平。传统的计算机图像转换技术中,通常通过读取全局内存或常量内存以得到所需要的参数,从而进行计算机图像转换,耗费时间较长,图像处理效率有待进一步提升。
发明内容
鉴于此,本发明的目的在于提供一种基于GPU的CUDA的图像处理方法、装置和存储介质,以克服或至少部分解决现有技术所存在的上述问题。
本发明第一方面提供一种基于GPU的CUDA的图像处理方法,所述方法包括以下步骤:
S1、初始化CUDA;
S2、通过纹理拾取函数进行纹理参数拾取,将纹理添加至待处理图像上;
S3、将步骤S2所获得图像数据传输至GPU,GPU基于所接收数据通过CUDA完成图像处理的并行化核心程序;
S4、将步骤S3所获得图像数据写入图像文件。
进一步的,所述步骤S2具体包括以下步骤:
S21、计算归一化纹理坐标;
S22、对归一化纹理坐标进行变换。
进一步的,步骤S3中,所述并行化核心程序具体包括:
S31、CPU获取步骤S2所获得图像数据,定义一个位图阵列数组;
S32、CPU进行内存分配,完成内存分配后复制图像位图数据;
S33、设置纹理参数,基于位图阵列数组绑定数组纹理;
S34、将前置步骤所获得数据输入GPU,由CUDA完成并行化核心程序。
进一步的,所述步骤S4中将步骤S3所获得的图像数据写入图像文件具体包括以下步骤:
S41、判断GPU并行化核心程序是否运行完毕,若运行完毕则进行下一步骤,否则在下一指令周期重新执行本步骤;
S42、主机侧为所输出结果数据分配存储器作为缓冲区;
S43、从GPU设备侧复制并行化核心程序输出结果数据到主机侧缓冲区;
S44、从缓冲区中提取并行化核心程序输出结果写入图片文件。
本发明第二方面提供一种基于GPU的CUDA的图像处理装置,所述装置包括初始化模块、纹理拾取模块、传输模块和写入模块,
所述初始化模块用于初始化CUDA;
所述纹理拾取模块用于通过纹理拾取函数进行纹理参数拾取,将纹理添加至待处理图像上;
所述传输模块用于将纹理拾取模块所输出图像数据传输至GPU;
所述GPU用于基于所接收数据通过CUDA完成并行化核心程序;
所述写入模块用于将并行化核心程序所获得图像数据写入图像文件。
进一步的,所述纹理拾取模块具体包括:
计算子模块,用于计算归一化纹理坐标;
变换子模块,用于对归一化纹理坐标进行变换。
进一步的,所述装置具体还包括:
获取模块,用于通过CPU获取纹理拾取模块所输出图像数据,定义一个位图阵列数组;
分配模块,用于通过CPU进行内存分配,完成内存分配后复制图像位图数据;
参数设置模块,用于设置纹理参数;
绑定模块,用于基于位图阵列数组绑定数组纹理;
输入模块,用于将所获得的数据输入GPU使GPU完成并行化核心程序。
进一步的,所述写入模块具体包括:
判断子模块,用于判断GPU并行化核心程序是否运行完毕,若运行完毕则向缓冲分配子模块发送信号,否则在下一指令周期重新进行判断;
缓冲分配子模块,用于在主机侧为并行化核心程序所输出结果数据分配存储器作为缓冲区;
复制子模块,用于从GPU设备侧复制并行化核心程序输出结果数据到主机侧的缓冲区;
写入子模块,用于从主机侧缓冲区中提取并行化核心程序输出结果写入图片文件。
本发明第三方面提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序在被处理器执行时,实现前述第一方面所述的方法。
与现有技术相比,本发明的有益效果是:
1)不受访问模式约束,可以实现高速缓存;
2)对寻址计算的延迟起到更好的隐藏效果,有助于改善应用程序执行随机访问数据的性能;
3)通过CUDA实现图像处理的并行化核心程序,可以省去大量时间进行线程间通信,进而提升处理速率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的优选实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的基于GPU的CUDA的图像处理方法整体流程示意图。
图2是本发明另一实施例提供的基于GPU的CUDA的图像处理装置整体结构示意图。
图中,1初始化模块,2纹理拾取模块,3传输模块,4写入模块,5GPU。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所列举实施例只用于解释本发明,并非用于限定本发明的范围。
参照图1,本发明实施例提供一种基于GPU的CUDA的图像处理方法,所述方法包括以下步骤:
S1、初始化CUDA(Compute Unified Device Architecture)。
S2、通过纹理拾取函数进行纹理参数拾取,将纹理添加至待处理图像上。
步骤S2中,纹理用于添加图像的细节,可以使其显示效果更佳精细而不用指定额外的顶点。为了将纹理映射到待处理图像上,需要指定图像的顶点与纹理的对应关系。纹理坐标在x轴和y轴上,范围为0到1之间,图形顶点也是0到1,通过指定纹理环绕方式和纹理过滤,即可将纹理添加至待处理图像上。
S3、将步骤S2所获得图像数据传输至GPU,GPU基于所接收数据通过CUDA完成图像处理的并行化核心程序。
S4、将步骤S3所获得图像数据写入图像文件。
作为一种可选的实施例,所述步骤S2具体包括以下步骤:
S21、计算归一化纹理坐标。
S22、对归一化纹理坐标进行变换。
一些实施方式中,所述步骤S21中计算归一化纹理坐标具体包括以下步骤:
S211、计算整数类型坐标x、y,x、y的表达式分别为:
x=blockIdx.x*blockDim.x+threadIdx.x
y=blockIdx.y*blockDim.y+threadIdx.y
其中blockIdx表示一个线程块的索引,blockDim表示线程块的大小,threadIdx表示一个线程的索引。
S212、计算浮点类型纹理坐标u、v,u、v的表达式分别为:
u=x/width
v=y/height
其中width为待处理图像的宽度,height为待处理图像的高度。
在此基础上,所述步骤S22中对归一化纹理坐标进行变换具体包括以下步骤:
S221、分别对纹理坐标u、v的赋值减去0.5;
S222、计算纹理坐标u、v相应的纹理变换坐标tu、tv,tu、tv的表达式分别为:
tu=u*cosf(theta)-v*sinf(theta)+0.5
tv=v*cosf(theta)-u*sinf(theta)+0.5。
作为一种可选的实施例,步骤S3中,所述并行化核心程序具体包括:
S31、CPU获取步骤S2所获得图像数据,定义一个位图阵列数组。
S32、CPU进行内存分配,完成内存分配后复制图像位图数据。
一些实施方式中,步骤S32中内存统一采用Apache Arrow格式进行分配。
S33、设置纹理参数,基于位图阵列数组绑定数组纹理。
其中,设置纹理参数可以通过函数glTexParameteri实现;绑定数组纹理可以通过函数glBindTexture实现。
S34、将前置步骤所获得数据输入GPU,由CUDA完成并行化核心程序。
作为一种可选的实施例,所述步骤S4中将步骤S3所获得图像数据写入图像文件具体包括以下步骤:
S41、判断GPU并行化核心程序是否运行完毕,若运行完毕则进行下一步骤,否则在下一指令周期重新执行本步骤。
S42、主机侧为所输出结果数据分配存储器作为缓冲区。
S43、从GPU设备侧复制并行化核心程序输出结果数据到主机侧缓冲区。
S44、从缓冲区中提取并行化核心程序输出结果写入图片文件。
上述实施例所提供的基于GPU的CUDA的图像处理方法,其拾取纹理内存的方式与现有的图像转换技术读取全局或常量内存的方式相比,具有以下优点:
a)有高速缓存,如果CUDA数组中的纹理在片上的高速缓存中,则可以潜在的获得较高带宽;
b)不受访问模式的约束。全局或常量内存读取必须遵循相应访存模式才能获得好的性能。如全局内存在单个指令中将32-位、64-位或128-位从全局内存读取到寄存器,单个指令读取的位数要尽量多;另外每个半warp中同时访问全局内存地址的每个线程应该进行排列,以便内存访问可以合并到单个邻近的、对齐的内存访问中;
c)寻址计算的延迟隐藏的更好,可改善应用程序执行随机访问数据的性能;
d)打包的数据可以在单个操作中广播到多个独立变量中;
e)8-位和16-位整数输入数据可以有选择地转化为[0.0,1.0]或[-1.0,1.0]区间内的32位浮点值。
另外,CUDA由于共享寄存器的存在,其在保存共用计数器或线程块内的公共结果时,可以省去大量进行线程间通信,相应的速率会提升很多。
基于与前述方法实施例相同的发明构思,本发明另一实施例提供一种基于GPU的CUDA的图像处理装置。
如图2所示,所述装置包括初始化模块1、纹理拾取模块2、传输模块3和写入模块4。
其中,所述初始化模块1用于初始化CUDA。
所述纹理拾取模块2用于通过纹理拾取函数进行纹理参数拾取,将纹理添加至待处理图像上。
所述传输模块3用于将纹理拾取模块2所输出图像数据传输至GPU 5。
所述GPU 5用于基于所接收数据通过CUDA完成并行化核心程序。
所述写入模块4用于将并行化核心程序所获得图像数据写入图像文件。
可选的,所述纹理拾取模块2具体包括:
计算子模块,用于计算归一化纹理坐标;
变换子模块,用于对归一化纹理坐标进行变换。
可选的,所述装置具体还包括:
获取模块,用于通过CPU获取纹理拾取模块2所输出图像数据,定义一个位图阵列数组。
分配模块,用于通过CPU进行内存分配,完成内存分配后复制图像位图数据。
参数设置模块,用于设置纹理参数。
绑定模块,用于基于位图阵列数组绑定数组纹理。
输入模块,用于将所获得的数据输入GPU使GPU完成并行化核心程序。
可选的,所述写入模块4具体包括:
判断子模块,用于判断GPU并行化核心程序是否运行完毕,若运行完毕则向缓冲分配子模块发送信号,否则在下一指令周期重新进行判断。
缓冲分配子模块,用于在主机侧为并行化核心程序所输出结果数据分配存储器作为缓冲区。
复制子模块,用于从GPU设备侧复制并行化核心程序输出结果数据到主机侧的缓冲区。
写入子模块,用于从主机侧缓冲区中提取并行化核心程序输出结果写入图片文件。
上述装置实施例用于执行前述方法实施例所述的方法,其技术原理和有益效果可参照前述方法实施例,在此不再赘述。
本发明另一实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序在被处理器执行时,实现前述方法实施例所述的方法。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (9)

1.一种基于GPU的CUDA的图像处理方法,其特征在于,所述方法包括以下步骤:
S1、初始化CUDA;
S2、通过纹理拾取函数进行纹理参数拾取,将纹理添加至待处理图像上;
S3、将步骤S2所获得图像数据传输至GPU,GPU基于所接收数据通过CUDA完成图像处理的并行化核心程序;
S4、将步骤S3所获得图像数据写入图像文件。
2.根据权利要求1所述的一种基于GPU的CUDA的图像处理方法,其特征在于,所述步骤S2具体包括以下步骤:
S21、计算归一化纹理坐标;
S22、对归一化纹理坐标进行变换。
3.根据权利要求1所述的一种基于GPU的CUDA的图像处理方法,其特征在于,所述步骤S3具体包括以下步骤:
S31、CPU获取步骤S2所获得图像数据,定义一个位图阵列数组;
S32、CPU进行内存分配,完成内存分配后复制图像位图数据;
S33、设置纹理参数,基于位图阵列数组绑定数组纹理;
S34、将前置步骤所获得数据输入GPU,由CUDA完成并行化核心程序。
4.根据权利要求1所述的一种基于GPU的CUDA的图像处理方法,其特征在于,所述步骤S4中将步骤S3所获得的图像数据写入图像文件具体包括以下步骤:
S41、判断GPU并行化核心程序是否运行完毕,若运行完毕则进行下一步骤,否则在下一指令周期重新执行本步骤;
S42、主机侧为所输出结果数据分配存储器作为缓冲区;
S43、从GPU设备侧复制并行化核心程序输出结果数据到主机侧缓冲区;
S44、从缓冲区中提取并行化核心程序输出结果写入图片文件。
5.一种基于GPU的CUDA的图像处理装置,其特征在于,所述装置包括初始化模块、纹理拾取模块、传输模块和写入模块,
所述初始化模块用于初始化CUDA;
所述纹理拾取模块用于通过纹理拾取函数进行纹理参数拾取,将纹理添加至待处理图像上;
所述传输模块用于将纹理拾取模块所输出图像数据传输至GPU;
所述GPU用于基于所接收数据通过CUDA完成并行化核心程序;
所述写入模块用于将并行化核心程序所获得图像数据写入图像文件。
6.根据权利要求5所述的一种基于GPU的CUDA的图像处理装置,其特征在于,所述纹理拾取模块具体包括:
计算子模块,用于计算归一化纹理坐标;
变换子模块,用于对归一化纹理坐标进行变换。
7.根据权利要求5所述的一种基于GPU的CUDA的图像处理装置,其特征在于,所述装置具体还包括:
获取模块,用于通过CPU获取纹理拾取模块所输出图像数据,定义一个位图阵列数组;
分配模块,用于通过CPU进行内存分配,完成内存分配后复制图像位图数据;
参数设置模块,用于设置纹理参数;
绑定模块,用于基于位图阵列数组绑定数组纹理;
输入模块,用于将所获得的数据输入GPU使GPU完成并行化核心程序。
8.根据权利要求5所述的一种基于GPU的CUDA的图像处理装置,其特征在于,所述写入模块具体包括:
判断子模块,用于判断GPU并行化核心程序是否运行完毕,若运行完毕则向缓冲分配子模块发送信号,否则在下一指令周期重新进行判断;
缓冲分配子模块,用于在主机侧为并行化核心程序所输出结果数据分配存储器作为缓冲区;
复制子模块,用于从GPU设备侧复制并行化核心程序输出结果数据到主机侧的缓冲区;
写入子模块,用于从主机侧缓冲区中提取并行化核心程序输出结果写入图片文件。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序在被处理器执行时,实现权利要求1-4任一项所述的方法。
CN202011558675.XA 2020-12-25 2020-12-25 基于gpu的cuda的图像处理方法、装置和存储介质 Pending CN112598566A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011558675.XA CN112598566A (zh) 2020-12-25 2020-12-25 基于gpu的cuda的图像处理方法、装置和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011558675.XA CN112598566A (zh) 2020-12-25 2020-12-25 基于gpu的cuda的图像处理方法、装置和存储介质

Publications (1)

Publication Number Publication Date
CN112598566A true CN112598566A (zh) 2021-04-02

Family

ID=75202334

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011558675.XA Pending CN112598566A (zh) 2020-12-25 2020-12-25 基于gpu的cuda的图像处理方法、装置和存储介质

Country Status (1)

Country Link
CN (1) CN112598566A (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111507891A (zh) * 2020-04-14 2020-08-07 云南电网有限责任公司信息中心 基于cuda的数字图像几何变换方法、装置、设备及介质
CN111986070A (zh) * 2020-07-10 2020-11-24 中国人民解放军战略支援部队航天工程大学 基于gpu的vdif格式数据异构并行编帧方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111507891A (zh) * 2020-04-14 2020-08-07 云南电网有限责任公司信息中心 基于cuda的数字图像几何变换方法、装置、设备及介质
CN111986070A (zh) * 2020-07-10 2020-11-24 中国人民解放军战略支援部队航天工程大学 基于gpu的vdif格式数据异构并行编帧方法

Similar Documents

Publication Publication Date Title
KR100902974B1 (ko) 그래픽 파이프 라인에서의 타일 기반 정밀 래스터화
Possa et al. A multi-resolution FPGA-based architecture for real-time edge and corner detection
KR100865811B1 (ko) 저전력 프로그램가능 프로세서
US9436971B2 (en) System, method, and computer program product for accessing multi-sample surfaces
US7091982B2 (en) Low power programmable processor
TWI633447B (zh) 最大化圖形處理器中之平行處理之技術
TWI632524B (zh) 以邊緣爲基礎之覆蓋遮罩壓縮技術
US9665958B2 (en) System, method, and computer program product for redistributing a multi-sample processing workload between threads
CN113012269A (zh) 基于gpu的三维图像数据渲染方法及设备
CN112801855A (zh) 基于图元的渲染任务调度的方法、装置及存储介质
CN112258378A (zh) 基于gpu加速的实时三维测量系统及方法
US10192349B2 (en) Texture sampling techniques
US7389006B2 (en) Auto software configurable register address space for low power programmable processor
US20050253873A1 (en) Interleaving of pixels for low power programmable processor
US9286659B2 (en) Multi-sample surface processing using sample subsets
US7886116B1 (en) Bandwidth compression for shader engine store operations
CN111507891A (zh) 基于cuda的数字图像几何变换方法、装置、设备及介质
CN112598566A (zh) 基于gpu的cuda的图像处理方法、装置和存储介质
CN116263982B (zh) 图形处理器、系统、方法、电子装置及设备
CN108352051A (zh) 促进对计算装置处的捆绑状态的高效图形命令处理
CN114003385A (zh) 一种用于提升后处理性能的并行化方法
US7142214B2 (en) Data format for low power programmable processor
CN116263981B (zh) 图形处理器、系统、装置、设备及方法
CN115393168A (zh) 一种基于多gpu应用的像素拆分方法
CN115525583A (zh) 一种众核处理器的存储器数据访问方法

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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20210402