OpenCL优化应用项目

转载 2013年12月04日 21:35:08

OpenCL优化应用项目

1、计算机视觉相关

基于局部域考察的图像模糊化算法的加速实现(表面模糊,高斯模糊)图像模糊化

图像模糊化算法的特点是根据被考察点的局部域特征对被考察点的颜色进行调整,由于各被考察点的局部域相对独立,这类算法比较适合于用GPU进行优化,我们通过OpenCL并行编程,并行处理各图像点的局部域,能将图像模糊化的速度提高5倍以上。

基于Haar  Cascades分类器的人脸检测方法的OpenCL加速实现

用haar 级联分类器对图像特征进行提取的过程就是将图像分割各成指定尺寸的窗口,对每一个窗口用级联分类器进行过滤,由于各窗口的过滤相互独立,这种算法比较合适于用GPU进行优化,我们通过OpenCL并行编程,对人脸检测中,各个窗口的过滤,积分图的计算 都进行了并行化,总体上能提高人脸检测时间5至10倍。

基于纹理匹配的图像修复算法的加速实现

基于纹理的图像修复过程涉及两个步骤,首先是从待修复区域边界的点集中寻找一个优先级最高的点,然后为该点在整个图像区域中进行搜索,找到最佳匹配方块,这两个步骤的操作都可以表示成对多个独立数据的并发操作,比较适合于用GPU进行优化,我们通过OpenCL编程,优化了基于纹理的图像修复中这两个步骤,使总体的加速比达到5倍以上。

基于非局部均值的图像去噪算法的 OpenCL 加速实现

非局部均值算法通过利用数字图像中大量的冗余信息,建立待去噪像素点邻域与搜索区域的像素点邻域的相似函数,计算搜索区域各像素点与待去噪像素点的相似度权重,然后对搜索区域内的像素点进行加权平均,从而得到去噪点的新的灰度值。该算法在纹理, 边缘信息的保持,以及去噪效果方面是目前最好的两种算法之一,  由于非局部算法是从像素点到像素点逐个进行处理的,故其计算复杂度较大,但对于各个被考察像素点来说,对其领域和搜索区域的操作都是独立的,比较适合GPU加速。我们通过OpenCL编程,对该算法实现了30倍以上的加速比。

三维人体运动视觉重建与跟踪系统的GPU实现

基于视觉信息的三维人体姿态跟踪和三维人体表面点云重建,是计算机视觉领域的重要研究方向,相关技术在虚拟现实、电影动画、智能监控、高级人机交互、体育和医疗等领域具有广阔的应用前景。人体运动三维重建与跟踪的主要目标是从图像和视频信息中恢复和估计以参数表示的人体姿态,求解真实人体在三维世界坐标系中的位置和姿态参数。由于问题的复杂度较高,计算量较大,一直以来都是计算机视觉领域的一个挑战性难题。目前,随着计算机硬件系统的不断升级和计算机视觉理论的继续完善,建立应用级的人体姿态重建系统已成为极具商业前景的研究项目,而GPU计算在计算机视觉中的普及应用为构建实时、快速的人体姿态重建系统提供了契机。

基于OpenCL的Adaboost并行人脸检测算法

Boosting是一个将一个弱学习算法提升为强学习算法的过程,主要应用在机器学习领域中,比如运动目标检测和识别等, Adaboost算法(Adaptive Boosting)是最具代表性的算法之一。Adaboost算法及与之相关的积分图运算过程具有很高的并行性。在基于CPU的算法中,Haar小波基函数的特征值计算是串行求值的过程,与之对应的窗口扫描过程也是串行的。利用GPU的高度并行计算特性,我们可以将Haar小波基特征值计算过程以及窗口扫描过程并行化,从而大大加快算法运行速度。

基于OpenCL的SIFT算法优化设计

