异构开发与异构编程(CUDA & GPU)

原创 2014年12月29日 18:58:56


什么是异构开发或者编程呢?

虽然自己从事CPU+GPU相关工作,但是对异构这个概念之前还不太明确,经过结合开发经验以及查阅资料,对此概念有了一定的理解。

   一定要注意能够使用GPU计算的程序必须具有以下特点:需要处理的数据量比较大,数据以数组或矩阵形式有序存储,并且对这些数据要进行的处理方式基本相同,各个数据之间的依赖性或者说耦合很小,需要复杂数据结构的计算如树,图等,则不适用于使用GPU进行计算。


 学过计算机组成原理的人都会非常熟悉CPU原理及组成,CPU内部结构是由控制单元、运算单元、存储单元等主要部分组成,其通过地址总线与地址总线实现数据的操作,此处不再多说了;但当处理大量图像图形渲染时,CPU效率不能满足要求(比如大型3D游戏),于是乎针对复杂图形图像处理的GPU就出现了;在这里就不解释GPU的工作原理了,你可以google 一下!

目前计算单元主要分为:通用计算单元(CPU),专用计算单元(GPU)

下面说说什么是异构呢?
由一个(或者多个)通用计算单元(CPU)加上一个(或者多个)专用计算单元构建(GPU等)的系统就是异构计算系统,由两者协同起来共同执行通用计算任务就是异构计算,目前在开发中最常见的组合就是CPU+GPU。对于高要求场合这是明智之举;

异构计算的目的一般是加速数据的处理能力,过去依靠工艺和频率来提高CPU的计算性能,但是现在遇到了瓶颈,加速的任务已经由过去依赖工艺和功耗转向依靠架构的改变。在过去GPU只能执行图形任务,不能执行通用计算,所以还称不上异构计算,现在的GPU已经具备了执行通用计算的能力,和CPU协同工作就组成了一个异构计算系统,AMD的APU就是其中的一个实现。

有了硬件的实现,同样需要软件的支持,目前比较流行的编程语言是C++AMP/OPENCL/CUDA

以cuda为例介绍如下:

              CUDA(Compute Unified Device Architecture)它中文的名字是统一计算设备架构,CUDA是一种将GPU作为数据并行计算设备。

 CUDA 编程模型将CPU作为主机(Host),GPU作为协处理器或者设备(Device),在一个系统中可以存在一个主机和若干个设备。在这个模型中,CPUCPU协同工作,各司其职。CPU负责进行逻辑性强的事物处理和串行计算,GPU则专注于执行高度线程化的并行处理任务。CPUGPU各自拥有相互独立的存储器地址空间:主机端的内存和设备端的显存。在这个模型中,CPUCPU协同工作,各司其职。CPU负责进行逻辑性强的事物处理和串行计算,GPU则专注于执行高度线程化的并行处理任务。CPUGPU各自拥有相互独立的存储器地址空间:主机端的内存和设备端的显存。一旦确定了程序的并行部分,就可以考虑把这部分计算工作交给GPU

    找到程序中满足GPU要求的部分后,就能将该部分程序移植GPU上。运行在GPU上的程序被称为内核(Kernel)。内核并不是完整的程序,只是整个程序中的一个可以使用数据并行处理的步骤。一个完整的程序由若干个内核函数以及CPU上的串行处理共同组成。一个完整的异构编程程序的计算流程如下所示:

                           

                                                

如果有理解不当之处,欢迎指正!

版权声明:本文为博主原创文章,未经博主允许不得转载。

CPU+GPU异构计算编程简介

异构计算(CPU + GPU)编程简介1.概念 所谓异构计算,是指CPU+ GPU或者CPU+ 其它设备(如FPGA等)协同计算。一般我们的程序,是在CPU上计算。但是,当大量的数据需要计算时,CPU...
  • Augusdi
  • Augusdi
  • 2013年09月13日 15:14
  • 8775

CPU+GPU异构计算编程简介

异构计算(CPU + GPU)编程简介1.概念 所谓异构计算,是指CPU+ GPU或者CPU+ 其它设备(如FPGA等)协同计算。一般我们的程序,是在CPU上计算。但是,当大量的数据需要计算时,CPU...
  • Augusdi
  • Augusdi
  • 2013年09月13日 15:14
  • 8775

再谈异构计算CPU+GPU

异构计算的英文名称是Heterogeneous computing,主要是指使用不同类型指令集和体系架构的计算单元组成系统的计算方式。常见的计算单元类别包括CPU、GPU等协处理器、DSP、ASIC、...
  • farmwang
  • farmwang
  • 2015年11月29日 13:57
  • 734

CPU+GPU异构计算编程简介

异构计算(CPU + GPU)编程简介 1. 概念 所谓异构计算,是指CPU+ GPU或者CPU+ 其它设备(如FPGA等)协同计算。一般我们的程序,是在CPU上计算。但是,当大量的数据需要计算时...
  • flyingleo1981
  • flyingleo1981
  • 2017年01月19日 22:43
  • 535

OpenCL的多GPU和多核CPU异构计算--1

原文:飞鸿惊雪 地址点击打开链接 本文主要探究OpenCL的GPU和多核CPU的异构计算问题,主要简要阐述了什么是OpenCL异构计算,讲述CPU和GPU各自的特点,并且把他们结合起来做异构计算的...
  • fly_yr
  • fly_yr
  • 2016年04月27日 11:57
  • 1273

异构计算 文章

从桌面到移动:异构计算翻天覆地的技术变革 http://www.csdn.net/article/2014-07-10/2820610-heterogeneous-computing-in-mobil...
  • iamtaoyu
  • iamtaoyu
  • 2015年06月05日 00:03
  • 1484

深入理解CPU和异构计算芯片GPU/FPGA/ASIC (上篇)

随着互联网用户的快速增长,数据体量的急剧膨胀,数据中心对计算的需求也在迅猛上涨。诸如深度学习在线预测、直播中的视频转码、图片压缩解压缩以及HTTPS加密等各类应用对计算的需求已远远超出了传统CPU处理...
  • Qcloud_KID
  • Qcloud_KID
  • 2017年03月23日 18:57
  • 1830

CUDA: GPU的异构程序开发流程

异构程序开发的特点决定了开发与传统开发手段还是有一些列不同的,通俗的说有一定的讲究。针对本项目,本章列出几条重要的值得注意的地方,从开发过程上指导整个流程,以保证程序的质量+和优化。对异构程序的开发,...
  • Augusdi
  • Augusdi
  • 2013年10月10日 17:00
  • 1172

CNN在应用中,为什么GPU可以有加速效果

CNN在应用中,一般采用GPU加速,请解释为什么GPU可以有加速效果,主要加速算法的哪一个部分? 这里默认gpu加速是指NVIDIA的cuda加速。CPU是中央处理单元,gpu是图形处理单元,gpu...
  • u011204487
  • u011204487
  • 2017年08月09日 11:08
  • 363

windows下搭建CUDA开发环境——GPU编程

引自:http://www.makaidong.com/yaoyuanzhi/archive/2010/11/13/1876215.html 本文我们以visual studio 2005 为例...
  • Allyli0022
  • Allyli0022
  • 2016年08月05日 18:53
  • 1679
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:异构开发与异构编程(CUDA & GPU)
举报原因:
原因补充:

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