您好、欢迎来到现金彩票网!
当前位置:秒速快3官网 > 数组处理器 >

组成:GPU与CPU的比较

发布时间:2019-06-11 23:32 来源:未知 编辑:admin

  不管是CPU还是GPU都是很高速的设备,然而从主存中取数据会很慢很慢,为了充分利用高速设备,二者都使用了缓存,编程一定要考虑的是计算机程序的局部性(locality)的基本属性—–时间局部性与空间局部性。多核时代和GPU并行运算时代来临,另外一个影响程序运行的速度的关键因素—–缓存一致性(Cache Coherency)。这些CPU和GPU都有一些区别,深入底层才能写出更高效的代码!

  我觉得在2017年仍然有必要学习CUDA。虽然各路大腿子都用自家编的或者优化的编译器,很多还都是不开源的,但是对我来说使用CUDA仍然是最简单的方式去提升程序性能。代码编的好的话至少比CPU快吧,而且CPU代码想写好了必须汇编优化,这个事干起来比较蛋疼。

  由于时间局部性,同一数据对象可能会被多次使用,一旦一个数据对象在第一次不命中时被拷贝到缓存中,我们就会期望后面对该目标有一系列的访问命中。因为缓存比低一层的存储设备更快,对后面的命中服务会比最开始的不命中快很多。

  块通常包含多个数据对象。由于空间局部性,我们会期望后面对该块中的其他对象的访问能够补偿不命中后拷贝该块的花费。

  为了让CPU不把时间都耗在读主存上,现代计算机搞了一个三级缓存,L1,L2挨着CPU,L3挨着内存,这仨都是SRAM,所以又小又快又贵。他们全部由硬件管理,所以相对不是很灵活。

  Cache对用户是透明的,很多时候只能猜。C语言中有一个register修饰符,但是也仅仅是对编译器的建议,编译器不一定采用。组成原理会讲直接映射,组相联,全相联啊之类的东西。这个东西比较迷,我并不知道我以后的电脑用的哪种方式。但是会影响程序性能的就是缓存不命中,如果能像做题一样算出来一段程序的缓存命中率就好了。但是不好。那就猜一下。一般来说Intel Core i7 用的是组相连,而且L1和L2是8路组相连,L3是16路组相连。

  很致命的应该是抖动(thrash)。也就是Cache反复的加载和驱逐相同的高速缓存组.

  1.Cache大小&块大小:大的能提高空间局部性的利用,提高命中率却增加命中时间,损害了时间局部性。

  2.相联度:高相联度会降低抖动的可能性,但是增加命中时间,不命中处罚,而且贵。

  读比较简单,命中就返回CPU,不命中就讲块读到Cache里然后返回给CPU。写的话要一层一层地来,写了数据就会脏掉,脏了就会很麻烦。

  写策略比较复杂,CPU和GPU有区别,单核CPU和多核CPU也有区别,这里先说最简单的单核CPU。

  尽可能推迟存储器更新,只有当替换算法要驱逐更新过的块时,才把他写到紧接着的低一层。由于局部性,写会能显著减少总线流量。

  当写不命中的时候,加载相应的低一层块到Cache中,然后更新这个Cache块。写分配试图利用写的空间局部性,但是缺点是每次不命中都会导致一个块从低一层传送到高速缓存。

  因为缓存和缓存替换机制都是基于局部性设计的,所以如果能尽量运用局部性就可以一定程度上提升程序性能。

  具体怎么样要具体分析。但是在C语言中,数组是按行顺序存储的,所以访问应该尽量按行访问。也就是行列

  比较炫酷的是直接在程序里把数据分块,差不多每次都只对整体的一小块在Cache上操作,但是这样代码会很难读。

  于是问题来了:如果某个CPU缓存段中对应的内存内容被另外一个CPU偷偷改了,那就很尴尬了,特别是使用上文提到的写回模式。

  为了解决这个问题,就有了缓存一致性协议,以保持缓存的完全一致,但这种协议都是有代价的,都是各种限制回写的规则,使得多核CPU不能发挥1+1=2的性能。代表性的例子是MESI协议,戳这里详细了解

  一个内存的写需要通知所有核的各个级别的缓存,无论何时,所有处理器的核看到的内存视图都完全一样。随着处理器核的数量增多,通知的开销迅速增加,核心的数量被缓存一致性制约了。

  手头的教材是2014年的。GPU发展太快了,所以我并不是很清楚现在的是什么样子的。

  但还是先说一下现在的吧。深度学习太吃GPU了,学校用的是Titan X,晶体管数目高达12,000,000,000,拥有3584个CUDA单元。毕竟核弹厂。。

  而GPU中的局部性是由程序员负责的,程序员在需要数据前就把他们装入Cache。Cache中最麻烦的还是那些被写过的脏数据。由程序员控制的Cache写,我们就可以把一直在进行的局部变换变量们放在Cache里并且只在最后写回全局内存。这就灵活很多啦。但是程序其实很多不是很好并行的,也不是每个程序都有很好的局部性,这些就自己权衡啦。

  NVLink则提供了一个高效率而又高带宽的链接路径,可以使GPU与CPU的存储系统之间有5~12倍于PCI-E 3.0的带宽,也就是说带宽能够达到80GB/s~近200GB/s。如果您的CPU不支持NVLink,这个总线仍然可以互连GPU与GPU。NVLink的能效可以达到PCI-E 3.0的两倍以上。

  tensorflow跑CIFAR10的时候用了四张卡。但是开头会有报告GPU的使用情况。

  学校的GPU是0和1互联,2和3互联。感觉上互联应该就是nvlink,不互联就是PCI-E。所以我之前的玩具代码使用率才20–40%应该是数据走PCI-E太多了,并且经常往返于CPU和GPU。最后计时我的笔记本和4Titan一样了

  群里的大神说:一定要避免一个流程反复进入GPU,就是避免在每个step循环内部多次sess.run的情况(tensorflow)

  另外听说天价微型超算DGX-1也是只能三卡互联,想要八卡并行的话比较好的解决方案是通过一张GPU中转,而不是走CPU。不过这个跟我没什么关系,就瞎说。

  sp: 最基本的处理单元,streaming processor 最后具体的指令和任务都是在sp上处理的。GPU进行并行计算,也就是很多个sp同时做处理

  sm:多个sp加上其他的一些资源组成一个sm, streaming multiprocessor. 其他资源也就是存储资源,共享内存,寄储器等。

  warp:GPU执行程序时的调度单位,目前cuda的warp的大小为32,同在一个warp的线程,以不同数据资源执行相同的指令。

  grid、block、thread:在利用cuda进行编程时,一个grid分为多个block,而一个block分为多个thread.其中任务划分到是否影响最后的执行效果。划分的依据是任务特性和GPU本身的硬件特性。

  GPU是非缓存一致系统的,他不会自动更新其他核的缓存,需要由程序员写清楚每个处理器的目标区域

  texture memory:针对global memory的一个特殊视图,用来存储差值计算所需的数据,拥有基于硬件进行插值的特性。

  shared memory:这个是程序员可控的Cache,与CPU不同,他没有自动完成数据替换的硬件逻辑,而是完全由程序员控制。

  《大规模并行处理器编程实战(第2版)》全面更新了并行编程方法和技术的内容。本书旨在综述并行编程,展示了专业人士和学生都可以使用的一种编程思维,以此来指导并行编程和优化应用程序,从而使性能得到显著提升。...博文来自:痞子龙3D编程

  问题描述:训练了大概6个epoch模型在cpu上的loss开始出现nan,在gpu上表现正常经查找资料博文来自:huowa9077的博客

  本人新手,很新很新的新手 现在学习CUDA编程,但是写了两个很简单的程序比较CPU和GPU并行运行的速度,发现GPU没有CPU快,我想,一定是我哪里理解错了,导致测试程序是有错误的但是实在没想通 我分论坛

  1什么是显卡回顶部前言纵观计算机诞生到如今所度过的60年时间我们不难发现计算机的发展速度是非常惊人的,很多网友会发现自己在一两年之前买的电脑到此时可能已经到了面临过时的境地。伴随着计算机高速发...博文来自:xi_niuniu的专栏

  Caffe2-CPU/GPU部署模式切换在尝试把Caffe模型转换到Caffe2,部署时CPU/GPU模式切换方法找了很久才找到一个用着可以,记录下ert(...博文来自:长风破浪会有时,直挂云帆济沧海

  这一层比较简单:主要就是求绝对值,反传部分的代码也很简单里头用到了caffe_abs这个函数以及caffe_cpu_sign这两个函数需要注意的是caffe_cpu_sign在math_functio...博文来自:一亩半分地

  GPU的结构简单的可以分为:一个连接GPU和PCIe总线个复制引擎;一个连接GPU与GPU内存设备的DRAM接口;一定数目的TPC或者GPC(纹理处理集群或图形处理集群),每个包含一...博文来自:skelking的专栏

  摘要:首先我们可能有疑问,既然OpenCL具有平台无关性,我们为什么还要去研究不同厂商的特殊硬件设备呢?GPU架构内容包括:1.OpenCLspec和多核硬件的对应关系AMDGPU架构NvdiaGPU...博文来自:jaccen的专栏

  现在更多被需要的依然是CPU,只是GPU在大规模并发计算中体现出其一技之长所以应用范围逐渐变得广泛,并成为近些年的热点话题之一。对初学者而言知道二者之间的区别还是非常必要的。...博文来自:wei_god的专栏

  clock()函数来计算时间,由于程序比较大,运行的时间比较长,但每次运行完这后得到的结果都是负数,有些不解,查些资料后才明白了,原来clock_t是long型,其取值范围是-2147483648~2...博文来自:deng497的博客

  CPU和GPU都是具有运算能力的芯片,CPU更像“通才”——指令运算(执行)为重+数值运算,GPU更像“专才”——图形类数值计算为核心。在不同类型的运算方面的速度也就决定了它们的能力——“擅长和不擅长...博文来自:charleslei的专栏

  本文主要探究OpenCL的GPU和多核CPU的异构计算问题,主要简要阐述了什么是OpenCL异构计算,讲述CPU和GPU各自的特点,并且把他们结合起来做异构计算的前景。然后具体讲述在高性能实验室Lin...博文来自:飞鸿惊雪

  门罗币CPU挖矿详细教程首先放上一个挖矿软件的下载链接:经过对十几个门罗币挖矿软件的评测,XMR-STAK可以说是门罗币CPU和A卡挖矿的王者,秒杀其它一切软件!XMR-STAK挖矿软件是GitHub...博文来自:CrackWei的专栏

  vs2008上创建cuda项目,新建test.cu文件,将如下代码拷贝进去,编译执行,能很清楚地看到GPU跑矩阵乘法和CPU的效率区别。在我的pc机上执行得到如下结果,可见矩阵乘法的GPU效率大概提高...博文来自:a925907195的专栏

  本次配置主要参考进行配置,其中遇到的问题主要参考博文来自:circleyuanquan的博客

  一、整个集群情况  集群架设以后基本上能满足自己的高性能计算的实验需要,充分发挥了服务器的CPU和GPU的性能,本集群都是基于开源的软件架设,能够尽可能的拓展,主要的rocks系统时目前很多美国大学实...博文来自:hushujian的专栏

  最近在学习基于torch的文本识别。用的是VGG模型。代码资源:但是改模型是在GPU上训练的,我没有GPU所以要改到CPU上运行。这无疑是一...博文来自:zywcj1314的博客

  原文地址:原文从这里开始:要说到设计的复杂程度,那还是CPU了!这个不...博文来自:puppet_master的专栏

  目前市面上介绍GPU编程的博文很多,其中很多都是照章宣科,让人只能感受到冷冷的技术,而缺乏知识的温度。所以我希望能写出一篇可以体现技术脉络感的文章,让读者可以比较容易理解该技术,并可以感悟到c...博文来自:方亮的专栏

  在网上看了一个比较GPU和CPU执行矩阵运算效率的帖子,亲自跑了一下。这是一个CUDA语言程序,请保存为“文件名.cu”。我的主机配置如下:CPU:G2030;内存8GB;显卡:GTX750ti。代码...博文来自:csshuke的专栏

  有网友在网上提问:“为什么现在更多需要用的是GPU而不是CPU,比如挖矿甚至破解密码?”以下是比较准确靠谱的回答:1、现在更多被需要的依然是CPU,只是GPU在大规模并发计算中体现出其一技之长所以...博文来自:南方有乔木的博客

  我的电脑配置:cpu:i5-4200Hgpu:gtx950M昨天测试了训练一般的神经网络使用cpu和gpu各自的速度,使用gpu比使用cpu大概能节省42%的时间,当时我以为这么个程度已经很不错了。今...博文来自:lzy我就来随便逛逛的博客

  一、GPU介绍以及与显卡区别论述:百度百科-GPUGPU是显卡的处理器,称为图形处理器(GraphicsProcessingUnit,即GPU),又称显示核心、视觉处理器、显示芯片,是一种专门在个人电...博文来自:CYJ2014go的博客

  本篇结构前言概论CPU简介GPU简介并行计算CPU/GPU对比适于GPU计算的场景GPU开发环境参考博文一、前言因为工作需要,需要从github上找一个CUDA的DBSCAN聚类实现,刚开始从gith...博文来自:w1992wishes的博客

  作者:知乎用户链接:来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注...博文来自:m0_37876745的博客

  CPU(CentralProcessingUnit)中央处理器CPU一般由逻辑运算单元、控制单元和存储单元组成。在逻辑运算和控制单元中包括一些寄存器,这些寄存器用于CPU在处理数据过程中数据的暂时...博文来自:xi_gua_gua的博客

  显卡的发展可以说是非常的快,人们对于视觉化上的要求也越来越高,随着用户对于图像处理上面的要求不断超出处理器的计算能力。另一方面CPU处理能力也不断强大,但在进入3D时代后,人们发现庞大的3D图像处理数...博文来自:se poiler

  目录前言代码计时函数最后前言在上一篇的最后,我提到了一个矩阵乘法,这次与CPU进行对比,从中可以很明显GPU在并行计算上的优势.计时函数在贴出代码之前,来看下我常用的计时函数,可以精确到微秒级.首先头...博文来自:sorrower

  原文:飞鸿惊雪 地址点击打开链接本文主要探究OpenCL的GPU和多核CPU的异构计算问题,主要简要阐述了什么是OpenCL异构计算,讲述CPU和GPU各自的特点,并且把他们结合起来做异构计算的前景。...博文来自:指尖飞舞

  有网友在网上提问:“为什么现在更多需要用的是GPU而不是CPU,比如挖矿甚至破解密码?”以下是比较准确靠谱的回答:1、现在更多被需要的依然是CPU,只是GPU在大规模并发计算中体现出其一技之长所以...博文来自:xiaolang85的专栏

  本文是一个转载,觉得介绍的简单而且精辟,对应要认识cpu和gpu的我来说,很好,原文地址:异构计算的英文名称是...博文来自:天涯遍地是小草的博客

  学习数据集训练时,电脑没有GPU,所以当时训练时用的是CPU,也没有意识到两者之间在训练数据集有什么差别,直到在一次训练过程中,着重看了一下训练过程,才发现,训练时间是真的差距大。接下来就给大家讲一下...博文来自:shuiyixin的博客

  中self用法详解) 写的很不错,推荐看一看...博文来自:CSDN5529的博客

  最近比较有空,大四出来实习几个月了,作为实习狗的我,被叫去研究Docker了,汗汗! Docker的三大核心概念:镜像、容器、仓库 镜像:类似虚拟机的镜像、用俗话说就是安装文件。 容器:类似一个轻量...博文来自:我走小路的博客

  本篇文章是根据我的上篇博客,给出的改进版,由于时间有限,仅做了一个简单的优化。相关文章:将excel导入数据库2018年4月1日,新增下载地址链接:点击打开源码下载地址十分抱歉,这个链接地址没有在这篇...博文来自:Lynn_Blog

  多重背包问题:有N种物品和容量为V的背包,若第i种物品,容量为v[i],价值为w[i],共有n[i]件。怎样装才能使背包内的物品总价值最大?网上关于“多重背包”的资料倒是不少,但是关于怎么实现O(N*...博文来自:flyinghearts的专栏

  学事件分发是为了什么呢?还不是为了解决滑动冲突的。 实际上,如果仅仅是为了解决滑动冲突的,大可不必看源码,只需要掌握事件分发的外在规律即可。 只要记住这张图,再明白内部拦截法和外部拦截法,滑动冲突...博文来自:的博客

  本文主要介绍代码注入攻击的一种特殊类型:XPath 盲注。 如果您不熟悉 XPath 1.0 或需要了解基础知识,请查看 W3 Schools XPath 教程。您还可以在 developerWor...博文来自:WEB安全测试学习中……

  最近项目在使用树莓派,需要在树莓派上挂载多个USB转串口模块,但是linux下识别USB设备通常是按照插入顺序命名的,比如第一个插入就是USB0第二个USB1如此类推。。。这样就给我们写脚本或者写程序...博文来自:-Yo Law-

  在之前两次章我们都已经 说完了对 信息读写 和核验的操作, 那么剩余的类其实 有只用调用方法即可, 如果不会的可以看 JAVA小项目-银行管理系统(图形化界面)4-验证 博文来自:知足常乐的博客

  数据分析之 – 离群值(Outliers)   一:什么是Outliers Outliers是统计学专业术语,是指相比一组数据中的其它数据的极限值   二:极限值意味什么  1. 决定...博文来自:关注微信公众号【OpenCV学堂】

  扫二维码关注,获取更多技术分享 本文承接之前发布的博客《 微信支付V3微信公众号支付PHP教程/thinkPHP5公众号支付》必须阅读上篇文章后才可以阅读这篇文章。由于最近一段时间工作比较忙,...博文来自:Marswill

  基本功能1. 自定义标题栏。(标题栏不做任何功能)2. 有左右发送按钮。(这个只能自己和自己聊天哦,所以有左右发送按钮) (1)点击左边按钮发送按钮,在ListView的左侧显示。 (...博文来自:To_be_Designer

  jquery/js实现一个网页同时调用多个倒计时(最新的) 最近需要网页添加多个倒计时. 查阅网络,基本上都是千遍一律的不好用. 自己按需写了个.希望对大家有用. 有用请赞一个哦! //js ...博文来自:Websites

  强连通分量: 简言之 就是找环(每条边只走一次,两两可达) 孤立的一个点也是一个连通分量   使用tarjan算法 在嵌套的多个环中优先得到最大环( 最小环就是每个孤立点)   定义: int Ti...博文来自:九野的博客

  MATLAB编程题 题目描述:从一个NxM的矩阵C中找出与1xM的矩阵P欧氏距离最小的某一行row,要求不能用循环!!! 输入:矩阵C(NxM)、矩阵P(1xM) 输出:row 解题思...博文来自:henryzhihua

  command窗口是命令窗口,即为sqplus窗口,有命令提示符,识别sqlplus命令,基本的命令都可以执行 sql仅可执行DDL、select、DML等...博文来自:Ape55的博客

  sscc_learning:如果1×1卷积核设置的通道数与输入的feature map通道数一样, 那么这个卷积核与average pooling的作用是等价的。上面说的这句话不对吧,卷积核与上一层的各个channel对应相乘后求和,而pooling是每个通道之间独立计算,完全不一样的。

http://alsunah.net/shuzuchuliqi/240.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有