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

news/2024/11/23 5:10:34/


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

虽然自己从事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上的串行处理共同组成。一个完整的异构编程程序的计算流程如下所示:

                           

                                                

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


http://www.ppmy.cn/news/455574.html

相关文章

异构计算--CUDA架构

1.CUDA是什么? CUDA(Compute Unified Device Architecture),是显卡厂商NVIDIA推出的运算平台,是一种通用并行计算架构,该架构使GPU能够解决复杂的计算问题。说白了就是我们可以使用GPU来并行完成像神经网络、图像处理算法这些在CP…

异构加速在加速什么

目前市面上的加速芯片挺多的,比如GPU、FPGA、TPU,以及针对各种特殊应用所开发的加速芯片。自己一直想理清楚这些加速芯片到底在加速什么,一直没有确切答案。一般宽泛的说法是CPU处理效率较低的,我们就进行加速,但个人觉…

英特尔助力快手实现异构计算加速 显著提升性能,降低系统TCO

昨晚睡得好吗?睡不好可以刷快手的《11 点睡吧》。这部当代人睡眠困境的微综艺,总曝光量达到 107亿,不但科普睡眠知识,更深度探讨都市人的喜怒哀乐[1]。惊人的曝光量背后,是快手对用户画像数据的精准分析,离…

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

转自,http://www.cnblogs.com/qcloud1001/p/6617764.html 随着互联网用户的快速增长,数据体量的急剧膨胀,数据中心对计算的需求也在迅猛上涨。诸如深度学习在线预测、直播中的视频转码、图片压缩解压缩以及HTTPS加密等各类应用对计算的需求已…

异构计算(Heterogeneous Compute)

1. 异构计算接口 1) RenderScript(GPU计算): 它是官方异构计算的Android API&#xff0c;从Android ICS 4.2开始&#xff0c;它启用GPU来进行计算&#xff1b;它实现了20多个滤波器(filters)&#xff0c;支持CPU和GPU&#xff0c;且针对Mali-T600进行了优化。 (Nexus 10 <Ma…

异构计算技术分析

异构计算技术分析 参考文献链接 https://mp.weixin.qq.com/s/xW_Y0JBKK3d42IZvHA9CrQ https://mp.weixin.qq.com/s/amQj0DYvs9QwIuTpsGEFNg https://mp.weixin.qq.com/s/Y2cRAHnztWw5l0eeU_pDrg https://mp.weixin.qq.com/s/WyVgGB8-dPl9L68cppUNaw 什么是异构计算&#xff1f;…

再谈异构计算CPU+GPU

异构计算的英文名称是Heterogeneous computing&#xff0c;主要是指使用不同类型指令集和体系架构的计算单元组成系统的计算方式。常见的计算单元类别包括CPU、GPU等协处理器、DSP、ASIC、FPGA等。我们常说的并行计算正是异构计算中的重要组成部分异构计算近年来得到更多关注&a…

基于CPU+GPU的异构计算

GPU GPU是为了视频游戏而产生的&#xff08;至今其主要驱动力还是不断增长的视频游戏市场&#xff09;&#xff0c;在三维游戏中常常出现的一类操作是对海量数据进行相同的操作&#xff0c;如&#xff1a;对每一个顶点进行同样的坐标变换&#xff0c;对每一个顶点按照同样的光…