多核挑战软件开发
6月5日,Google正是对外宣布,它已收购专门提供基于高性能、多核和并
行处理器的软件编程工具的专业厂商PeakStream。尽管目前尚不知晓Google对于PeakStream的未来计划,但是业界普遍认为,Google肯定是在为开发多核系统所用的高性能应用软件做准备。
事实上,从2006以来,在Intel、AMD两大巨头的大力推动下,多核的普及已成为必然。然而,要真正发挥多核的潜能并不容易,因为针对多核或多线程的软件开发要比单核或单线程编程工作艰难得多。因此,随着多核的普及,如何开发与多核相适应的软件日益成为众人关注的热点问题,众多软件供应商,如Google、Microsoft、Oracle、以及Linux的软件供应商都在积极着手准备,向多核过度。
多核时代来临
说到底,出现多核的最根本原因是人们对计算能力的永无止境的追求。尽管这些年来,处理器从来没有停止过前进的脚步,但每一次性能的突破,换来的只是对更高性能的需求,特别是在油气勘探、气象预报、虚拟现实、人工智能等都高度依赖于计算能力的场合,对性能的渴求更加迫切。
相对而言,多核对台式机和移动设备上的软件挑战更大一些
比如,油气勘探作为一个对计算能力需求非常旺盛的行业,其快速准确的计算对油气田的发现起到十分关键的作用。承担冀东南堡油田三维地震勘探计算的中国石油东方地球物理公司,整个研究院装机容
量就达到了8000多个CPU,今年年底将达到1万个CPU,每秒可以完成40万亿次的运算;承担全国天气预报计算任务的中国气象局国家气象中心目前的计算能力也超过每秒20万亿次,但是,目前这些计算能力仍然不能满足他们的需求。还有金融企业,他们希望对金融企业进行更加高性能的分析,医药界希望在开发新药方面能够加快速度,一些商业分析师希望对零售业分析更加快捷高效,这些工作都严重依赖于计算能力,种种需求有力地推动了计算能力的提升。
过去计算能力的提升一直在摩尔定律的指引下,沿着提升CPU时钟频率的这条道路前进,从初期的几十兆赫兹到不久前IBM的Power 6达到了4.75GHz,设计人员甚至想过提升到7-8GHz。不过,进入2002年以来,CPU提升主频的困难越来越大,因为主频的提升带来了散热和功耗的大幅增加等问题。在几年前,英特尔和AMD都调整了研究方向,开始研究在同一CPU中放置多个执行内核。到2006年年末,英特尔已在全球同步推出了4核的面向服务器、工作站的英特尔至强5300处理器和,AMD的四核处理器也是指日可待。
多核的好处非常明显。首先,由于是多个执行内核可以同时进行运算,因此可以显著提升计算能力,而每个内核的主频可以比以前低,因而总体功耗增加不太。其次,与多CPU相比,多核处理器采用与单CPU相同的硬件机构,用户在提升计算能力的同时无需进行任何硬件上的改变,这对用户来说非常方便。正是由于多核的这些优点,所以,多核很快被用户接受,并得以普及。根据IDC的一份报告,到今年年底80-90%的基于PC的CPU的出货量都是基于多核的。
多核挑战软件开发
毫无疑问,多核给我们提供了更经济的计算能力。但是,这种能力能否善加利用还要取决于软件。软硬件在这里的关系就如同路与车的关系一
样:如果把多核平台看成是高速公路的话,软件可以看成是高速公路上的汽车,高速公路只是提供了一个基础,而到底能发挥多大运输能力,还要看汽车能跑多快。
更重要的一点是,如果不针对多核进行软件开发,不仅多核提供的强大计算能力得不到利用,相反还有可能不如单核CPU好用。因为采用多核的CPU其每个内核的主频比主流的单核CPU通常要低一些,如果你的程序只能发挥出一个内核的效用的话,自然不如单核CPU好用。
“从某种程度上说,对于软件开发者而言,CPU主频提升就像是免费的午餐,此前所有的程序很自然地会从主频的提升中受益,而如今多核出现了,这种免费的午餐没有了。我们必须针对多核重新进行软件设计。”中科院软件所并行计算实验室副主任张云泉对记者表示。
未来的多核芯片将无处不在,多核的软件开发已是摆在软件产业界中一个很大的挑战。有专家甚至预言,针对多核和多线程的软件开发将是未来十年软件开发的主要挑战。
不过,多核对于不用应用领域的软件影响并不相同。在清华大学高性能计算机中心副主任陈文光看来,科学计算、互联网服务器和PC机及移动用户所使用的软件有很大的不同,因此,多核给它们带来的挑战也不同。
第一类是传统的科学计算机用户,他们的软件大部分是高性能计算专家写的,也多是并行的,他们对MPI、OpenMP等并行编程模型也已经掌握。对这类用户而言,多核提供的是更高性能的执行平台,他们下一步工作是对进行高性能计算的系统软件针对多核优化,但这不是当前最主要的问题。所以对这类用户来说,多核的应用基本不存在多大困难。
第二类是一般意义上提到的服务器,如银行以及搜狐、Google这样的互联网公司,它们主要的业务特征是并发的访问。这些应用具有天然的并行性,如多用户的访问本身就是并行的。对于这些一般意义上的服务器、数据库处理而言,多核同样也为他们提供了一个便宜而且高性能的计算平台,面临的挑战也不是很大。
第三类是移动用户和桌面用户,他们是面临挑战最大的群体。这些用户的原有大部分程序都是串行的,如大部分串行程序是用Visual Basic语言编写的,怎样为这类用户提供很好的并发编模型和开发环境,以帮助他们开发有效的并行程序,这是多核应用里最重大的挑战。
“尽管软件研究人员在编程模型、编译器、自动转换、调试工具等方面做了很多的工作,效果还是不错的,但总体上看把一个现有软件并行化其代价还是很高的。因此,对第三类用户而言,多核对他们的挑战更大。”陈文光说。
实际上,Intel、AMD以及相关软件商们都已经注意到软件方面的问题。“为了加快多核的普及,Intel与软件开发商、软件开发商、操作系统厂商和独立软件开发商和一些高校制定了合作伙伴计划,同时,加快了在相关工具方面的研发力度,推出了一系列的产品,包括编译器、VTun性能分析器、多线程工具等。另外,Intel在全球还有1万多名软件工程师帮助用户完成相关软件的并行化工作。”Intel亚太研发有限公司软件产品部林巍介绍说。
应用软件提供上也在积极准备。用友软件公司U8研发本部总经理邓适宜说:“ERP软件是一个非常复杂的多任务的应用软件,利用多线程的技术,在基于多核的服务器端可以极大地提高应用程学的响应速度。”据他介绍,用友在去年11月就已经发布了基于双核调优的U870这个产品,目前,基于四核调优的产品正在研发。