[CSDN] OpenCL用于计算机领域的13个经典案例

http://www.csdn.net/article/2013-10-29/2817319-the-application-areas-opencl-can-be-used

摘要:当使用加速器和OpenCL时,哪种类型的算法更加快速?来自弗吉尼亚理工大学的Wu Feng教授和他的团队例举了一份算法列表,分享了OpenCL常被用于计算机领域的13个经典案例。

哪种算法可以最好的映射GPU及矢量处理器呢?换句话说,当使用加速器和OpenCL时,哪种类型的算法更加快速?

来自弗吉尼亚理工大学的Wu Feng教授和他的团队例举了一份算法列表,分享了OpenCL常被用于计算机领域的13个经典案例。有人将其称之为OpenCL计算领域的13个“小巨人”。

一、Dense Linear Algebra(稠密线性代数)

经典的向量和矩阵运算,传统上可分为1级(矢量/矢量vector/vector),2级(矩阵/矢量),3级(矩阵/矩阵),应用范围极其广泛。

应用范围:

  • 线性代数:LAPACK, ATLAS。
  • Clustering algorithms (聚类算法)/ Data-mining(数据挖掘):StreamCluster, K-均值算法。

正常情况下执行循环,但大多数情况下可轻易在OpenCL进行并行计算。

二、Sparse Linear Algebra(稀疏线性代数)

乘法运算主要是由零矩阵组成。通过移动对角矩阵周围的非零元素,使计算更加高效。

应用范围:

  • 有限元素分析。
  • 偏微分方程式。

使用OpenCL有两种方法:通过一些列的操作行为解决该问题,这将导致很大一部分开销;第二种方法是使用一些列连续的逐次逼近法,将函数误差最小化。

三、Spectral Methods(光谱法)

各种结构的物质都具有自己的特征光谱,光谱分析法就是利用特征光谱研究物质结构或测定化学成分的方法。

光谱方法可用来解决常微分方程(ODEs),偏微分方程(PDEs)以及包含微分方程增值问题。

应用范围:

  • 流体动力学。
  • 量子力学。
  • 天气预测。

利用OpenCL针对每个硬件架构有各种FFT实施方法。诀窍是调优。

四、N-Body Methods

N-Body法是模拟粒子的动力学系统,通常在物理学的影响下如重力,计算方法有两种(A影响B,同样B也影响A),整个系统在每一轮之后都会再次更新。

基本算法是O(N^2)。对于大型系统的优化,可以通过neighbour-administration(相邻管理)和远离粒子计算,这里运行时方法是可取的。

应用范围:

  • 天文学:宇宙学(比如,星系的形成)。
  • 计算化学:分子动力学(比如蛋白质折叠),分子模拟。
  • 物理:流体动力学,等离子体物理学。

OpenCL可以实现每秒数以万计的粒子。

五、Structured Grids(结构化网格)

结构化网格是指网格区域内所有的内部点都具有相同的毗邻单元。在一个结构化或规则的网格中所有的元素具有相同的尺寸,比如方形模块。计算方法依赖于相邻的不规则网格。

应用范围:

  • 图形处理:Gaussian image blurring 高斯图像模糊。
  • Physics Simulations:transient thermal differential equation solver。
  • Finite Element Method(有限元素法)。

利用OpenCL,网格有规则,因此映射也相当容易。要解决的问题是如何做到相邻网格之间的连通性。

六、Unstructured Grids(非结构化网格)

所有的网格都无规则性,不同的元素有着不同的相邻数量。这一组有很多的重叠与回溯。网格中的每个元素都可以是二维的多边形或者三维多面体。每个元素之间没有隐含的连通性。

应用范围:

  • 计算流体动力学。
  • Belief propagation(置信传播)。

难点是在硬件上映射不规则网格。

七、Map-Reduce & Monte Carlo

每个进程可独立于其他进程运行,因此,在相邻的进程之间没有连通性。在庞大的数据集和计算密集型算法中,GPU可结合大数据解决方法,比如Hadoop。

应用范围:

  • Monte-Carlo(蒙特卡洛法):PI(圆周率)计算法,碰撞仿真,序列对比。
  • 分布式搜索。

由于节点之间的通信是最小的,这也是使用GPU最快的方法之一。

