目前并行程序设计跟得上超级计算机的发展么

啥叫跟得上呢?程序员希望超级计算机能把串行代码提速百倍。做硬件的人做不到,这算不算是超级计算机发展跟不上软件的发展呢?做超算的人希望程序员能把所有串行代码改成并行,并且毫无overhead。做软件的人做不到,这算不算做程序设计的跟不上超级计算机的发展?
■网友
形式为内容所定,所以长了,懒得看长文的就点折叠吧。--------------------------分割线---------------------------------------------谢邀。学术文章发表后,已经很久没有接触超算中心的东西了,楼主的问题勾起了无数回忆。。。。---------------------------分割线--------------------------------------------对于楼主的问题本身,分三点来回答:1、最近, 中国“天河二号”成全球最快超级计算机 这个新闻很抢眼。“这个新闻很抢眼”的说法有待考究(我对这类词汇警惕性比较高,嘿嘿)。据我所知,2010年11月的时候,“天河1号”就已经“夺冠”(奥运词汇,吐槽一下媒体)(参考TOP500),中国的经济总量发展到这种水平,出现世界排名靠前,甚至第一的超级计算机是很正常的事情,反而如果没有的话,倒是该反思出现了什么问题。而楼主所看新闻里的“天河二号”是在“天河一号”(一号位于天津超算中心NSCC-TJ National Supercomputing Center in Tianjin)的基础上进行技术改进而来。这是技术层面的升级换代产品,换代以后性能得到提升是很正常的。由于当时一代产品的性能很不错(计算速度第一),所以,这次升级之后,计算速度又重新被评估为第一很正常。楼主觉得“很抢眼”大概是被新闻中的某类词汇误导所致(例如:“重返世界之巅”、“名列榜首”、等等)。所以,个人的看法是,这是一条非常正常的消息,“抢眼”真的算不上。2、本人一直有个疑问:目前超级计算机的发展有那么急迫么?因为超级计算机所用的单个CPU核心的运算速度并不比PC快,超级计算机的速度来自于并行运算,就是相当于让一大帮人来一起干一件事。但是问题在于并不是所有事情都可以让一帮人一起干的。好比我要出版一本书,写作本身没办法让大家帮你,只有等你写完了,才能让大家来帮你校对以及后续处理,这样,写作就变成了瓶颈。迟学斌老师的《高性能并行计算》里列举了不少并行算法,但还有多少算法不能并行化呢?或者说并行效率如何?因为有些算法随着cpu的增加,速度会达到极限。嗯,这个问题略显复杂。。。分3点来回答吧。1、首先回答发展有没有那么急迫的问题。 这个问题的切入点,我选择的是需求:实际计算需求,计算机软硬件技术需求,嗯,还有政治需求。 (1)计算需求是指在实际的工程和科学计算中对于超级计算机的需求。拿天津超算中心(NSCC-TJ National Supercomputing Center in Tianjin)为例,可以看到,其主要使用者所覆盖的范围包括:石油勘探、动漫渲染、生物医药、高端装备制造...等等。当然具体到某个方面,其需求迫切程度如何,因具体行业不同而不同。以我自己做的分子动力学模拟为例,这方面的需求是比较迫切的(7/10的程度)。具体情况如下:我的分子动力学模拟的程序是串行程序,在实验室的小型服务器上进行计算,耗时约24×5=120 h。考虑到这个时间成本太高(要知道,本人的程序仅仅是计算了8000颗分子的相互作用而已),所以后来将该串行程序上传到超算中心进行计算(http://www.nsccsz.gov.cn/),耗时大约是24×2=48 h (勉强能接受)。后来,将该串行程序并行化(用MPI)之后,耗时大约是10 h。 (2) 计算机软硬件技术需求是指的研发”天河“系列超级计算机能为计算机研制技术(包括软件和硬件两方面)所带来的技术提升。这点可以拿中国航天行业的相关带动作用来对比。这方面的详细情况,本人了解甚少,不敢妄言。但是,个人认为,这是对未来需求的投资,因为从需求的发展来看,计算能力总是越强越好的。但是这点的迫切程度相对而言比较低,个人认为其意义更多在长远处。 (3) 嗯,政治需求。一般认为,超级计算机是代表了一个国家在这一领域的综合实力,侧面反映了一个国家的综合实力。从TOP500中 2010-2013年超级计算机排名靠前的几个国家分布可以发现:美国、中国、德国、日本,这几个国家都是世界上经济实力和综合国力领跑者。这点类似于奥运会和航天事业。所以,媒体进行”赶超英美“风格的报道是可以理解的。另外,前面叙述的主要是大的方面,具体到超级计算机相关行业的相关人员是有很迫切的需求这样的曝光度的。第一,这表明,他们没有白拿纳税人的钱(我们是干了事儿的);第二,你看我们研究的还不错,是不是再给点钱花花呀?(此为猜测版的心理描写)。综上所述:由于在工程实际的应用中,需求是比较大,加上发展超级计算机可以带来的技术提高,以及带来的政治层面和某些群体利益层面的受益,所以,发展是很需要的,但没有到‘“急迫”的程度。应该说,这是一个工程实际需求和利益需求双作用带来的结果。至少目前看,不是什么坏事儿。所以,其意义还是值得肯定的。2、关于计算机程序算法并行化的问题(鉴于本人非科班出身,相关问题,请专业人士斧正) (1)并不是所有事情都可以让一帮人一起干的 嗯,这个说法基本正确,但是不全面。应该这么表述:不是所有的串行程序都可以并行化的,而且能并行化的程序也不是所有部分都可以并行的。前半句话可以解释为什么不是所有行业都使用超级计算机,而仅仅是像天气预测,分子模拟等部分行业会用到。后半句话可以一定程度上能解释”瓶颈“的问题。 (2)但还有多少算法不能并行化呢?或者说并行效率如何?因为有些算法随着cpu的增加,速度会达到极限。 关于什么样的算法能进行并行化, 这个问题有点宽泛,具体到每个问题上情况变化很大。从一个比较宽泛的角度讲:目前并行编程的模型主要有两种 数据并行和消息传递(来自《高性能计算之并行编程技术》,都志辉),理论上,只要是符合这两种模型的,都是可以进行并行化。抱歉的是,没有办法提供数据回答到底有”多少“。 并行效率的话,如果以相同计算环境下,所消耗的时间作为衡量标准,可以参考前述 1.(1)中的时间对比。目前更加大量的数据支持我还没有,如果找到,会及时补充。 关于计算效率提升的极限。影响其效率提升的因素主要有两方面:硬件(超级计算机的计算能力)和软件(算法上的优化等)。理论上,这种天花板效应确实存在,但是目前的状况是,距离这个天花板还有比较长的距离。硬件方面容易理解,软件方面主要是由于并行程序编写者大部分都是非科班出身(搞计算物理的居多,比如我。。。),对算法的研究不够,远远没有把并行的威力发挥出来。所以,在这种我们还有很大提高空间的情况下去讨论天花板效应,显得不太有意义。3、具体到我国国情,开发超级计算机的动机里有多少是纯粹学术与技术的考量呢? 我的看法是:不知道,但是也没必要去探究到底动机里有多少是出于纯粹的学术与技术的考量,因为从结果上来看,确实推动了计算机研制技术的发展,也确实提高了相关科研工作的效率。如果楼主是想说,里面掺杂了很多人的私欲,或者存在中饱私囊的行为的话,那么我只能给出猜测性的答案:是的,里面确实不纯粹是学术与技术的考量。--------------------------------分割线------------------------------------------我是不是还应该来个末尾吐槽才显得比较风趣幽默啊。。。无奈,实在是个无趣的人,这方面的事情不擅长啊,见谅吧。-------------------------------补充超算中心计算资源----------------------回答@Yakumo Ran的疑问。


推荐阅读