算法评判标准改变
《中国教育网络》 :那么,在多核或者异构平台时代,您认为存在的软件挑战在于什么?
周会群:如何有效、协调地综合利用GPU,如何将现在在CPU 上广泛使用的数学程序高效率地应用到GPU上,是一个巨大的软件挑战。如果没有好的算法,异构处理器往往会出现通讯时间很短,等待时间很长的问题。
在异构和多核时代,评断算法好坏的标准有了改变。我们必须重新审视既有的算法。过去我们认为一个好的并行算法应当符合:高度并行性,即算法能够将计算任务分解成尽量互不关联的部分;进程之间通信量尽可能少;内存的合理利用。而且往往强调的是前两个准则,比较忽略第三点。而现在,忽视第三个标准的算法往往表现不好。
例如,解线性方程组的Gauss-Seidel迭代法及其变种,常常用于为大型科学和工程问题的偏微分方程离散化后的得到的线性/ 非线性方程组求解提供条件预优解。可以证明所谓的红黑迭代格式可以把原来相互关联、不利于并行计算的算法变为完全互不关联、具有最高并行度的算法。按列均衡分割迭代矩阵,分配给不同的CPU核,各核之间的通信量也很少,完全符合前述准则的前两条,按过去的标准是一个优良算法。可是,在一台两路八核的服务器上,我们发现虽然使用双核的加速倍率基本可以达到使用单核的近2倍,但当使用核数继续增加后,加速倍率基本上没有任何增长。在8个核上运行时每个核的并行效率仅30%左右,可以说是效率很低。
而过去一些表现不好的算法今天倒是有了用武之地。比如,天体物理学计算和材料科学、生命科学研究中所用的分子动力学模拟方法分别涉及计算N个粒子之间的万有引力和库仑力,其计算复杂性为N的平方,模拟中80%以上的时间都耗费在这两种力的计算上。最笨的算法是直接计算粒子两两之间作用的所谓的笨办法。
过去也开发了大量优化算法,但是目前在GPU上计算最快的算法正是笨办法,比优化算法快数十倍。
现在要做一个好的软件工程师,与以前大不相同的是,你必须对硬件充分了解,这样才能设计出优秀的算法。过去,CPU有什么进展,程序就有什么进展。但多核处理器或者是异构平台并非如此,无论所使用的处理器比之前快多少倍,如果程序设计得不好,结果可能一倍都快不了。
对于高性能计算来说,现在一个理想的CPU要具备两个因素,第一,要有很大的Cache,第二,与其他CPU和内存的联系必须非常紧密,也就是link有足够的带宽,很低的时延。否则核再多都没用。
计算机教育要注重基础理论
《中国教育网络》 :那么对高校培养计算机人才提出了哪些新挑战?
周会群:科学计算里涉及的软件开发不同于普通的软件开发,是一个复杂问题。碰到的很多问题,如果不懂其理论,根本没有办法做好。这就需要对当前的课程进行改革,重视计算机基础理论。而计算机基础理论的教学是国内计算机教学中的软肋。
现在,中国的大学,包括一些顶尖的学校,计算机体系结构这门课早已不是重点。一方面,国内在此方面鲜有建树,体系结构几乎都是由别人所决定的;另一方面,在大多数学校作为选修课来供学生选择。这门课比较难,所以很少有学生选它。另外一门非常重要的课程是并行计算原理。要想解决实际计算中遇到的问题,这是很重要的基础理论。但同样遗憾的是,它在很多学校都不是必修课。课程设置的滞后性与不科学性,导致人才的缺失。
此外,计算机教学应当与其他学科进行紧密的结合。因为高性能计算是一门交叉学科,需要培养具备复合知识结构的人才,而中国的计算机教学比较忽略这一点。
特别声明:本站注明稿件来源为其他媒体的文/图等稿件均为转载稿,本站转载出于非商业性的教育和科研之目的,并不意味着赞同其观点或证实其内容的真实性。如转载稿涉及版权等问题,请作者在两周内速来电或来函联系。