GPGPU、GPU、CUDA

GPGPU是一种编程模式,采用图形编程语言,使用GPU进行一些图形计算。

GPU是显卡。

CUDA,是一个利用NVIDIA GPU计算能力的平台,是一种并行计算架构。

GPU并行化处理

与CPU相比,GPU具有以下优势:强大的并行处理能力和高效率的数据传输能力。其中,并行性主要体现了指令级、数据级和任务级三个层次。高效率的数据传输主要体现在两个方面: GPU与显存之间的带宽为:16GB/s;系统内存到显存的带宽为:4GB/s。

综上所述,GPU比较适合处理具有下面特性的应用程序:1、大数据量;2、高并行性;3、低数据耦合;4、高计算密度;5、与CPU交互比较少。

数字图像处理的并行化分析

数字图像处理算法多种多样,但从数据处理的层面来考虑,可以分为:像素级处理、特征级处理和目标级处理三个层次。

(1)像素级图像处理

  像素级处理,即由一幅像素图像产生另一幅像素图像,处理数据大部分是几何的、规则的和局部的。根据处理过程中的数据相关性,像素级处理又可进一步分为点运算、局部运算和全局运算。

(2)特征级图像处理

  特征级处理是在像素图像产生的一系列特征上进行的操作。常用的特征包括:形状特征、纹理特征、梯度特征和三维特征等,一般采用统一的测度,如:均值、方差等,来进行描述和处理,具有在特征域内进行并行处理的可能性。但是,由于其特征具有象征意义和非局部特性,在局部区域并行的基础上,需要对总体进行处理。利用GPU实现并行化处理的难度比较大。

(3)目标级图像处理

  目标级处理是对由一系列特征产生的目标进行操作。由于目标信息具有象征意义和复杂性,通常是利用相关知识进行推理,得到对图像的描述、理解、解释以及识别。由于其数据之间相关性强,且算法涉及到较多的知识和人工干预,并行处理的难度也比较大。

  由此可见,整个图像处理的结构可以利用一个金字塔模型来表示。在底层,虽然处理的数据量巨大,但由于局部数据之间的相关性小,且较少的涉及知识推理和人工干预,因此大多数算法的并行化程度比较高。当沿着这个金字塔结构向高层移动时,随着抽象程度的提高,大量原始数据减少,所需的知识和算法的复杂性逐层提高,并行化处理的难度也逐渐加大。

  由于绝大部分的图像处理算法是在像素级进行的,且GPU的SIMD并行流式处理在进行像素级的图像处理时具有明显的优势,而特征级和目标级处理无论是从数据的表达还是从算法自身的实现来说,都很难实现GPU并行化。

使用GPU提高OpenCV的图像处理运算速度

OpenCV中提供了GPU模块,可以用来加速图像处理的相关运算。OpenCV的GPU模块是使用CUDA编写的。

OpenCV中GPU模块的调用点击这里,使用GPU模块需要开启WITH_CUDA选项。

OpenCV官方关于CUDA的说明及范例点击这里

关于如何在实时图像处理中使用OpenCV与GPU可以参考这篇文章

GPU 图像并行处理相关推荐

  1. 图书《图像并行处理技术》简介

    本书从图像处理的特点出发,以算法与系统实现之间的联系为主线,系统地论述了图像并行处理技术.具体内容包括图像并行处理技术的基本概念.图像并行处理系统工程.图像处理算法与算法的并行数据结构.流水线型图像并 ...

  2. 《图像并行处理技术》图书详细资料信息 / china

    定价 : ¥18.00 普通会员 : ¥16.20 1-3星会员: ¥15.84 4-5星会员: ¥15.30 促销活动 本书从图像处理的特点出发,以算法与系统实现之间的联系为主线,系统地论述了图像并 ...

  3. Yolov3(Mxnet)测试加速:GPU图像预处理

    深度学习的数据标准化操作在测试的也要遵守,但是Mxnet中Gluoncv使用CPU的串行数据标准化,对于某些实时性要求较高的任务,在CPU使用率较高时,数据标准化的耗时严重拖累了网络的预测速度.我们以 ...

  4. Python使用pyopencl在GPU上并行处理批量判断素数

    扩展库pyopencl使得可以在Python中调用OpenCL的并行计算API.OpenCL(Open Computing Language)是跨平台的并行编程标准,可以运行在个人电脑.服务器.移动终 ...

  5. Python使用pycuda在GPU上并行处理批量判断素数

    借助于扩展库pycuda,可以在Python中访问NVIDIA显卡提供的CUDA并行计算API,使用非常方便.安装pycuda时要求已正确安装合适版本的CUDA和Visual Studio(注意,并不 ...

  6. CPU和GPU的区别

    个人认为CPU和GPU各有自己的适应领域.CPU(Central Processing Unit)计算核心较少,通常是双核.四核.八核,但是拥有大量的共享缓存.预测.乱序执行等优化,可以做逻辑非常复杂 ...

  7. python gpu编程_Python笔记_第四篇_高阶编程_进程、线程、协程_5.GPU加速

    Numba:高性能计算的高生产率 在这篇文章中,笔者将向你介绍一个来自Anaconda的Python编译器Numba,它可以在CUDA-capable GPU或多核cpu上编译Python代码.Pyt ...

  8. 编译GDAL支持OpenCL使用GPU加速

    ##前言 GDAL库中提供的gdalwarp支持各种高性能的图像重采样算法,图像重采样算法广泛应用于图像校正,重投影,裁切,镶嵌等算法中,而且对于这些算法来说,计算坐标变换的运算量是相当少的,绝大部分 ...

  9. GPU架构(三十三)

    一.导言 对于大多数图形渲染开发者,GPU是既熟悉又陌生的部件,熟悉的是每天都需要跟它打交道,陌生的是GPU就如一个黑盒,不知道其内部硬件架构,更无从谈及其运行机制. 本文以NVIDIA作为主线,将试 ...

最新文章

  1. Design Pattern - Adapter Pattern
  2. 结对开发石家庄地铁系统
  3. program collections
  4. react connect
  5. MSP430F5529 DriverLib 库函数学习笔记(五)定时器A
  6. centos8 yum太慢_Yum 慢到无法忍受?那是因为你没有这么做
  7. Stencil Buffer(模板缓冲区)
  8. java用多线程实现爬虫_JAVA 多线程爬虫实例详解
  9. node.val java_LeetCode——21. 合并两个有序链表(Java)
  10. 高数上册下册答案详解第七版高数同济7版上册下册答案高等数学答案吧
  11. Android Ble蓝牙中如何获取RawData ,UUID,Major,Minor,Measured power at 1 meter的数据。
  12. 高一下学期计算机考试知识点,高中数学知识点总结
  13. CentOS 5遇到Partition table entries are not in disk order
  14. Matlab实现数字转换为字符串
  15. PXE自动安装Linux系统
  16. Linux从入门到放弃 docker
  17. 我的世界神秘时代安卓java版_我的世界神秘时代4
  18. 编写PE文件解析器(三)
  19. JavaScript,jQuery,Tomcat,Http,Servlet
  20. 零基础如何去入门学习UI设计?学习步骤是什么?

热门文章

  1. 他,跳槽季用这样的方法复习进了阿里
  2. Oracle数据库之基本查询
  3. strust2控制标签(二) merge标签,generator标签,subset标签,sort标签
  4. java开发微信公众平台(一)-- 服务器配置
  5. 【JavaSE02】Java基本语法-练习
  6. 用户与订单之间的关系_wms与oms、tms的上下游关系
  7. (SpringMVC)RestFul和Controller
  8. html组态图动态拖拽,基于HTML5的Drag and Drop生成图片Base64信息
  9. 计算机网络按信号频带占用方式分为,《计算机网络及组网技术》第2阶段测试题....
  10. java 文件上传 jar_JavaWeb 之 使用 commons-fileupload.jar 实现文件上传