八、Combinational Logic(组合逻辑)

组合逻辑电路是一种逻辑电路,它的任一时刻的稳态输出,仅仅与该时刻的输入变量的取值有关,而与该时刻以前的输入变量取值无关。该算法中涉及大量的数据,可利用位级操作( bit-level )执行简单的操作。

应用范围:

  • Computing checksums。
  • 计算校验法,CRCs。
  • 加密和解密。
  • 散列。
  • Hamming weight。

并不是所有的硬件都适合这种类型的操作,因此,设备的选择是至关重要的。

九、Graph Traversal(图形追踪)

图形追踪是以特定的方式访问所有节点,更新/检查值。树形追踪是属于图形追踪一种特殊情况,有间接查找和微计算。

应用范围:

  • 搜索:深度优先搜索,广度优先搜索,找到所有节点中某个连接组件。
  • 排序:快速排序。
  • 序列化/反序列化。
  • Maze生成。
  • 碰撞检测。

使用OpenCL,最关键的是要保持核心程序处于繁忙状态。

十、Dynamic Programming(动态规划)

它是一种在数学、计算机科学和经济学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。

动态规划常适用于解决简单的重叠子问题和最优子结构性质的问题。许多动态编程问题操作通过在网格中填写具有代表性的问题领域,这个领域在网格中保留着最终答案。

应用范围:

  • 图形问题:Floyd’s AllPairs,最短路径, Bellman-Ford算法。
  • 序列对比:Needleman-Wunsch, Smith-Waterman。

“动态”应用,在运行时进行调优以达到最佳性能。

十一、Backtracking(回溯法)

回溯法(探索与回溯法)是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。

这组通用的解决方法是分支定界(分而治之)。

应用范围:

  • 智力游戏:N-queens,填字游戏,九宫格游戏,Peg接龙。
  • Travelling salesman(旅行推销员)。
  • Knapsack,子集和问题以及分区问题。
  • 整数线性规划。
  • Boolean Satisfiability(布尔运算)。
  • Combinatorial Optimisation(组合优化)。

在OpenCL中最重要的就是避免大的分支。

十二、Probabilistic Graphical Models(概率图模型)

这个图形结合了不确定性(概率)和逻辑结构(独立约束)表示复杂的、现实世界的现象。

应用范围:

  • Bayesian(贝叶斯)网络:信念网络,概念网络,因果网络,知识地图。
  • Hidden Markov models(隐马尔可夫模型)。
  • Neural networks。

随着越来越多的进程需要更新相同的节点(原子学就是典型的案例),因此,需消耗大量的时间。

十三、Finite State Machines(有限状态机)

有限状态机是指有限个状态以及在这些状态之间的转移和动作等行为的数学模型。

其具有三个特征:状态总数(state)是有限的;任一时刻,只处在一种状态之中;某种条件下,会从一种状态转变(transition)到另一种状态。

数学计算模型常用于设计连接计算机程序和时序逻辑电路。它常被看作是一个抽象性的机器,可用在有限的数量状态下。

应用范围:

  • 视频解码,解析,压缩。
  • 数据挖掘。
  • 查找循环模式。

英文出自:Streamcomputing

本文为CSDN编译整理,未经允许不得转载,如需转载请联系market#csdn.net(#换成@)

[CSDN] OpenCL用于计算机领域的13个经典案例

时间: 2024-11-01 14:09:29

[CSDN] OpenCL用于计算机领域的13个经典案例的相关文章

Apache-rewrite+13个经典案例

Apache 重写规则的常见应用 (rewrite) 一:目的 本文旨在提供如何用Apache重写规则来解决一些常见的URL重写方法的问题,通过常见的 实例给用户一些使用重写规则的基本方法和线索. 二:为什么需要用重写规则? 一个网站,如果是长期需要放在internet上提供服务,必定会有不断地更新和维护,如临 时转移到其它服务器进行维护,重新组织目录结构,变换URL甚至改变到新的域名等等, 而为了让客户不会因此受到任何影响,最好的方法就是使用Apache Rewrite Rule(重写 规则)

对计算机领域中间层的理解