在计算机视觉领域,图像匹配是解决许多具有挑战性难题的基石,例如: 物体、场景识别,从多幅图像中恢复3维结构,立体匹配以及动作追踪。 SIFT (Scale-invariant feature transform,尺度不变特征转换) 是一种很好的用来侦测和描述图象局部特征的算法,它通过从训练图象集中提取大量的特征点,从而获得识别的图象的大量信息,最大程度上减小遮挡和噪声对检测图象的影响。我们结合OpenCV提供的API和OpenCL编程,提高了SIFT的执行性能,尤其对高清图片的处理相对CPU更加从容。

图像重采样算法的GPU优化

图像重采样是利用插值手段放大缩小图像,达到目标分辨率。它是图像处理中的基本操作。为了保持图像的准确信息,很多不同的插值算法被开发出来。作为一种基本操作,重采样具有很重要的应用场景和市场基础。我们选用开源的H.264/SVC的参考软件模型中的重采样算法作为优化依据,通过任务并行和数据并行来优化亚像素的插值滤波器运算。

视频图像去隔行算法GPU优化

隔行扫描是视频采集中一种常见的手段,它通常把每帧图像分为两场进行隔行采集,这样可以在阴极射线管为基础的显示器上很好的恢复运动图像。然而,在数字图像领域则会造成隔行失真。因此,很多不同的视频去隔行算法被开发出来,其有助于提高人们对隔行视频的体验效果,在视频处理领域有重要作用。我们选用开源的VLC播放器的视频去隔行算法作为优化依据,通过任务并行和数据并行来优化其各种运算。

基于GPU加速的3D超声图像去噪

三维医学图像在现在的医疗诊断中发挥着很大的作用,但是由于3D超声成像机制使得采集到的3D超声图像都存在着相干斑噪声,影响了医疗诊断,目前已经有一些相应的去噪算法,但是由于数据量太大处理速度很慢,GPU并行计算的出现使得3D超声图像的实时处理成为了可能。我们在3D SRAD算法的基础上提出了基于GPU的并行加速算法,该算法对串行算法进行了细化和分解,利用GPU的并行计算能力,能大大提高计算速度。

基于GPU的HARRIS角点快速提取的研究与实现

角点检测在目标检测跟踪、物体识别、图像配准、3D重建、立体视觉等方面都有着重要的应用。Harris算法就是通过分析图像局部灰度值实现角点提取的一种重要算法,但是该算法利用高斯滤波,有大量卷积和邻域操作,导致运算量较大,实时处理能力较差。结合GPU体系结构特点,我们研究了一种基于GPU实现Harris角点检测的并行算法以达到角点的快速提取,并对提取出的角点进行了角点的匹配,可以利用匹配的角点完成对非接触物体的实时测量和感知,为物联网在物物感知上提供了一种新的方法和手段。如机场、车站旅客的行李体积计算、高速公路车辆超载的判定等等。这种基于harris角点检测的图像匹配技术对非接触测量有着广泛的实际应用前景。

基于GPU的图像小波变换的研究和实现

通过小波分解可以减少图像分辨率,降低图像维度,在降低运算量的同时还可以保持图像特征信息,是很多图像处理应用的基础。但由于其运算复杂,在CPU上的串行实现占用CPU的运算时间长,严重影响了计算效率,涉及到大规模数据处理时更是难于满足实时性要求。结合GPU的结构体系特点,我们研究了小波变换的算法,并将其改造为适于并行计算的矩阵表达形式,实现了一种基于GPU的图像小波变换并行处理,它能有效提升图像分解效率,基本满足大规模数据图像处理的实时性要求。

基于OpenCL的三维模型凸包生成算法

在计算机软件以及电脑游戏中,三维凸包的计算常见于三维模型的碰撞检测、体积近似计算、三维空间分析、几何相似度计算、三维模型分割与分块等诸多应用。对于复杂物体,如何快速精确的构造三维物体的凸包一直是技术难点。为了三维凸包的快速生成和实时计算,我们提出一种基于GPU的三维凸包快速并行生成算法。该算法采用了基于OpenCL 架构的局部内存读写、流数据缩减等加速方法,并通过GPU实现了map、vector、queue等数据结构,更充分地利用了GPU的并行处理能力。实验结果表明,与基于CPU的算法相比,该算法可以精确计算三维凸包,并且可以并且获得13-16倍的计算速度提升。

