作者:冰糖葫芦娃
链接:https://www.zhihu.com/question/21231074/answer/17598768
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

为什么二者会有如此的不同呢?首先要从CPU和GPU的区别说起。

CPU和GPU之所以大不相同,是由于其设计目标的不同,它们分别针对了两种不同的应用场景。CPU需要很强的通用性来处理各种不同的数据类型,同时又要逻辑判断又会引入大量的分支跳转和中断的处理。这些都使得CPU的内部结构异常复杂。而GPU面对的则是类型高度统一的、相互无依赖的大规模数据和不需要被打断的纯净的计算环境。

于是CPU和GPU就呈现出非常不同的架构(示意图):

图片来自nVidia CUDA文档。其中绿色的是计算单元,橙红色的是存储单元,橙黄色的是控制单元。

GPU采用了数量众多的计算单元和超长的流水线,但只有非常简单的控制逻辑并省去了Cache。而CPU不仅被Cache占据了大量空间,而且还有有复杂的控制逻辑和诸多优化电路,相比之下计算能力只是CPU很小的一部分。

所以与CPU擅长逻辑控制和通用类型数据运算不同,GPU擅长的是大规模并发计算,这也正是密码破解等所需要的。所以GPU除了图像处理,也越来越多的参与到计算当中来。

作者:rabbit
链接:https://www.zhihu.com/question/21231074/answer/20729629
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

在计算机上运行的程序从性能的角度来说大致可分为三类:(1) I/O intensive; (2) Memory intensive 以及 (3) Compute-intensive

(1)I/O intensive的程序其性能瓶颈是I/O,也就是说程序运行的大部分时间花在了硬盘读写/网络通信上,而I/O处在计算机体系结构金字塔的最底层,速度非常慢。最近炒的很火的big data 讨论的就是这一类应用程序。几百TB 甚至到PB级别的数据往哪搁,只能放在硬盘上。一台机器容量太小CPU太少怎么办,搞几百台甚至上千台机器用网线连起来分布处理。所以这块全是I/O, 现在大的互联网公司不多搞几个上千节点的集群肯定撑不住。

(2)Memory intensive的程序其性能瓶颈在内存访问,程序中有大量的随机访问内存的操作,但是基本没有I/O, 这类程序已经比第一类程序快一个数量级了,但是和寄存器的速度还是没法比。目前大部分应用程序都属于这类。个人电脑里装的的各种软件基本就是这类,如果有点I/O, 立刻就会非常得卡。

以上提到的这两类程序的应用最广泛,涵盖了大部分有用的计算机软件,但遗憾的是GPU在这两块毫无用处, GPU只有在计算密集型的程序有些作用。I/O是瓶颈的程序,花在计算的时间可以忽略不计,再怎么用GPU加速也没用。 含有大量内存随机访问的程序也不适合在GPU上执行,大量的随机访问甚至可以使GPU的行为由并行变为串行。

什么类型的程序适合在GPU上运行?

(1)计算密集型的程序。所谓计算密集型(Compute-intensive)的程序,就是其大部分运行时间花在了寄存器运算上,寄存器的速度和处理器的速度相当,从寄存器读写数据几乎没有延时。可以做一下对比,读内存的延迟大概是几百个时钟周期;读硬盘的速度就不说了,即便是SSD, 也实在是太慢了。
(2)易于并行的程序。GPU其实是一种SIMD(Single Instruction Multiple Data)架构, 他有成百上千个核,每一个核在同一时间最好能做同样的事情。

总体来说,GPU擅长的是且仅是成规模的并行计算,而不能并行执行的任务或者与控制相关的任务都与GPU离得很远。GPU只是个计算器,计算密集型的并行计算任务可以分配给它,但CPU是整个计算机进行计算与控制的核心

