CPU与GPU如何异构?

当深度学习遇上异构并行计算 - 推酷
当深度学习遇上异构并行计算
作者:@异构并行计算-风辰
近几年来,以深度神经网络(DNN)为代表的深度学习如火如荼,深度学习的研究领域从开始的图像识别(如imagenet比赛)到现在的自然语言处理,几乎有席卷一切机器学习研究领域的趋势。
对于深度神经网络的训练来说,通常网络越深,需要的训练时间越长。对于一些网络结构来说,如果使用串行的X86 处理器来训练的话,可能需要几个月、甚至几年,因此必须要使用并行甚至是异构并行的方法来优化代码的性能才有可能让训练时间变得可以接受。
人类生活的方方面面存在着并行或者并发,边吃饭边看电视,双手同时拔草,甚至吃饭时,嘴巴的动作和手的动作也是并行的。和人类社会广泛存在并行不同的是:计算机编程几乎一直都是串行的,绝大多数的程序只存在一个进程或线程。对于并行和向量化的研究可以追溯到20世纪60年代,但是直到近年来才得到广泛的关注,主要是自2003年以来,能耗和散热问题限制了 X86 CPU频率的提高,从而导致多核和向量处理器的广泛使用。
2003年以前,在摩尔定律的作用下,单核标量处理器的性能持续提升,软件开发人员只需要写好软件,而性能就等待下次硬件的更新,在2003年之前的几十年里,这种“免费午餐”的模式一直在持续。2003年后,主要由于功耗的原因,这种“免费的午餐”已经不复存在。为了生存,各硬件生产商不得不采用各种方式以提高硬件的计算能力,以下是目前最流行的几种方式是。
让处理器一个周期处理多条指令
,这多条指令可相同可不同。如Intel Haswell处理器一个周期可执行4条整数加法指令、2条浮点乘加指令,同时访存和运算指令也可同时执行。
使用向量指令
,主要是SIMD和VLIW技术。SIMD技术将处理器一次能够处理的数据位数从字长扩大到128或256位,也就提升了计算能力。
在同一个芯片中集成多个处理单元
,根据集成方式的不同,分为多核处理器或多路处理器。多核处理器是如此的重要,以至于现在即使是手机上的嵌入式ARM处理器都已经是四核或八核。
4) 使用异构处理器,不同的架构设计的处理器具有不同的特点,如X86 处理器为延迟优化,以减少指令的执行延迟为主要设计考量(当然今天的X86 处理器设计中也有许多为吞吐量设计的影子);如NVIDIA GPU和AMD GPU则为吞吐量设计,以提高整个硬件的吞吐量为主要设计目标。
标量单核的计算能力没有办法接着大幅度提升,而以深度学习为代表的应用对硬件计算能力的需求依旧在提升,这是个实实在在的矛盾。在可见的将来,要解决这个矛盾,软件开发人员只有代码优化和并行可以选择。
从2006年开始,可编程的GPU越来越得到大众的认可,GPU是图形处理单元(Graphics Processing Unit)的简称,最初主要用于图形渲染。自20世纪90年代开始,NVIDIA、AMD(ATI)等GPU生产商对硬件和软件加以改进,GPU的可编程能力不断提高,GPU通用计算比以前的GPGPU(General-Gurpose Computing on Graphics Processing Units)容易许多,另外由于GPU具有比CPU强大的峰值计算能力,近来引起了许多科研人员和企业的兴趣。
在深度学习应用领域,自从cuda-convnet为利用gpu的计算能力设计开始,现在主流的深度学习平台(如caffe, theano)都支持GPU的训练,可以毫不讳言的说:GPU硬件已经是深度学习训练平台的标准配置。
要将使用GPU训练获得的深度学习模型部署给用户使用时,同样需要考虑深度学习算法对硬件计算能力的需求。由于不是每个客户都有GPU硬件,故在目前实际应用中,主要的部署平台是:X86(桌面端)和ARM(移动端),为了提高吞吐量,使用更少的服务器支持更多的访问请求,或提高用户使用体验,为X86 和 ARM处理器优化就变得很有意义。
由于各种各样的原因,大多数软件开发人员并没有很好的并行和代码优化理论和代码可供参考。最近华章出版公司出版的、由异构并行计算领域专家风辰编写的《并行算法设计与性能优化》、《并行编程方法与优化实践》和《科学计算与企业级应用的并行优化》填补了国内这一领域的空白。其中《并行算法设计与性能优化》和《并行编程方法与优化实践》已经上线,可以在京东和当当上购买。
《并行算法设计与代码优化》关注在并行优化和并行计算相关的理论、算法设计及高层次的实践经验;由于这本书填补了国内代码性能优化和并行计算的空白,得到了吴韧老师的强烈推荐。如果读者想要了解代码优化和并行化背后的理论基础,可购买此书。
《并行编程方法与优化实践》关注于C程序设计语言的向量化和并行化扩展及算法到硬件的映射;此书介绍了常见的SSE/AVX/NEON SIMD指令集编程,以及用于GPU的异构并行编程语言CUDA、OpenCL和OpenACC,以及常见的用于多核编程的OpenMP标准。并且以稠密矩阵运算和图像处理为例,介绍了如何使用这些工具优化程序性能。
《科学计算与企业级应用的并行优化》则关注于如何将线性代数、偏微分方程求解、分子动力学和机器学习领域的常见算法优良的在X86和GPU平台上实现出来。
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致您所在的位置: &
什么是真正的异构计算?
什么是真正的异构计算?
一些处理器厂商总是在有限的CPU范畴谈论异构计算,他们认为所谓异构计算只是单纯地把任务在CPU核心间来回切换。我们并不认同这种狭义的理解,在我们 看来,异构计算的真正未来一定会超越CPU,它采用现代SoC中所有多样且专用的处理器,包括GPU、DSP及多媒体核心等。
一些处理器厂商总是在有限的CPU范畴谈论异构计算,他们认为所谓异构计算只是单纯地把任务在CPU核心间来回切换。我们并不认同这种狭义的理解,在我们 看来,异构计算的真正未来一定会超越CPU,它采用现代SoC中所有多样且专用的处理器,包括GPU、DSP及多媒体核心等。通过协调这些处理器独特的性 能表现以及各自特点,确保相应的任务分配给最高效的处理器去完成,从而最大化性能和功效,而这样的性能和功效远远超越由单一CPU通用运算核心所能达到的效果。
举例来说,音频和目标侦测在低功耗DSP上执行更高效,而大规模并行GPU则较适合做图像合成及处理。因为不同的处理器架构对应不同的算法,因此我们并不 认为单靠增加CPU核心就能提高整体系统的性能或功效。相反,通过将相应的任务从CPU切换到其他更有效的处理核心,我们已经成功提升了性能和功效。
基于使CPU充分利用异步多处理(aSMP)的设计,美国高通公司在移动设备上实现了这种平衡。这种功效特性为美国高通技术公司的高通骁龙移动处理器所独 有,允许每个CPU核心独立运作,并能动态调整电压和频率,以满足具体性能需求。该设计其实终结了一种做法,即为了节省功耗或增强性能,采用不同尺寸 CPU或CPU核心集群来实现其在不同时间的交替运行。
而其他处理器厂商的设计缺少这种精准控制,所以只能通过添加小型核心来补偿高功耗大核心,以实现峰值性能。另外,即使他们能使任务在高性能/高功耗核心和 低性能/低功耗核心之间切换,所有这些核心处理任务的方式却没有任何区别,就像用大锤和小锤钉钉子一样。如果遇到的都是像钉钉子这种简单的任务,这样的设 计足够了。可现实是,目前移动处理器所面临的任务更具动态性,这也是为什么高通骁龙处理器要基于真正的异构计算模式来设计,就像组成了一套由专用处理器组成的工具箱,以确保最高效的操作。
真正的异构计算架构使CPU、GPU、DSP和多媒体子系统以及相机ISP等其他专用核心能够更有效地协同合作,与单单依靠CPU相比,性能更高,功耗更低,从而为搭载骁龙处理器的终端带来更好的用户体验。
点击,观看视频讲解。【编辑推荐】【责任编辑: TEL:(010)】
关于&&的更多文章
移动异构计算是相对于同构计算来说的,同构计算就是使用同一个处
在Android开发中,优化,是一直困扰开发者的一个难题
在百年老店诺基亚和我们依依惜别之后,上周我们又迎来
大家都知道iOS的发展之迅速,这对于开发者来说,无疑
20多年以来,《软件工程:实践者的研究方法》一书是最受学生和行业专业人员欢迎的软件工程指南。它在全面而系统、概括而清晰地介
Windows Phone专家
Android开发专家
51CTO旗下网站专访刘文志:异构并行计算的未来很光明
发表于 14:22|
作者夏梦竹
摘要:异构计算在国内外的发展趋势怎样?它在企业的就业情况如何?开发者又该如何学习并行计算?深度学习与机器学习有何区别?带着这些疑问,CSDN联系上了刘文志,请他对此一一解答。
刘文志,花名风辰,毕业于中国科学院研究生院,闻名于并行计算江湖,尤其善长异构并行计算(X86、ARM、GPU、APU、PHI)和大规模集群计算相关技术,有7年相关经验,涉及图像处理、计算机视觉、数据挖掘和石油勘探。曾任英伟达并行计算工程师(协助建立英伟达北京CUDA团队)、百度在线高级研发工程师(协助建立百度深度学习实验室异构计算团队)。著有《并行算法设计与性能优化》、《并行编程方法与优化实践》。异构计算在国内外的发展趋势怎样?它在企业的就业情况如何?开发者又该如何学习并行计算?深度学习与机器学习有何区别?带着这些疑问,CSDN联系上了刘文志,请他对此一一解答。
CSDN:请先自我介绍下以及目前所负责的领域。
刘文志:大家好,我是刘文志,从事异构并行计算、尤其是基于GPU的异构并行计算的同学可能更熟悉我的网名“风辰”。2011年,我从中科院毕业后加入了NVIDIA
CUDA团队,2014年初离开了NVIDIA 加入了吴韧老师的团队,是吴老师的第一位下属。我现在在一家创业公司负责异构并行计算团队,团队的主要职责是为公司的应用、系统提供基于GPU、X86、ARM及其它嵌入式处理器的性能优化支持。一句话总结是:这几年从和学术界打交道转到了和工业界打交道。
CSDN:你从事并行计算这么多年,尤其在异构并行计算领域颇有造诣,你为何会想到从事这一领域?有没有什么故事可以分享?
刘文志:从事这一领域可以说是机缘巧合,也可以说是兴趣使然。我本科时学习的是应用化学专业,因为化学方面有很多并行计算的需求,比如要模拟分子的最优构型、模拟一些特质的化学性质,当时通过高斯等软件了解到并行计算,觉得并行计算比较有意思,能做单机做不了的事情。2008年进入中科院读研,那个时候基于GPU的并行计算刚出现,当时的导师对GPU并行计算比较感兴趣,想做一些试验,而我的背景正合适,所以就成为了试验品。知识和经验丰富后,就扩充了GPU并行计算方面的知识和实践,渐渐的覆盖到集群、X86、ARM等领域的并行计算。
CSDN:《并行算法设计与性能优化》与《并行编程方法与优化实践》汇聚了你的真知灼见,在你看来该书适合什么样的读者?这两本书有何不同?
刘文志:我还是先来说两本书的不同吧!《并行算法设计与性能优化》侧重在并行计算和代码性能优化的理论,以及一些辅助理解理论的实例;而《并行编程方法与优化实践》侧重在进行并行编程需要掌握的一些库、程序设计语言的细节,以及一些如何使用这些语言、库来优化算法的实例。
对于《并行算法设计与性能优化》来说,它适合想要建立雄厚的并行计算和代码性能优化的基础的同学。而《并行编程方法与优化实践》适合因为项目需要,需要学习一种语言或库来解决问题的同学。如果想要长期从事并行计算方面的工作的同学,更要关注《并行算法设计与性能优化》。
从另外一方面来说,《并行算法设计与性能优化》可以看成《并行编程方法与优化实践》的基础,需要《并行编程方法与优化实践》的同学一定需要《并行算法设计与性能优化》。
CSDN:当初写这两本书的初衷是什么?分别历时多久完成的?你如何在进度压力下,享受写书带来的快乐?
刘文志:最早是因为想总结一下自己的知识,避免知识过时和跟踪并行计算领域的最新进展。开始并没有打算出版,所以语言、表达方式、内容结构都没有特别的在意,可以说只有我自己能看懂。后来决定出版后,花了大约一年的时间来补充、删减内容,让它们更具有系统性和可读性。
写书本身是一个富有乐趣的行为,写技术书籍更有乐趣,如何在解说知识更形象,更具有趣味性,何时恰当的增加代码示例都是非常有趣的,而想到读者能够从书中获得更多的知识时,这又是一项更大的乐趣。
写书时,进度的压力永远存在,所以计划非常重要。合理的计划之后,写书的压力就变成了工作的压力之下的一种消遣。
CSDN:目前,异构计算在国内外的发展趋势是怎样的?你怎么看待异构并行计算的未来?
刘文志:异构并行计算在国内外正在迅猛发展,我毕业的时候都担心找不到相关的工作,而今天无论是学校、超算中心还是企业对异构并行计算人士的需求都得不到很好的满足。整体来说,异构并行计算现在向以下几个方向发展:
集群计算。这是传统高性能计算的领域。但是今天高性能计算已经演变成了异构并行计算的一部分,越来越多的高性能计算集群使用GPU、MIC,甚至FPGA等。单机计算。推动单机计算向异构并行计算发展的主要动力是游戏、计算机辅助设计等,而主要表现是GPU+CPU的异构计算。X86处理器满足不了游戏渲染对计算能力的需求,必须需要GPU的存在,实际上现在Intel
X86处理器芯片中集成显卡所使用的面积已经超过了CPU的面积。移动计算。近几年发展表明,人们对手机的需求比对PC的需求更大。目前几乎所有的移动芯片解决方案都是异构的,除了有CPU、GPU之外,他有视频编解码单元,有音频处理单元。人类倾向于把更多工作内容转移到手机上,而为了保证续航时间,移动处理器的设计一开始就不是以高性能为目标,这使得要在移动处理器上获取高性能是比较难的。嵌入式计算。在一些恶劣工作环境下,只有DSP和FPGA能够满足要求,在DSP和FPGA上优化程序性能需要的技能和X86/GPU具有明显的区别。
在我看来,异构并行计算的未来是光明的,在未来几年内异构并行计算会得到进一步的发展。目前来说更多的是异构并行计算围绕算法发展,即软件开发人员将算法移植到异构并行计算平台上,未来将会出现越来越多的为异构并行计算平台设计的算法,而企业对异构并行计算人士的需求缺口会进一步扩大。
CSDN:深度学习领域是计算机科学一个新兴领域,什么是深度学习?它与机器学习有何区别?目前深度学习面临的挑战有哪些?
刘文志:深度学习并不是一个新兴领域,一些著名的研究人员(如hinton)80年代就已经在研究它了。深度学习主要是指神经网络,它的主要特征是:不需要手动选择特征,特征是通过算法从数据中学习得到的,这能够减少人工选择特征的一些缺点。深度学习是机器学习这个大方向中的一个小方向。传统的机器学习算法需要手动选取特征,而深度学习则从数据中学习特征。
目前深度学习面临的挑战有很多,有算法方面的,也有实现方面的。从算法方面来说,如何设计一个高性能的神经网络很重要,如何组织神经网络(有多少层,每层做什么操作,每层的神经元数量),如何初始化参数。从实现方面来说,如何高效的实现算法,降低神经网络的训练时间,如何在分布式环境下高效的训练神经网络。最后如何收集到足够的数据来训练神经网络的同时又避免过拟合。
CSDN:对于开发者而言应该如何学习并行计算,有没有经验可以分享下?
刘文志:并行计算的思维方式和串行计算具有明显的区别,要想学好并行计算建议同学们从以下几个方面努力:
培养并行思维,学习一些如何通过并行计算解决常见问题的实例,比如nbody问题、偏微分方程求解问题等。了解一些硬件、系统的细节。并行编程以提高计算速度为目的,这要求开发人员了解硬件、系统的具体细节,以避免走进了硬件、系统的缺陷。学习一些常见的并行编程语言、工具的使用。只有使用编程语言、工具才能实现并行算法,才能在某个具体的硬件上运行,才能了解算法是否优良。边学习边编写并行代码。学习的最好的办法是做出来,如果你制造出了飞机,还需要学习制造飞机吗?做才是最好的学习方法。保持正直、谦逊的心态。
CSDN:未来的下一步规划是什么?
刘文志:从短期、中期和长期来说,我的规划如下:
我的短期规划是准备写一本OpenCL的技术书籍;让国人更了解OpenCL这个生态环境。这件事情正在做,希望不久之后就可以完成。
我的中期规划是建立一个世界领先的异构并行计算团队;这件事情现在正常做,相信三四年后会成功。
我的长期规划想改变中国在异构并行计算领域的现状。这件事情我正在想如何去做,有人如果想到如何去做,可以联系我。查看试读样章:、。CSDN现开启图书作者专访栏目,欢迎推荐采访人或自荐,来分享你的成长经历和相关技术,相关信息请发送邮件至:xiamz#csdn.net(#换成@)。更多精彩内容,请点击或搜索关键字查看。
推荐阅读相关主题:
CSDN官方微信
扫描二维码,向CSDN吐槽
微信号:CSDNnews
相关热门文章解析HSA----CPU+GPU异构系统架构 | Imagination中文技术社区}

我要回帖

更多关于 gpu和cpu的区别 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信