基于广义势力场的3D骨架抽取算法的GPU OpenCL实现

3D骨架在很多领域内有着重要的应用,如碰撞检测、虚拟导航、科学分析、模式识别、模型渲染、形状分析、表面重建、动作规划等。在进行骨架抽取时,计算量和准确度是解决问题的关键。有着显著的鲁棒性和灵活性的基于广义势力场的曲线骨架抽取算法却因为面临着沉重的计算负荷而无法突出其优势。它是通过模拟物理学中的势力场,寻找3D物体上的势力平衡的点,形成其一维表示—曲线骨架,因此需要计算每个内部点所受的势力总和,计算量大。但是该算法本身具有高度可并行性,若能挖掘其运算能力,提高性能,可得到进一步的广泛应用。

通过分析基于广义势力场的3D骨架抽取算法的并行结构,给出了其CPU和GPU的OpenCL的实现。

2、经典数学问题并行优化

B样条曲线几何插值算法的GPU实现

B样条在计算机图形学中有非常广泛的应用,特别是计算机辅助设计、制造和工程(CAD,CAM,CAE),也是很多业界广泛采用的标准的一部分,例如IGES, STEP,和PHIGS,并且是许多标准计算机图形包的一部分。在实际应用中往往要建立高精度模型,此时数据量和计算量都非常大。几何插值算法由Maekawa等人在2007年时提出,该算法通过寻找插值点到当前生成的B样条参数曲线的最近点,以此为基础迭代调整控制点直到插值点与生成曲线之间的距离达到精度要求。该算法既能用于局部调整,也能用于整条曲线的插值,且具有一定的并行性。

通过分析几何插值算法的并行结构,设计适用于OpenCL框架的计算流程,给出了B样条曲线几何插值算法的GPU实现。

大型非负矩阵分解算法(NMF)的OpenCL加速实现

近些年由于社区网络服务(如微博,人人,甚至是每个网站对相关业务对象附带的推荐系统)需求的激增以及应用范围的不断扩大,网络聚类算法的不断完善与改进成为趋势。人们需要响应更迅速、精度更准确的聚类管理。非负矩阵分解算法(NMF)是解决网络聚类问题的十分有效的办法,对大型网络进行聚类划分的问题可归结为对大型邻接矩阵进行NMF分解,且NMF分解过程涉及很多的矩阵运算和数组归约操作, 可利用GPU给出速度上令人满意的结果。我们通过OpenCL编程,对NMF分解过程中的矩阵乘法,点积,数组求和,矩阵模块度计算等步骤都进行了并行化,使整体NMF过程能达到30倍以上的加速比,我们的加速方法还特别支持对稀疏格式存储矩阵(CSR)的NMF分解。由于该算法在网络上有很大的应用价值,其响应速度和性能是我们应该优先考虑的.

基于OpenCL的自适应快速傅里叶变换(FFT)算法的实现与优化

快速傅里叶变换(Fast Fourier Transform, FFT),是离散傅里叶变换(Discrete Fourier Transform, DFT)的快速算法。采用快速算法能使计算机计算离散傅里叶变换所需要的乘法册数大为减少,特别是被变换的抽样点数N越多,FFT算法计算量的节省就越明显。作为二十世纪科学和工程界最具影响力的十大算法之一,FFT在数字滤波、计算大整数乘法、求解偏微分方程和信号分解等领域有着广泛的应用。

由于FFT算法本身的复杂度,使得在不同的输入规模下,不同的分解策略除了浮点运算次数不一样外,其访存结构也截然不同,因而会导致截然不同的性能。根据GPU的架构特性,Stockham自排序算法没有耗时的位排序操作,适合在GPU上的实现。

