1.CUDA是什么?

  CUDA(Compute Unified Device Architecture),是显卡厂商NVIDIA推出的运算平台,是一种通用并行计算架构,该架构使GPU能够解决复杂的计算问题。说白了就是我们可以使用GPU来并行完成像神经网络、图像处理算法这些在CPU上跑起来比较吃力的程序。通过GPU和高并行,我们可以大大提高这些算法的运行速度。

2.CPU&CUDA架构

  处理器结构有2个指标要经常考虑的:延迟和吞吐。延迟指从发出指令到返回最终结果中间经历的时间间隔;吞吐指单位时间内处理的指令的条数。由于CPU以处理计算和控制为主要任务,所以设计理念是延迟导向内核;由于GPU以并行处理为主要任务,所以设计理念是吞吐导向内核。

(1)CPU

  CPU(CentralProcessing Unit)中央处理器,是一块超大规模的集成电路,主要逻辑架构包括控制单元Control,运算单元ALU和高速缓冲存储器(Cache)及实现它们之间联系的数据(Data)、控制及状态的总线(Bus)。简单说,就是计算单元、控制单元和存储单元。
架构图如下所示:

  CPU遵循的是冯·诺依曼架构,其核心是存储程序/数据、串行顺序执行。因此CPU的架构中需要大量的空间去放置存储单元(Cache)和控制单元(Control),相比之下计算单元(ALU)只占据了很小的一部分,所以CPU在进行大规模并行计算方面受到限制,相对而言更擅长于处理逻辑控制。CPU无法做到大量数据并行计算的能力,但GPU可以。

(2)GPU

  GPU(GraphicsProcessing Unit),即图形处理器,是一种由大量运算单元组成的大规模并行计算架构,早先由CPU中分出来专门用于处理图像并行计算数据,专为同时处理多重并行计算任务而设计。GPU中也包含基本的计算单元、控制单元和存储单元,但GPU的架构与CPU有很大不同,其架构图如下所示。

  与CPU相比,CPU芯片空间的不到20%是ALU,而GPU芯片空间的80%以上是ALU。即GPU拥有更多的ALU用于数据并行处理。这就是为什么GPU可以具备强大的并行计算能力的原因。
从硬件架构分析来看,CPU和GPU似乎很像,都有内存、Cache、ALU、CU,都有着很多的核心,但是CPU的核心占比比较重,相对计算单元ALU很少,可以用来处理非常复杂的控制逻辑,预测分支、乱序执行、多级流水任务等等。相对而言GPU的核心就是比较轻,用于优化具有简单控制逻辑的数据并行任务,注重并行程序的吞吐量。
  简单来说就是CPU的核心擅长完成多重复杂任务,重在逻辑,重在串行程序;GPU的核心擅长完成具有简单的控制逻辑的 任务,重在计算,重在并行。

3.异构计算

  所谓异构计算,是指CPU+ GPU或者CPU+ 其它设备(如FPGA等)协同计算。⼀般我们的程序,是在CPU上计算。但是,当⼤量的数据需要计算时,CPU显得⼒不从⼼。那么,是否可以找寻其它的⽅法来解决计算速度呢?那就是异构计算。例如可利⽤CPU(Central Processing Unit)、GPU(Graphic Processing Unit)、甚⾄APU(Accelerated Processing Units, CPU与GPU的融合)等计算设备的计算能⼒从⽽来提⾼系统的速度。异构系统越来越普遍,对于⽀持这种环境的计算⽽⾔,也正受到越来越多的关注。
  ⽬前异构计算使⽤最多的是利⽤GPU来加速。主流GPU都采⽤了统⼀架构单元,凭借强⼤的可编程流处理器阵容,GPU在单精度浮点运算⽅⾯将CPU远远甩在⾝后。如图所示为CPU+GPU异构计算的一个示意图,其中GPU主要负责并行计算。

4.OpenCL与CUDA的关系

  NVIDIA的CUDA架构和KHRONOS制定的OpenCL并不冲突,他们之间的关系是API与执行架构之间的关系,举个简单的例子:我们熟悉的X86架构是一种CPU架构,而各种编程语言,如:汇编语言、C语言等低级语言或高级语言仅仅是建立在X86运算架构之上的一种编程环境。那么,CUDA架构和OpenCL之间的关系和X86与编程语言的关系是相同的。
  CUDA架构是OpenCL的运行平台之一,因此他们之间并不存在谁取代谁的关系。OpenCL仅仅是为CUDA架构提供了一个可编程的API而已。

参考原文
[1]http://t.zoukankan.com/liuyufei-p-13259264.html