以前看<代码大全2>时看到了如下一句经典台词: "any problem in computer science can be sloved by another layer of indirecition" "计算机科学领域的任何问题都可以通过增加一个中间层来解决" 当时只是觉得好就永远记住了,几年的编码经验,越来越感受到这句话的经典所在,下面来举几个例子说一下我对它的理解: 1.操作系统的缓存: 比较典型的用于阐述这句话的缓存实例,当属内存(包括sw

计算机领域国际会议分类及排名

http://blog.csdn.net/pipisorry/article/details/46302623 Computer Science Conference Rankings AREA: Databases Rank1: SIGMOD: ACM SIGMOD Conf on Management ofData PODS: ACM SIGMOD Conf on Principles of DBSystems VLDB: Very Large Data Bases ICDE: Intl C

欢迎自己加入到计算机领域!

搭上90年代末班车的我,在初中时,就对编程有着浓厚的兴趣, 自己却没有分清游戏与学习的轻重,因此耽误了学业. 阴差阳错地进入了工业领域——机械设计制造类, 尽管不是心怡的专业,我也是以常年名列前茅的成绩完成了学业, 但对专业没有兴趣的我,在实习时发现自己没有什么上进心, 最后决定向心爱的计算机领域进军. 任何文字都无法将才疏学浅的我塑造得满腹经纶. 只有努力学习,才能把我武装起来,我的新起点——2020年,冲呀! 原文地址:https://www.cnblogs.com/FuroOuO/p/12

实例365(13)---------经典数组排序方法------选择排序法

一:使用选择排序法对一维数组进行排序,截图 /*选择排序的个人理解:第一遍筛选,选出其中最大的值,得到值和下标 将最大的值的位置和数组的第一个位置交换 从数组的第二个位置开始第二遍筛选 将其中最大的值的位置和数组的第二个位置交换 直到筛选完数组 */ 二:代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; u

13款经典BI项目报表&界面风格设计方案

说明 1.方案取自报表开发工具FineReport案例的配色方案 2.所有设计方案图中已标注了字体.颜色与间隔距离等,可直接调用. 报表&界面风格设计方案展示 灰蓝界面 绿色与金色 蓝绿清新风格 蓝绿渐进图表配色 经典红蓝商务风格 薄荷主题图表 黄绿主题图表 蓝灰图表 蓝绿主题图表 蓝色主题图表 绿色缤纷主题 绿色主题图表A 绿色主题图表B 13款经典BI项目报表&界面风格设计方案

数据挖掘领域的十大经典算法

国际权威的学术组织 ICDM (the IEEE International Conference on Data Mining)曾评选出了数据挖掘领域的十大经典算法:C4.5,k-Means,SVM,Apriori,EM,PageRank,AdaBoost,kNN,Naive Bayes和CART.其实不仅仅是选中的十大算法,参加评选的18种算法,随便拿出一种来都可以称得上是经典算法,它们在数据挖掘领域都产生了极为深远的影响. 1. C4.5 C4.5算法是机器学习算法中的一种分类决策树算法,

浅谈计算机领域及职业憧憬

虽然自己的专业是计算机,可是惭愧的说其实对这个行业的了解并不是很多,大多时候是通过网络或者新闻才了解到的.据我所知,现在计算机行业是非常流行的行业,当然竞争也是十分激烈,信息化的时代我们的生活都离不开与计算机有关的东西,比如上学坐公共汽车,需要刷卡,这就是信息处理:用手机上网,这就是数据库--我们不难发现计算机与我们的生活密切相关,我当时选择计算机科学与技术这一专业的时候,就是抱着对计算机的热爱,从小学就开始接触计算机,也会简单使用了一些软件的功能,像Microsoft Office.Photo

为什么计算机领域女性这么少?

对于大多数人来说,他们意识中的科技人就是扎克伯格,乔布斯或者是比尔盖茨——经常出现在新闻里的典型的男科技企业家.其实在科技领域还有一些女性,比如苏珊·沃西基(YouTube 的 CEO)和吉尼·罗曼提(IBM 的 CEO).我记得 15 年前高中信息技术老师说过如果她发明 Windows 系统,绝不会设计四四方方的文件夹,程序也会更加直观.那么,为什么技术领域完全被男人占领呢?也许是因为以下一些原因.大都会娱乐城 环境 技术领域的环境有时对女性并不那么“友好”,比如,在波士顿的 API Jam,