基于GPU的稀疏矩阵LU分解

稀疏矩阵LU分解是线性代数中的一项基本运算,在电路仿真、结构力学、经济建模等许多领域有着广泛的应用。这一步骤是当前SPICE (Simulation Program with Integrated Circuit Emphasis)电路仿真器的主要性能瓶颈。稀疏矩阵LU分解的基本算法是G/P left-looking算法。该算法较强的数据依赖性使得它的并行化十分困难。同时,数据间的高依赖性还造成并行G/P left-looking算法只能高效运行在共享内存的计算设备上。但由于共享内存的CPU核数通常很有限(大多数商用CPU都不超过6核),稀疏矩阵LU分解在多核CPU上性能无法进一步提升。GPU具有共享内存的众核结构,且拥有更高的内存带宽,为该问题提供了一个可能的解决方案。

大型常微分方程系统的Parareal算法GPU实现

大型常微分方程在很多学科领域内有着重要的应用,如自动控制、各种电子学装置的设计、弹道的计算、飞机和导弹飞行的稳定性的研究、化学反应过程稳定性的研究等。在求解大型常微分系统时,计算量是解决问题的关键。Parareal算法最初由Lions,Maday和Turinici在2001年提出,它使用粗细两层时间剖分,在粗网格上进行串行的预估,在细网格上实现并行的校正。该算法可实现的并行化规模大,局限小,在许多实际应用中都体现了自身的优势和潜力。

哈密顿回路问题OpenCL解题程序

基于OpenCL API开发图论经典问题——哈密顿回路问题的解题程序。最终程序以一个有向图作为输入,程序在此有向图中寻找哈密顿回路,如果找到,则输出一条找到的哈密顿回路;如果找不到,则输出该有向图不是哈密顿图。

基于DTW算法和OpenCL的子序列检测实现

子序列检测(Subsequence Similarity Search)是许多时间序列数据处理问题中一个重要组成部分。DTW(Dynamic Time Warping)距离在越来越多的研究中被证明是最好的距离度量方式。但传统DTW距离计算在CPU上的实现是子序列检测过程中性能上的主要瓶颈。我们提出了一种基于OpenCL和AMD GPU平台的并行DTW算法实现,得到了在性能上相比于目前最好的CPU实现一到两个数量级的提高。

基于OpenCL二维Mallat算法并行实现

Mallat在图像分解与重构的塔式算法启发下,根据多分辨率理论,提出了小波分解与重构的快速算法,称为Mallat算法。我们实现了基于OpenCL并行的二维Mallat算法,并将其应用于图像融合处理中。

3、数据挖掘与人工智能

基于GPU实现的马尔可夫决策过程(Markov Decision Process)并行值迭代算法

马尔可夫决策过程是一个随机动态系统的最优过程,可以被用来解决包括运筹学、药物决策的制定、强化学习、经济学、机器人导航以及游戏等实际问题。根据马尔可夫决策过程,我们定义了一个“外出游玩”的模型,在这个模型中,只要给出了起始地点,模型会自动生成一条最佳的外出游玩路线。在马尔可夫决策过程中,策略迭代和值迭代是两种典型的实现算法。在这里,我们选择了用值迭代算法来实现“外出游玩”模型。为了能够凸显出GPU的加速能力,我们给出了马尔可夫决策过程值迭代算法的CPU实现和GPU实现。从实验结果可以得出,运用GPU实现模型比用CPU实现模型在性能上提高了很多。

通过分析马尔可夫决策过程值迭代算法,结合“外出游玩”模型,我们给出了基于状态并行的值迭代算法。通过给出基于CPU的值迭代算法的实现和基于GPU并行值迭代算法的实现,GPU强大的加速能力体现的淋漓尽致。

基于GPU的脑网络分析算法加速

