说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

专访中科院贾海鹏:给异构开发者的六个建议

HTML文档下载 WORD文档下载 PDF文档下载
日前,CSDN专访了中科院研究员贾海鹏,他就异构计算的趋势、开发现状、AMD新推出的hUMA(异构统一内存访问)技术等话题分享了自己的看法。

CSDN专稿 异构计算被视为计算机处理器继单核、多核之后的第三个时代,它将实现使用不同类型指令集和体系架构的计算单元,比如CPU和GPU之间的“协同计算、彼此加速”,从而突破CPU发展的瓶颈,有效解决能耗、可扩展性等问题。而异构开发也在走进更广的领域和开发者。日前,CSDN专访了中科院研究员贾海鹏,他就异构计算的趋势、开发现状、AMD新推出的hUMA(异构统一内存访问)技术等话题分享了自己的看法。

贾海鹏

CSDN:请您先简单介绍一下自己以及目前主要关注研究的领域。

贾海鹏:大家好,我是贾海鹏,2013年1月毕业于中国海洋大学,获博士学位。现为中国科学院软件研究所并行科学与计算实验室助理研究员。主要科研方向为: 众核体系架构下并行编程方法与优化技术研究

CSDN:您如何看待异构计算/编程领域这些年来的技术演变、应用拓展状况及未来发展?

贾海鹏:近年来,异构计算受到了越来越多的关注,这主要是因为由于材料、制造工艺、功耗和散热的限制,传统的通过提升CPU时钟频率和内核数量来提高计算能力已经变的越来越困难。与此同时,GPU等专用计算单元拥有相对CPU高的多的计算能力、数据传输带宽以及性能功耗比,但计算能力却远没有得到充分利用。在这种情况下, 如何有效利用计算系统中各种计算部件,并根据不同计算部件的硬件架构特点调度运行相应的计算任务,以充分发挥不同计算部件的计算能力,成为研究热点,异构计算也应运而生。

总体上来讲,异构计算共经过了三次技术演变:2008年GPGPU(General-purpose computing on GPU)的提出及应用推广,GPU架构的革命性变革,使GPU具备了执行通用计算任务的能力;2010年CPU+GPU异构计算,CPU与GPU协同运作,充分发挥系统中各种处理器的计算能力;2011年即将来的异构融合计算,CPU与GPU(协处理器)集成到同一块芯片上,以期待实现内存共享和统一地址访问,消除不同处理器间的数据传输消耗。

当前,异构计算已经涵盖了许多计算领域,从传统科学计算(分子动力学,数值分析、计算流体动力学,量子化学等)到桌面级应用(图像处理、多媒体、立体3D制作、物体识别等),都可以看到异构计算的身影。

从某种意义上说,CPU+GPU(协处理器)的异构计算是未来计算的发展趋势。 2012年11月发布的世界TOP500高性能计算机,采用异构架构的高性能计算机有62套,其中Titan高性能计算机更是荣膺榜首。而在桌面级甚至是移动应用领域,也有越来越多的应用程序移植到GPU上,以期望取得更好的性能或者是更好的能效比。面对繁杂的计算任务,根据处理器硬件架构的特点,让不同类型的处理器各司其职,比如CPU负责逻辑密集型任务,而将计算密集型和数据密集型任务交给拥有更高计算能力和存储带宽的GPU负责,才能充分发挥其计算性能。充分发挥计算系统中不同架构处理器在不同方面的优势,从而实现系统整体计算能力的最大化(或者最优化)利用是异构计算的真正意义所在。

然而,个人认为,异构计算推广还需要解决两个主要问题:
1) 编程难度大,开发成本高。 GPGPU编程的一个重要特点是“实现容易,优化难”:要达到理想性能,需要针对硬件特征和应用程序特点,投入大量精力,进行各种优化方法组合的尝试、折中和权衡;而优化工作的开展会增加程序出现bug的可能性。不幸的是,虽然AMD和NVIDIA都发布了各自的调试工具,然而目前GPU程序的调试依然非常困难。软件开发生态的构建是否能跟上硬件发展的步伐,是异构计算推广的关键。

