异构计算的挑战
进入新世纪之后,软件研发面临并行编程的技术变革、硬件架构面临异构计算的挑战,这些改变是否意味着新的机遇,取决于能否建立良好的生态链。
2004年12月,C++标准化委员会主席、著名程序员Herb Sutter在自己的个人网站发表了一篇影响深远的文章《免费午餐已经结束》(中文版发表于本刊2006年11月期)。它第一次使广大研发人员开始关注并行编程,也因此被JBoss之父Rickard Oberg称为该年度最重量级的技术文章。
这篇文章指出,硬件的突飞猛进,曾经使软件开发长期以来一直在享用免费大餐:不用改变代码,只需更换新硬件,就能得到整体性能的提升。但进入新世纪之后,由于散热、功耗和电流泄漏等物理限制,通过不断提升时钟速度进一步提高芯片性能渐渐走入死胡同,除了继续扩大晶体管集成规模之外,要大幅提升性能,只能通过多核实现。软件研发面临一次重大技术变革——并行计算。
6年后,多核架构已经成为主流,甚至大部分高端移动设备里也都是双核处理器,超级计算能力进入家家户户甚至每个人的掌中。下一个硬件架构大趋势又将是什么?又将会对软件研发产生怎样的影响?
今年6月在西雅图举行的AMD Fusion Developer Summit上,“进入异构计算时代”成为事实上的主题:
AMD在大会期间的一系列发布,包括融合了Fusion A系列APU芯片、开放的FSA(Fusion System Architecure)架构、也将走向异构的下一代GPU、gDEBugger和PPA等多款开发工具等等,充分显示它全面拥抱异构计算时代的决心;
Herb Sutter在主题演讲中正式宣告继单核、多核之后异构计算时代已经到来,他还同时发布了基于DirectCompute的并行计算库C++ AMP,除了在下一版Visual Studio中提供支持外,C++ AMP也将作为标准向业界开放;
而在处理器市场举足轻重的ARM也在演讲中明确表示,认同异构计算是大势所趋,不顺应这一潮流的公司将被无情抛弃。
我们已经看到,无论是移动、桌面还是云计算各个平台,无论是在芯片级、机器级还是数据中心级,单位能耗所提供的性能、可扩展的并行处理能力等成为共同的焦点。在CPU的潜力挖掘渐尽的情况下,技术人员纷纷将目光投向天生适合并行计算的GPU。为了更好地支持HTML5在图形、多媒体上的表现,IE9、Chrome等现代浏览器都将GPU加速作为研发重点。在云端,Amazon EC2已经于去年年底增加了群集GPU实例,可以以极低的成本提供超级计算能力。AWS的灵魂人物之一James Hamilton此前甚至还讨论过包括FPGA、ASIC等更多不同指令架构的异构系统。而曾经夺得超级计算机世界冠军的天河1A,也配备了近万个GPU。
技术变革意味着挑战,更意味着机遇。芯片领域目前的格局变化已经充分证明了这一点。必须看到的是,并行计算其实并没有像多核硬件走入普通家庭那样在程序员社区普及。而与并行计算相比,异构计算对软件研发的挑战有过之而无不及,要进入主流可谓任重道远。这些都依赖于生态链的建设。标准的制定与推广,语言、编译器、框架、运行库等的支持,都不是易事。而开发人员的重视和培训,开发社区的建设和成功运营,更是重中之重。
作为目前唯一一家同时具有一流CPU和GPU设计能力的企业,AMD抓住异构计算的大趋势,首次举行面向开发人员的大会,开展奖金为5万美元的OpenCL编程大赛,推出开放的FSA架构(CPU和GPU中立)和Fusion战略争取更多的同盟军,已经走在了正确的道路上。
作者刘江,全球最大中文IT社区CSDN暨权威技术媒体《程序员》总编。北京图灵文化有限公司联合创始人、总编。曾任华章公司副总编、软件开发技术杂志Dr. Dobb’s Journal中文版《软件研发》主编。
本文选自《程序员》杂志2011年08期,更多精彩内容敬请关注08期杂志