探索人脑连接模式和脑部病变的科学研究中,对于大脑复杂网络结构的研究起着至关重要的作用。然而,大规模脑网络建立和分析的计算量巨大,以致于在此前关于脑网络的研究中,大部分工作仅停留在以脑区为单位的粗尺度分析上。这种规模的脑网络通常包含约100个网络节点。而以体素为单位建立的脑网络,可包含2万至10万个节点,因此能够更精确和细致地反映出脑网络的微观结构。为了消除大规模网络分析中的计算瓶颈,我们提出了一种基于AMD GPU的脑体素网络分析的加速平台。

基于GPU的并行支撑矢量机排序学习

排序学习在信息检索等领域发挥着越来越重要的作用, 而通过支撑矢量机的分类方法进行排序也成为机器学习中的一个研究热点。支撑矢量机目前已经有比较成熟的串行快速训练算法, 比如SMO、SVMlight等。 但是, 对于大规模数据挖掘问题, 训练速度仍然是制约支撑矢量机实际应用的瓶颈。我们提出了基于GPU实现的并行支撑矢量机排序学习的优化方案, 扩展了改进的SMO方法的数据并行特性, 并实现了在ATI Stream SDK平台上基于OpenCL标准的计算过程。在LETOR排序学习标准数据集上的测试结果表明, 提出的算法具有很好的加速性能。

基于OpenCL和基因表达式的K-means聚类算法

k均值聚类是最著名的划分聚类算法,由于简洁和效率使得他成为所有聚类算法中最广泛使用的。但由于传统的k均值聚类算法受到初始k个初始聚类中心的限制,为此有人提出并实现了基于基因表达式编程的自动聚类算法(GEP-Cluster),解决了未知聚类个数的问题。然而,GEP-Cluster算法在大数据情况下的收敛速度相对较慢,而该算法的计算适应度函数部分存在着可并行性。为此,我们基于OpenCL开放运算语言,对适应值计算并行化,进而提出一种基于OpenCL和基因表达式编程的聚类算法(OCLGEP-Cluster)。经过实验表明,OCLGEP-Cluster算法对数据规模较大的情况下,算法性能得到较好的提高。

基于OpenCL的并行人工蜂群算法

人工蜂群算法(Artificial Bee Colony)是基于蜜蜂群体觅食行为而提出的一种相对比较新的群体智能算法。该算法模拟了真实世界蜜蜂群体采蜜行为,蜜蜂根据各自的分工进行不同的采蜜活动。在采蜜过程中,由于独有的角色转换机制、以及在自组织模式下实现信息的交流和共享,从而使蜜蜂寻找到最优蜜源。人工蜂群算法具有天然的并行性,我们完成了基于GPU加速的人工蜂群算法并行程序设计和优化,通过采用OpenCL并行编程模型,使得算法得到了很好的加速效果。

基于Ferns的增强现实并行跟踪算法

移动增强现实是虚拟现实在移动通信领域的应用,跟踪注册是增强现实系统的核心技术,而基于自然特征的跟踪注册是目前的研究热点。Random ferns(随机厥)是一种半朴素贝叶斯分类器,通过ferns分类器训练,可以实现稳定且较快速的实时跟踪注册。通过GPU加速可以大大提升训练以及跟踪注册的速度,克服速度瓶颈,使得这项技术可以得到更为广泛的应用,例如移动设备。

大规模图划分算法GPU加速实现

大规模网络划分算法是指一类通过给定图的信息,通过分析这些点的内在联系,从网络中抽象出一些“社区”的算法。我们选择了Newman在他2011年的论文上提到的针对高重叠性网络的划分算法,致力于利用GPU高并发度的特性,对原有的图划分算法进行加速。我们通过分析算法中各层并行度以及剖析算法加速的主要瓶颈,设计出该算法的Opencl-GPU版本。我们在测试中达到了平均10倍的加速比,最高可到20倍。

4、其他

GPU加速的函数图像绘制器