2) 不同处理器间存在着“昂贵”的数据传输开销。 当前,CPU+GPU异构计算的模式是首先CPU将计算任务及所需数据传递给GPU,GPU计算任务完成后,在将计算结果返回给CPU。CPU和GPU之间的数据传输消耗了大量时间,甚至会完全抵消我们耗费心血优化GPU程序所带来的性能提升。减少甚至是消除不同处理器间的数据传输开销,是异构计算发展的一个重要问题。当前AMD发布的APU和Intel发布ivy bridge已经做了很好的尝试。但两者都没有真正的实现异构融合:共享内存(统一地址访问)以及完善的任务调度机制(合适的任务调度到合适的处理器上运行)。而AMD采用hUMA技术的HSA(Heterogeneous System Architecture,异构系统架构)可能会带来新的尝试和突破。比较值得期待。

CSDN:作为领域内的专业人士,您认为哪些开发者应该优先学习异构编程的技能?未来异构编程的技能会成为开发者的通用技能吗?

贾海鹏:采用异构编程无非有两个目的:一是追求高性能,二是追求最佳能效比。因此,开发实时性较强、性能要求较高或者注重能效比应用程序的开发人员可关注下异构计算,并学习相关技术。

个人认为异构计算是未来计算的发展趋势。尽管厂商可能会尽可能的隐藏异构计算的底层细节,提供开发人员统一的开发接口,以降低开发人员负担。甚至厂商可能会做到不会改变开发者编程习惯(当然这个很难)。然而,建立异构编程观念,掌握异构编程技术应该对未来软件开发人员的重要要求。

CSDN:您如何看待AMD最新推出的hUMA(异构统一内存访问)技术对GPUCPU融合带来的影响力,它有哪些优势和劣势?(优缺点)

贾海鹏:hUMA技术对异构计算最大的贡献是实现了CPU和GPU的内存共享,解决了CPU和GPU间数据传输所带来的时间消耗,应该说是异构计算一次大的技术突破。然而,这个技术如何解决内存一致性问题,CPU和GPU共享内存是否会增加本来已经非常困难的异构编程和优化的难度,整个编程生态是否能够跟上硬件发展的步伐,让我们拭目以待。

CSDN:HSA帮助开发者更高效、更容易的进行开发,并获得可观的性能提升及功耗降低,但这还需要一至两代产品更新才能实现。在当下,开发者学习和使用异构编程有价值吗?

贾海鹏:HSA确实是异构计算的一次重要技术革新,表现究竟如何我们还需拭目以待。但在当前,异构计算依然是研究特点,CPU+GPU的异构计算模式在众多领域中都得到了广泛的应用。对于开发人员来说,特别是对于之前我提到过的对异构计算有需求的开发人员来说,学习异构编程和技术,掌握最底层和最前沿的异构编程和优化方法,非常重要,也非常有价值。

CSDN:C++大师Herb Sutter曾发表过一篇著名的文章《The Free Lunch Is Over》,他表示程序员不断获取硬件升级带来帮助的日子已经结束了,并行计算或异构计算将是未来的趋势。Intel在内的公司不断推出了多核、众核处理器,虽然包括AMD和英特尔等公司做了很大努力,开发者驾驭多线程的编程难度很大,现在学习异构开发的难度依然很大吗?开发工具、函数、算法成熟吗?

贾海鹏:尽管厂商在降低异构编程难度上做了大量工作,也有效推动了异构计算的发展。但就我的开发经验来说,异构编程“实现容易,优化难”的特点依然存在:

1) 将程序移植到异构平台上相对简单,但是要获得高性能,需要进行不断尝试、劳心劳力的优化工作。例如GPU程序优化是各种优化方法相互权衡和折中的过程,很难说最大化某种优化方法后就一定会带来性能提升;而针对那些线程间负载不均衡或者是线程间存在依赖的非规则应用,在GPU这种大规模细粒度并行处理上的优化更是困难,需要如persistent thread,Uberkernel,coarse-granularity parallelism,queue等新优化方法的开发和使用。

2) 虽然各厂商都推出了各自的调试工具,异构程序特别是GPU程序的调试依然非常困难。

总之,虽然各厂商对异构编程都建立了良好的开发生态,但异构程序的开发成本依然很高,编写高性能的异构程序依然很困难。

CSDN:对想学习或入手异构编程的开发者有什么建议吗?

