异构计算--CUDA架构
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架构相关推荐
- 深度学习(三十六)异构计算CUDA学习笔记(1)
异构计算CUDA学习笔记(1) 原文地址:http://blog.csdn.net/hjimce/article/details/51506207 作者:hjimce 近日因为感觉自己在深度学习工程化 ...
- Windows 7与CUDA架构的兼容性测试
图形巨头NVIDIA(英伟达)推出的GPU通用计算技术CUDA相信大家都有所了解,然而随着Windows 7逐渐成为热门的关注对象,有一部分人对Windows 7是否支持CUDA.能否很好的支持CUD ...
- 【并行计算-CUDA开发】从零开始学习OpenCL开发(一)架构
多谢大家关注 转载本文请注明:http://blog.csdn.net/leonwei/article/details/8880012 本文将作为我<从零开始做OpenCL开发>系列文章的 ...
- 【CUDA 基础】1.1 异构计算与CUDA
异构计算与CUDA 异构计算与CUDA 异构计算 异构架构 范例 CUDA:一种异构计算平台 "Hello World!" CUDA C难么? 总结 Abstract: 介绍异构计 ...
- CUDA与OpenCL架构
原文https://www.cnblogs.com/hlwfirst/p/5003504.html CUDA与OpenCL架构 目录 CUDA与OpenCL架构 目录 1 GPU的体系结构 1.1 G ...
- JAVA框架sm,关于CUDA的架构(SM,SP)
我是一个刚刚开始CUDA编程的人 . 似乎有SP SM和CUDA架构的概念 . 我试着运行样本源的deviceQuery.cpp我觉得什么有效,SP SM开发他们的环境, 已经不知道哪个项目SP是否是 ...
- (转)从CPU架构和技术的演变看GPU未来发展
泡泡网显卡频道5月28日 自从AMD提出Fusion(融聚)的概念.NVIDIA加大力度推广GPU通用计算.Intel率先将CPU和GPU整合在一起之后,大家就会发现CPU和GPU从没如此亲密无间过, ...
- OpenCL与Cuda
作者:Boy Holy 链接:https://www.zhihu.com/question/19780484/answer/33008684 来源:知乎 著作权归作者所有,转载请联系作者获得授权. 根 ...
- 从零开始学习OpenCL开发(一)架构
1 异构计算.GPGPU与OpenCL OpenCL是当前一个通用的由很多公司和组织共同发起的多CPU\GPU\其他芯片 异构计算(heterogeneous)的标准,它是跨平台的.旨在充分利用GPU ...
最新文章
- 【数学和算法】初识卡尔曼滤波器(四)
- ubuntu常用的命令
- tp5 cache缓存简单使用
- 2013\Province_Java_B\1.世纪末的星期
- java 学习笔记2022.1.26
- 世界级版本控制工具Vault v10.0发布,多项功能改进|附下载
- django 利用PIL 保存图片
- VUE:父子组件间传参、子组件传值给父组件、父组件传值给子组件
- 解决pytorch多进程ValueError: Error initializing torch.distributed using env:// rendezvou...报错
- POST 一张 图像的调试来认识 http post
- 惠普战66一代拆机_或许这就是匠人吧 全新惠普战66二代的另类拆解
- 大连计算机类书店小结
- 笔记本风扇噪音太大,最简单操作风扇降噪
- ssm+教务信息管理 毕业设计-附源码161124
- 固态硬盘卡LOGO、掉固件、不认盘、无法高格等故障维修之SM2258XT量产篇
- 51单片机二维码识别
- 印章识别--笛卡尔坐标系转换成极坐标系
- hdu5804(BestCoder Round #86 A)
- 虚幻4FPS吃鸡类游戏开发学习笔记——人物移动及状态切换(Idle,Walk, Jog, Run)
- 如何从github上下载源代码