异构计算--CUDA架构相关推荐

  1. 深度学习(三十六)异构计算CUDA学习笔记(1)

    异构计算CUDA学习笔记(1) 原文地址:http://blog.csdn.net/hjimce/article/details/51506207 作者:hjimce 近日因为感觉自己在深度学习工程化 ...

  2. Windows 7与CUDA架构的兼容性测试

    图形巨头NVIDIA(英伟达)推出的GPU通用计算技术CUDA相信大家都有所了解,然而随着Windows 7逐渐成为热门的关注对象,有一部分人对Windows 7是否支持CUDA.能否很好的支持CUD ...

  3. 【并行计算-CUDA开发】从零开始学习OpenCL开发(一)架构

    多谢大家关注 转载本文请注明:http://blog.csdn.net/leonwei/article/details/8880012 本文将作为我<从零开始做OpenCL开发>系列文章的 ...

  4. 【CUDA 基础】1.1 异构计算与CUDA

    异构计算与CUDA 异构计算与CUDA 异构计算 异构架构 范例 CUDA:一种异构计算平台 "Hello World!" CUDA C难么? 总结 Abstract: 介绍异构计 ...

  5. CUDA与OpenCL架构

    原文https://www.cnblogs.com/hlwfirst/p/5003504.html CUDA与OpenCL架构 目录 CUDA与OpenCL架构 目录 1 GPU的体系结构 1.1 G ...

  6. JAVA框架sm,关于CUDA的架构(SM,SP)

    我是一个刚刚开始CUDA编程的人 . 似乎有SP SM和CUDA架构的概念 . 我试着运行样本源的deviceQuery.cpp我觉得什么有效,SP SM开发他们的环境, 已经不知道哪个项目SP是否是 ...

  7. (转)从CPU架构和技术的演变看GPU未来发展

    泡泡网显卡频道5月28日 自从AMD提出Fusion(融聚)的概念.NVIDIA加大力度推广GPU通用计算.Intel率先将CPU和GPU整合在一起之后,大家就会发现CPU和GPU从没如此亲密无间过, ...

  8. OpenCL与Cuda

    作者:Boy Holy 链接:https://www.zhihu.com/question/19780484/answer/33008684 来源:知乎 著作权归作者所有,转载请联系作者获得授权. 根 ...

  9. 从零开始学习OpenCL开发(一)架构

    1 异构计算.GPGPU与OpenCL OpenCL是当前一个通用的由很多公司和组织共同发起的多CPU\GPU\其他芯片 异构计算(heterogeneous)的标准,它是跨平台的.旨在充分利用GPU ...

最新文章

  1. 【数学和算法】初识卡尔曼滤波器(四)
  2. ubuntu常用的命令
  3. tp5 cache缓存简单使用
  4. 2013\Province_Java_B\1.世纪末的星期
  5. java 学习笔记2022.1.26
  6. 世界级版本控制工具Vault v10.0发布,多项功能改进|附下载
  7. django 利用PIL 保存图片
  8. VUE:父子组件间传参、子组件传值给父组件、父组件传值给子组件
  9. 解决pytorch多进程ValueError: Error initializing torch.distributed using env:// rendezvou...报错
  10. POST 一张 图像的调试来认识 http post
  11. 惠普战66一代拆机_或许这就是匠人吧 全新惠普战66二代的另类拆解
  12. 大连计算机类书店小结
  13. 笔记本风扇噪音太大,最简单操作风扇降噪
  14. ssm+教务信息管理 毕业设计-附源码161124
  15. 固态硬盘卡LOGO、掉固件、不认盘、无法高格等故障维修之SM2258XT量产篇
  16. 51单片机二维码识别
  17. 印章识别--笛卡尔坐标系转换成极坐标系
  18. hdu5804(BestCoder Round #86 A)
  19. 虚幻4FPS吃鸡类游戏开发学习笔记——人物移动及状态切换(Idle,Walk, Jog, Run)
  20. 如何从github上下载源代码

热门文章

  1. NVIDIA Omniverse平台基本介绍
  2. 解决office2003与office2007共存问题
  3. 错误2:strcmp的返回值问题
  4. 企业数字化转型关键路径:构建数据驱动的管控体系
  5. 使用Springboot+netty实现基于Web的聊天室
  6. SQL Server主从数据库配置过程
  7. Java基础知识之equals方法
  8. Linux 开机自启动服务的顺序指定
  9. 计算机应用基础平时作业一,计算机应用基础平时作业(4).doc
  10. 对LRU算法的理解和应用场景