为什么现在更多需要用的是 GPU 而不是 CPU,比如挖矿甚至破解密码?相关推荐

  1. 为什么深度学习(Deep Learning)要使用GPU而不是CPU?

    从上述两张图可以看到,GPU的ALU(运算单元)数量远多于CPU,但是GPU的Control要远远少于CPU,这使得GPU的单Core的自由度要远远低于CPU. 在设计目标上,CPU目标是是并行执行几 ...

  2. CPU和GPU的区别是什么?为什么训练人工智能用GPU而不是CPU?

    CPU(Central Processing Unit,中央处理器)是计算机的大脑,负责执行计算机程序中的指令.它从内存中读取指令和数据,并执行各种计算和逻辑运算.CPU的性能决定了计算机的运算速度. ...

  3. c++ opengl 三维图形中显示文字_为什么使用GPU渲染图形图像,而不使用CPU呢?

    引言 作为程序员,我们或多或少知道可视化应用程序都是由 CPU 和 GPU 协作执行的.那么我们就先来了解一下两者的基本概念: CPU(Central Processing Unit):现代计算机的三 ...

  4. PyTorch 笔记(03)— Tensor 数据类型分类(默认数据类型、CPU tensor、GPU tensor、CPU 和 GPU 之间的转换、数据类型之间转换)

    1. Tensor 数据类型 Tensor 有不同的数据类型,如下表所示,每种类型都有 CPU 和 GPU 版本(HalfTensor)除外,默认的 tensor 是数据类型是 FloatTensor ...

  5. GPU和显卡是什么关系?GPU会取代CPU吗?GPU和显卡的区别是什么?

    GPU是显卡的核心,显卡,则是由GPU.显存.电路板,还有BIOS固件组成的,所以GPU不等于显卡. 参考文章:GPU和显卡是什么关系?GPU会取代CPU吗?

  6. GPU 与CPU的作用协调,工作流程、GPU整合到CPU得好处

    在不少人的心目中,显卡最大的用途可能就只有两点--玩游戏.看电影,除此之外,GPU并没有其他的作用了.但是随着微软IE9的正式发布,不少人突然发现,微软一直提到一个名词:GPU硬件加速,从而也让不少人 ...

  7. 什么是GPU?跟CPU有什么区别?终于有人讲明白了

    导读:一文看懂GPU的前世今生. 作者:钱纲 来源:大数据DT(ID:hzdashuju) 2016年,发生了一件震动IT界的大事.谷歌的人工智能软件阿尔法狗(AlphaGo)击败了韩国的世界围棋冠军 ...

  8. GPU暗战CPU十年凭什么?

    GPU是图形处理器,CPU是中央处理器:一个管图形图像,一个管核心数据:一个是配角,一个是主角.估计有读者会说,作者你疯了啊,两者风马牛不相及,凭什么进行暗战呢?这不是关公战秦琼吗? 其实不然,看似不 ...

  9. CUDA:工作负载遵循CPU预处理->GPU处理->CPU后处理的形式的实例

    CUDA:工作负载遵循CPU预处理->GPU处理->CPU后处理的形式的实例 multithreading.h multithreading.cpp Callback.cu multith ...

最新文章

  1. Java的主要就业方向
  2. tl_war302虚拟服务器,tl-war302设置教程
  3. 工作296:el-table使用
  4. 面试官:什么是 Reactor 和 Proactor
  5. 两个CRunTime库排序算法调用,但是更值得注意的”指针“以及“三目”
  6. 将java编译成so库_利用android studio 生成 JNI需要的动态库so文件
  7. 1.SOA架构:服务和微服务分析及设计--- 理解面向服务
  8. ECSHOP商城SEO优化商城更新内容后将页面链接自动推送给百度
  9. java发卡系统_java毕业设计_springboot框架的自动发卡平台
  10. 【TED ON FLEX】支持flashplayer的RIBBIT系统
  11. springmvc生成二维码
  12. Html笔记——实现一组图片循环且首尾相连的滚动效果
  13. 如何去学习PMP考试的《PMBOK》
  14. 关注渐冻症|菌群助力探索其发病机理及相关干预措施
  15. Tranformer模型与Softmax函数
  16. 商业银行个人客户价值指标体系
  17. JavaScript进阶:BOM DOM讲解
  18. 使用 VMware-Workstation-9 或者 Vmware10 安装 fedora9时卡住了
  19. Ramdisk虚拟内存盘应该占多少物理内存?
  20. WM6 Rapi 开发(一) 准备工作

热门文章

  1. PDF怎么在手机上删除不要的页
  2. 发那科机器人没有码垛指令_FANUC 机器人码垛编程详细讲解
  3. 原生php写简单的聊天室
  4. RTX3050、3050Ti相当于什么水平?
  5. 酷雷曼VR丨十大“高含金量”荣誉,一起见证!
  6. Android工作日志
  7. 秦令令:移动营销跨越之年
  8. 定制材料 GPTMS修饰的纳米二氧化硅(GPTMS-SiO2)/C18键合纳米金修饰二氧化硅颗粒/二氧化硅修饰咪唑型离子液体
  9. 67. 把字符串转换成整数
  10. STM32+PN532写UltraLight标签