基于GPU的算法并行化
GPU计算的目的即是计算加速。相比于CPU,其具有以下三个方面的优势:
l 并行度高:GPU的Core数远远多于CPU(如G100 GPU有240个Cores),从而GPU的任务并发度也远高于CPU;
l 内存带宽高:GPU的内存系统带宽几十倍高于CPU,如CPU (DDR-400)带宽是3.2GB/秒,而GPU内存系统带宽可达147.1GB/秒;
l 运行速度快:GPU在浮点运算速度上较之CPU也具有绝对优势,如对于一般的硬件,CPU(Intel Core 2 Quad Q8200)是 37 GFLOPS,而GPU(nVIDIA Geforce 8800 Ultra(G80-450 GPU))则可达393.6 GFLOPS。
另一方面,GPU采用的SIMD(Single Instruction Multiple Data)架构,这决定了其对执行的任务具有特定的要求(如不适合判断逻辑过多的任务,数据大小不可控的任务等)。而且,应用程序在GPU上也需有特定的实现,包括算法的GPU并行化,程序的定制等。因此,针对GPU并行处理的研究成为一大研究热点。
目前,CUDA和OpenCL是GPU的两种最为流行的编程语言。它们在程序逻辑方面相似,主要直观的区别在于:
l OpenCL比CUDA灵活度高:CUDA只支持NVIDIA的设备,而OpenCL支持各种类型的协处理器,包括GPU,FPGA等;
l CUDA较之OpenCL用户友好性高:CUDA是一个更为高级的抽象,其提供的API更易于使用,而无需编程者对底层设备过多了解;
现有GPU采用SIMD方式执行,即所有线程块在同一时刻执行相同的程序,从而若这些线程块处理的数据量相差大,或计算量分布不均,便会带来线程块的负载不均,进而影响整个任务执行效率。这类问题实则常见的Skew Handling或Load Inbalance问题。
应用算法的GPU并行化之所以成为一个研究问题而不仅仅是工程问题,这其中的主要的问题在于
1)GPU不支持内存的动态分配,从而对于输出结果大小不确定的任务是一个极大的挑战;
2)GPU的SIMD特性使得很多算法不易很好实现,即如何充分利用GPU线程块的并行度;
3)共享数据的竞争读写,共享数据的锁机制带来大量的等待时间消耗。
GPU作为一种协处理器,其的执行受CPU调度。在实际应用中,GPU更多的也是配合CPU工作,从而基于CPU/GPU异构系统的统一任务调度更具实用意义,也是有关GPU的重要研究方面。
GPU采用SIMD架构,各线程块在同一时刻执行相同的Instruction,但对应的是不同的数据。但事实上,GPU线程块具有如下特征:
n 每个线程块只对应于一个的流处理器(SM),即其只能被该对应的SM执行,而一个SM可以对应多个线程块;SM在执行线程块时,线程块中的线程以Warp(每32个线程)为单位调度及并行执行;
n 线程块内的线程可同步,而不同线程块的同步则只能由CPU调用同步命令完成;
n 不同线程块的运行相互独立。
因此,为不同的线程块分配不同的任务,使得GPU做到任务并行,最大化GPU的利用成为可能并具有重要的研究意义。
基于GPU的算法并行化的更多相关文章
- [译]基于GPU的体渲染高级技术之raycasting算法
[译]基于GPU的体渲染高级技术之raycasting算法 PS:我决定翻译一下<Advanced Illumination Techniques for GPU-Based Volume Ra ...
- 2维FFT算法实现——基于GPU的基2快速二维傅里叶变换
上篇讲述了一维FFT的GPU实现(FFT算法实现——基于GPU的基2快速傅里叶变换),后来我又由于需要做了一下二维FFT,大概思路如下. 首先看的肯定是公式: 如上面公式所描述的,2维FFT只需要拆分 ...
- FFT算法实现——基于GPU的基2快速傅里叶变换
最近做一个东西,要用到快速傅里叶变换,抱着蛋疼的心态,自己尝试写了一下,遇到一些问题. 首先看一下什么叫做快速傅里叶变换(FFT)(来自Wiki): 快速傅里叶变换(英语:Fast Fourier T ...
- [信安Presentation]一种基于GPU并行计算的MD5密码解密方法
-------------------paper--------------------- 一种基于GPU并行计算的MD5密码解密方法 0.abstract1.md5算法概述2.md5安全性分析3.基 ...
- 基于GPU加速的三维空间分析【转】
基于GPU加速的三维空间分析 标签:supermap地理信息系统gisit 文:李凯 随着三维GIS 的快速发展和应用普及,三维空间分析技术以其应用中的实用性成为当前GIS技术研究的热点领域.面对日益 ...
- 基于GPU的高分一号影像正射校正的设计与实现
一 RPC正射校正的原理 影像正射校正的方法有很多,主要包含两大类:一类是严格的几何纠正模型,另一类是近似几何纠正模型.当遥感影像的成像模型和有关参数已知时,可以根据严格的成像模型来校正图像,这种方法 ...
- QT:用QSet储存自定义结构体的问题——QSet和STL的set是有本质区别的,QSet是基于哈希算法的,要求提供自定义==和qHash函数
前几天要用QSet作为储存一个自定义的结构体(就像下面这个程序一样),结果死活不成功... 后来还跑到论坛上问人了,丢脸丢大了... 事先说明:以下这个例子是错误的 #include <QtCo ...
- 基于多重信号分类算法的DOA估计
原创博文,转载请注明出处 下面的论文是我的雷达处理的作业,拿来共享,不喜勿喷.由于公式编辑器的原因,无法复制公式,全部内容请点击. 基于多重信号分类算法的DOA估计 1引言 多重信号分类(MUSIC) ...
- 基于令牌桶算法实现的SpringBoot分布式无锁限流插件
本文档不会是最新的,最新的请看Github! 1.简介 基于令牌桶算法和漏桶算法实现的纳秒级分布式无锁限流插件,完美嵌入SpringBoot.SpringCloud应用,支持接口限流.方法限流.系统限 ...
随机推荐
- Web应急:网站首页被篡改
网站首页被非法篡改,是的,就是你一打开网站就知道自己的网站出现了安全问题,网站程序存在严重的安全漏洞,攻击者通过上传脚本木马,从而对网站内容进行篡改.而这种篡改事件在某些场景下,会被无限放大. 现象描 ...
- EOF的意义及用法
c/c++ 中EOF的意义及用法 EOF,为End Of File的缩写,通常在文本的最后存在此字符表示资料结束. 在微软的DOS和Windows中,读取数据时终端不会产生EOF.此时,应用程序知道数 ...
- EF Code first主从表,删除更新从表
以order和orderItem为例,从表orderItem里有主表的orderId 想通过order.orderitems.add()或者remove()方法直接更新从表的话,必须在从表建立联合主键 ...
- MySQL UNION 操作符
本教程为大家介绍 MySQL UNION 操作符的语法和实例. 描述 MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中.多个 SELECT 语句会删除重复 ...
- python 排序 桶排序
算法思想: 桶排序将数组分到有限数量的桶里.然后每个桶里再分别排序(使用任何算法) 当要倍排序的数组内的数值时均匀分配的时候,桶排序使用线性时间O(n) 步骤: 根据最大值.最小值.桶内数据范围设定一 ...
- 基于vue+springboot+docker网站搭建【三】安装docker
安装docker 我们整个工程都会基于docker来跑,因此首先安装docker.在安装所有软件之前,我们需要先下载一个下载工具. 1.下载工具安装 yum-utils yum install -y ...
- 隐马尔科夫模型(Hidden Markov Models) 系列之二
转自:http://blog.csdn.net/eaglex/article/details/6385204 隐含模式(Hidden Patterns) 当马尔科夫过程不够强大的时候,我们又该怎么办呢 ...
- Jenkins+GitLab+Docker+SpringCloud实现可持续自动化微服务
本文很长很长,但是句句干货,点赞关注收藏后有惊喜在文末等你 现有混合云平台的场景下,即有线下和线上的环境,又有测试与正式的场景,而且结合了Docker,导致打包内容有所区分,且服务的发布流程复杂起来, ...
- AIX—日常运维命令总结
1. 查看AIX服务器的物理构造信息,包括服务器网络配置信息 # prtconf # ifconfig -a # lsattr -E -l mem0 :查看系统内存大小 # netstat -in : ...
- OSI、TCP/IP
计算机网络分层的目的:支持异构网络系统的互联互通 7层OSI参考模型是法定标准(国际标准化组织ISO提出) 4层TCP/IP参考模型是事实标准 OSI参考模型 应用层.表示层.会话层.传输层.网络层. ...