为什么现在更多需要用的是 GPU 而不是 CPU,比如挖矿甚至破解密码?
作者:冰糖葫芦娃
链接: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,比如挖矿甚至破解密码?相关推荐
- 为什么深度学习(Deep Learning)要使用GPU而不是CPU?
从上述两张图可以看到,GPU的ALU(运算单元)数量远多于CPU,但是GPU的Control要远远少于CPU,这使得GPU的单Core的自由度要远远低于CPU. 在设计目标上,CPU目标是是并行执行几 ...
- CPU和GPU的区别是什么?为什么训练人工智能用GPU而不是CPU?
CPU(Central Processing Unit,中央处理器)是计算机的大脑,负责执行计算机程序中的指令.它从内存中读取指令和数据,并执行各种计算和逻辑运算.CPU的性能决定了计算机的运算速度. ...
- c++ opengl 三维图形中显示文字_为什么使用GPU渲染图形图像,而不使用CPU呢?
引言 作为程序员,我们或多或少知道可视化应用程序都是由 CPU 和 GPU 协作执行的.那么我们就先来了解一下两者的基本概念: CPU(Central Processing Unit):现代计算机的三 ...
- PyTorch 笔记(03)— Tensor 数据类型分类(默认数据类型、CPU tensor、GPU tensor、CPU 和 GPU 之间的转换、数据类型之间转换)
1. Tensor 数据类型 Tensor 有不同的数据类型,如下表所示,每种类型都有 CPU 和 GPU 版本(HalfTensor)除外,默认的 tensor 是数据类型是 FloatTensor ...
- GPU和显卡是什么关系?GPU会取代CPU吗?GPU和显卡的区别是什么?
GPU是显卡的核心,显卡,则是由GPU.显存.电路板,还有BIOS固件组成的,所以GPU不等于显卡. 参考文章:GPU和显卡是什么关系?GPU会取代CPU吗?
- GPU 与CPU的作用协调,工作流程、GPU整合到CPU得好处
在不少人的心目中,显卡最大的用途可能就只有两点--玩游戏.看电影,除此之外,GPU并没有其他的作用了.但是随着微软IE9的正式发布,不少人突然发现,微软一直提到一个名词:GPU硬件加速,从而也让不少人 ...
- 什么是GPU?跟CPU有什么区别?终于有人讲明白了
导读:一文看懂GPU的前世今生. 作者:钱纲 来源:大数据DT(ID:hzdashuju) 2016年,发生了一件震动IT界的大事.谷歌的人工智能软件阿尔法狗(AlphaGo)击败了韩国的世界围棋冠军 ...
- GPU暗战CPU十年凭什么?
GPU是图形处理器,CPU是中央处理器:一个管图形图像,一个管核心数据:一个是配角,一个是主角.估计有读者会说,作者你疯了啊,两者风马牛不相及,凭什么进行暗战呢?这不是关公战秦琼吗? 其实不然,看似不 ...
- CUDA:工作负载遵循CPU预处理->GPU处理->CPU后处理的形式的实例
CUDA:工作负载遵循CPU预处理->GPU处理->CPU后处理的形式的实例 multithreading.h multithreading.cpp Callback.cu multith ...
最新文章
- Java的主要就业方向
- tl_war302虚拟服务器,tl-war302设置教程
- 工作296:el-table使用
- 面试官:什么是 Reactor 和 Proactor
- 两个CRunTime库排序算法调用,但是更值得注意的”指针“以及“三目”
- 将java编译成so库_利用android studio 生成 JNI需要的动态库so文件
- 1.SOA架构:服务和微服务分析及设计--- 理解面向服务
- ECSHOP商城SEO优化商城更新内容后将页面链接自动推送给百度
- java发卡系统_java毕业设计_springboot框架的自动发卡平台
- 【TED ON FLEX】支持flashplayer的RIBBIT系统
- springmvc生成二维码
- Html笔记——实现一组图片循环且首尾相连的滚动效果
- 如何去学习PMP考试的《PMBOK》
- 关注渐冻症|菌群助力探索其发病机理及相关干预措施
- Tranformer模型与Softmax函数
- 商业银行个人客户价值指标体系
- JavaScript进阶:BOM DOM讲解
- 使用 VMware-Workstation-9 或者 Vmware10 安装 fedora9时卡住了
- Ramdisk虚拟内存盘应该占多少物理内存?
- WM6 Rapi 开发(一) 准备工作