利用OpenCL进行GPU上的并行牛顿迭代法,对任意f(x, y)=0方程绘制图像。可以支持各种函数、解析几何方程图像的绘制。其速度比同等原理的CPU程序快几十倍(使用AMD HD7970显卡与最新四核CPU进行比较),可以极快地绘制非常复杂美丽的函数图像。

基于GPU的软件GPS接收机

软件GPS接收机的快速捕获算法需要大量的FFT操作以及可并行化运算,采用GPU单元可以大大提高软件接收机的工作效率。

雷达模糊函数计算的GPU加速

雷达模糊函数在雷达系统设计中是非常有力的分析工具,可以评估雷达发射信号的距离、多普勒分辨性能。对于高分辨率合成孔径雷达的信号选择,系统分辨率要求信号具有大时宽和大带宽,这样在计算模糊函数时存在计算量大、耗时长的问题,采用普通CPU计算难以满足实时信号处理的需求。从雷达模糊函数的特点出发,其输出形式为二维矩阵,各点计算时具有独立性,符合并行计算中的SIMD(单指令多数据)模型,因此非常适合采用并行方式计算实现。采用基于AMD平台HD7770显卡GPU加速的计算方法,得到了约257倍加速比,大大提高了计算效率,为高分辨率探测雷达波形设计提供了良好的计算支撑。

归一化植被指数(NDVI)算法的并行化实现

NDVI是目前应用最广泛的一种植被指数。植被指数是遥感监测地面植物生长和分布的一种方法。当遥感器测量地面反射光谱时,不仅测得地面植物的反射光谱,还测得土壤的反射光谱。当光照射在植物上时,近红外波段的光大部分被植物反射回来,可见光波段的光则大部分被植物吸收,通过对近红外和红波段反射率的线性或非线性组合,可以消除土壤光谱的影响,得到的特征指数称为植被指数。我们基于APU/GPU异构架构实现了NDVI算法。

转自:http://hc.csdn.net/resources/resource_detail?id=37

OpenCL “速成”冲刺【第一天】

话说软件开发从来没有速成一说,一门语言你学的越快,说明你在别的语言上下个功夫越多,所以这次加了引号,只不过几周之后可能会有一个公司内部OpenCL的考核,虽然本人不需要考核,不过也正好借机整理下之前O...

OpenCL程序编程基本流程

本文转自http://www.photoneray.com/opencl_01/#program OpenCL作为一门开源的异构并行计算语言,设计之初就是使用一种模型来模糊各种硬件差...
  • a5nan
  • a5nan
  • 2016年08月31日 11:31
  • 1529

OpenCL优化应用项目

OpenCL优化应用项目 1、计算机视觉相关 基于局部域考察的图像模糊化算法的加速实现(表面模糊,高斯模糊)图像模糊化 图像模糊化算法的特点是根据被考察点的局部域特征对被考察点的颜色...

OpenCL优化应用项目

1、计算机视觉相关 基于局部域考察的图像模糊化算法的加速实现(表面模糊,高斯模糊)图像模糊化 图像模糊化算法的特点是根据被考察点的局部域特征对被考察点的颜色进行调整,由于各被考察点的局部域...

如何创建openCL项目(VS2012+win764开发环境)

初学openCL,如何建立整个开发环境

不同的应用场景推介使用的OpenCL Paths

(一)不同的应用场景推介使用的OpenCL Paths (1)clEnqueueWriteBuffer()以及clEnqueueReadBuffer() (2)在pre-pinned ...

使用OpenCl在Android相机的预览功能中做基于CV的应用开发

这个教程的设计是帮助你使用OpenCL ™在Android相机的预览功能中做基于CV的应用开发。程序是使用 Eclipse-based ADT tools编写的(现在已经不再被Google使用了),但...
  • kingroc
  • kingroc
  • 2017年06月30日 17:06
  • 446

OpenCL 优化后的卷积代码

自己修改过的 可以直接运行 卷积模板
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:OpenCL优化应用项目
举报原因:
原因补充:

(最多只允许输入30个字)