贾海鹏:异构编程就是追求高性能和好的能效比,其本质就是实现算法特性向硬件架构特征的高效映射。因此,根据我的经验,学习异构编程需要以下几点:
1) 异构编程绝对不是对应用程序的简单并行化,需要对算法的深入了解
2) 异构编程,程序性能与具体硬件架构相关,需要对目标硬件架构有个深入了解
3) 可从一个应用程序(比如矩阵乘)出发,逐步了解异构程序编写和优化的主要技术
4) 多coding,经验很重要
5) 多看文档,特别是随SDK发布的编程指南和优化指导等官方文档
6) 随时关注硬件发展

注:本文由付江采访,季红整理成稿

采集颜色、自动同步,还有比这更牛叉的儿童触控笔么? AppCan移动平台:为企业移动化进程加速 学生强则国强,访天猫推荐算法大赛Top 9团队 Mozilla与三星之子——Servo特性解读 360天巡启动公测 打造新一代企业级无线安全解决方案 继Storm和Spark之后,Hortonworks添加对Kafka的支持 一周消息树:国产操作系统最快10月发布,并支持应用商店 技术团队看板方法实践的难点分析 SAP云服务加速转型:调动资源瞄准中国市场 开发测试全承包!移动应用开发工具Telerik平台 火火火火火!看HomeKit如何改变物联网和智能家居? MDCC应用与工具关键词:平台、社交、垂直、解决方案 Leap Motion正式入华 将发布第二代软件SDK 120万操作/秒Redis Cloud 集群单一服务器非基准测试程序 2014微信开发者大会顺利结束 TOP10优秀微信开发商名单公布 【最佳实践】通过DevOps确保可靠和有效的信息安全 2048 Hello World:跨平台快速应用开发Python框架Kivy Forrester:关于私有云的10个事实 2014年8月操作系统份额:Win 8.x大涨,Linux继续下跌 0代码、不编程—交互式网页设计工具VXPLO 揭秘Instagram Hyperlapse背后的技术 【CTO俱乐部在线教育研讨会】用互联网技术深入创新教育产品 降低门槛!Hybrid应用开发框架LigerMobile 下一代IT革命:微服务器和雾计算 使用Mongo Connector和Elasticsearch实现模糊匹配 时隔8个月,物联网联盟AllSeen如今怎样? 《近匠》简网:开发零门槛 快速建原生App MDCC免费展位申请超预期 大会内容初曝光 在服务器与交换机定制之后,谷歌着手量子计算机CPU设计 电信天翼开放平台鲍占斌:优质能力 分成比例高 艾格拉斯副总裁王晓波:手游定价如何设计 高手快进!小弟有一事不明!!告急! 取ADO的recordset对象的recordcount属性总是 -1,如何解决? 这样的网络游戏一个值多少钱?请报价。 软件发布:《加密樵夫》 软件发布:《加密樵夫》 谁有Dreamweaver4.0的注册码,我晕,555555555…~~~~~~~~~ 我曾在本论坛看到一篇“用纯ASP代码实现图片上传并存入数据库中”的文章,可是怎样实现一个页面上传多幅图片呢,高手能否帮忙看一下? 如何检测一个超链接是不是死链接 软件发布:加密专家系统 只要点一下,妹妹我就以身相许 谁有Dreamweaver4.0的注册码,我晕,555555555…~~~~~~~~~11 请问只要是线程就有消息队列,还是此线程产生window后才有消息队列?在控制台程序中,在消息循环中,当受到一wm_timer消息时,此消息将发送给那一window procedure? 软件发布:三维几何画板 CSDN有徐州的朋友吗 请教高手一个关于图像格式的问题 高手清帮忙:如何获得一个控件的电子签名认证?急,急,急! 觅有时间有经验用MAPINFO开发GIS的高手? IE 能不能同时浏览2种以上不同设置的网页? 初级asp问题 询问-----上海在哪里有软件考试报名? 怎样用SDK的方法改变文本框的前景色和背景色?(内空) 能推荐几个有关COM、ActiveX技术的网站吗?每个10分不够再加。 请问ljhua,ASP网页怎样调用*.bat文件,是服务器上的还是客户机上的bat? ****************** 先散掉点分,省得走的时候累赘 ****************** UNICODE和WinMain 一个空战游戏,附源程序! 创建WebSnap应用程序(一) 请教一个http错误号 vs.net安装(2) 请教高手,怎样使用信使服务向局域网内的其他用户发通知? 使用过DeviceIoControl的高手请进: 不知用过jbuilder5的朋友有何感想 如何用程序中断拔号连接? DLL调用 搞什么鬼?不给超过三次? ADOTable如何查询数据? 软件发布:小精灵 vcguy,come on! 我在用resin做标签库时遇到问题,请大家帮忙。 没有源代码的情况下,由*.DLL该如何生成相应的*.LIB文件? 那位先生对 Oracle Spatial比较感兴趣~~~~~~~~~~~~ 如何在电子邮件中加入JAVA语句,重谢!!! 我不知道~ 竟猜: 成精的狐狸不是狐狸mm就是狐狸jj。那HolyFire 是狐狸jj还是狐狸mm呢?? 软件发布:图标精灵 请问在网上怎样发传真! 为何我的表只能做一页 怎样从显示名称获得它的PItemIDList ********如何在窗体中动态的创建组建?********来者有分 笔记本电脑和台式机怎样连起来传输文件! 很菜的问题,请各位指教谢谢! 在括号里填上符合条件的最小自然数( )÷( )=19······6 将1-12分别填入图中的12个小方格内,使得每条边上的四个数的和相等,这个和最大是多少? 把19分成若干个自然数的和,如何分才能使他们的乘积最大 8[ ]8[ ]8[ ]8=2括号里填多少 将-8,-6,-4,-2,0,2,4,6,8这9个数分别填入图中9个方格中,使得每行3个数,每列3个数 把19分成n个自然数的和,怎样分才能使它的乘积最大. ( )+( )=( )( )-()=( )( ) 把这几个数字填到括号里去 任意画出由九个数组成的方框,设中间一个数为x,这九个数的和y,试用含x的代数式表示y 1.把19分成几个自然数的和,要使这些数的乘积最大,应该怎么分?最大的乘积是多少?2.甲、乙、丙三乡各出等量的钱,购买若干辆汽车,买好后,由于丙乡需要量少,结果丙乡比甲、乙两乡各少要15辆 在括号内填上合适的数字(不能重复)1/( )+1/( )+1/( )+1/( )+1/( )+1/( )+1/( )+1/( )=1 如图是某月的月历,用正方形圈出九个数,设最中间一个是x,则用x表示这9个数的和是? 把19分成若干个自然数的和,如何分才能使自然数的乘积最大?最大值是多少?要算式解. 一道数学题2()-()2=()7括号里的数该填几 从月历中框出3*3九个日期,他们的和有怎样的规律?将方框向左向上移动一格,这九个数的和会发生什么变化. 把19分成几个自然数的和,这些加数的连乘积最大是? 1/5=1/()+1/()【括号里填不同的数】 如图,机械手要将一个工件从图中A处移动到B处,但是这个工件不能碰到图中的障碍(不包括坐标轴),试用坐标写出一条机械手在移动中可能走的路程 已知四个互不相等的整数的乘积等于9,这四个数的和是? 4 4 4 4=16 顺序不变,中间要填什么符号才能等于16 设在排成每行7天的月历表中某数是a,那么它下方第1个数是几?用代数式表示.这是几次多项式? 已只4个互不相等的整数的乘积等于9这4个的和是几快 9 7 21 5 8 14 ( ) ,问:括号里填什么? 设在排成每行7天的月历表中某个数是a,那么它下方第一个数是几?用代数式表示,这是几次多项式? 一个整数和一个小数的乘积等于它们的和,求这两个数. 把1,2,3,4,5,6,7,8,9分别填空在正方形的方格 某月的月历上连续三天的日期之和不可能是( ) a.18 b.78 c.65 d.9 如何证明两个数的乘积等于最大公因数与最小公倍数的乘积 把2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 3.1分别填在9个格子里,使横竖斜行都得8.1 你能否用方框在如图的月历中圈出9个数,使这9个数之和为171?如能,请说明理由;如不能,在下一个月的月在下一个月的月历中能否圈出?为什么? 有三个正整数一个比一个大1,三个数的乘积是210,求三个数 把0、1、2、3、4、5、6、7、8、9分别填在方框里怎样填? 口+口=口+口=口+口=口+口=口+口 在2008年12月的月历上能框出和是80的9个数吗?能框出和是180的9个数吗? 如果3个连续的正整数的乘积是210,那么这3个数分别是多少? 1、将九个连续自然数填入3*3的方格内,使得每行、每列以及每条对角线上的三个数的和都等于66.2、将图中的数重新排列,使得每行、每列以及每条对角线上的三个数的和都相等.(22 )(30 ) 2008年12月份的月历卡,一共可以框出几个不同的和?长方形的长是3,宽也是3!(每次都要框9个数) 三个连续正整数,他们的乘积是336,求这三个数. 在九个方格中填入-8、-6、-4、-2、0、2、4、6、8使每行,每列,每条对角线上的三个数等于零 在2008年12月的月历上能框出和是80的9个数吗?要方法! 三个连续的正整数,如果后两个数的乘积的差为114,求这三个数的和 将数字1,4,5,6,7,8,9分别填入如图的方格中,要求每个格子中的数字都比它左边格子中的数字和上边格子中的数字大,问:共有几种填法 将0.3;0.6;0.9;1.2;1.5;1.8;2.1;2.4;2.7九个数填在方格中,使各行个列及对角线上的三个数的和均相等 三个正整数的乘积为84,其中两个数的和等于另一个数,这三个数分别是什么? 1、2、3、4、5、6中选出四个数字,填入方格里,使得右边的数比左边的大,下面的比上面的大,几种填法?图是“田”字图 将0.3 0.6 0.9 1.2 1.8 2.1 2.4 2.7九个数填在下面的方格里,是各行各列及对角上的三个数的和均相等. 怎样修改:自然数可以分为奇数、偶数、质数、合数.(注:不能改变“自然数”、“偶数”、“合数”这几个字) 从1、2、3、4、5中选出四个数字,填入下图的方格里,使得右边的数比左边的大,下面的数比上面的数大,一共有多少种不同的填法一个3列2行的表格,最右边的一列上行是6下行是7 把-7,-5,-3,-1,1,3,5,7,9这九个数填在九个方格内使每横的三个数每竖的三个数以及对角线上的三个数的和相等 什么叫自然数 小数 百分数 奇数 偶数 质数 合数 因数 倍数 公倍数 互质数 三个连续自然数的和是27,这三个数的最小公倍数是( ). 九个方格,第一行左边一个数是3,第二行左边一个数是6右边一个数是2,在其他空格中填上什么数字才能让...九个方格,第一行左边一个数是3,第二行左边一个数是6右边一个数是2,在其他空格中填 把2,3,4,5,6,7,8,9,10这九个数填到九个方格中,使每行每列,以及对角线上的各数之和都相等 七个连续的自然数 最大的两个数的和比最小的数大1998 那么中间的那个数是?要用方程和等差数列来解 从1,2,3,4,5中选出四个数,填入图中的方格内,使得右面的数比左边的数大,下面的数比上面的数大,那么有多少种填法,写出算式.图片为长方形分成四个填数… 0.1.2.3.4.5.6.7.8.9这一组数字当中,分别填到方框里(每个数只能用一次),使三个算式成立(至少写两个答 已知:2^a·27^b·37^c=1998其中a.b.c为自然数,求(a-b-c)^1998的值 把-1、+2、-3、+4、-5、+6、-7、+8、-9填入图所示的的方框内(3×3),使得每行每列每一条对角线上的三个数都满足:1.三个数乘积都是负数 2.三个数绝对值得和都相等. 将0、1、2、3、4、5、6这七个数字分别填入下面算式的方框内,每个方框内只许填一个数字,使算式成立( )x( )=( )( )=( )( )除( ) 七个连续自然数的和,最大的两个数的和比最小的数大1998那么中间的那个数的和是多少?要求出中间那个数算式怎么列? 如图,在另两个方框内各填入一个数,使前两个数之和比后两个数之和小5,且三个数之和为0-3 ( )( ) 用0.1.2.3.4.5.6.7.8.9这10个数添在方框里,试下面的3个算式成立□+□〓□□―□〓□□□÷□〓□
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn