七 072010
此次讲习班,因为没有资助,没钱参加。所以本博只厚着脸皮蹭了最后的讨论会。会上,来自全国不少地方的学生、老师都在,踊跃发言提问。Godson-T是热点,但因为本博做编译,呵呵,所以当时记录时,着眼这方面的较多。各位看官谅解。
- 问:一个好的串行算法很可能无法被充分并行化,怎么看这个问题?好的串行算法,为了获得高性能,会根据串行的特点,CPU的特点,编译器都特点和应用的特点设计,但并行是换了一个思路来跑程序,
- 丁:比较成功的经验是采用演进式的方法,在串行程序中寻找可能的并行机会,将其并行。实现逐渐将串行程序并行化。重要的是如何给程序员提供一个界面,找到并呈现程序中潜在的可能并行机会,引导程序员将程序并行化。换一个角度去向这个问题的话,写程序不一定是符合人类思维模式的方式。人脑在思考如何解决一个问题的时候,并不是采用写程序式的思维模式,人脑在思考问题时,是并行着想问题的。
- 胡:高老师的学生曾经对SPEC CPU 标准测试程序中的例子做过分析,分析过程中发现绝大部分例子,即使是串行程序,都存在很大的并行潜力,只是程序员在写程序的过程中,并没有完全考虑到而已。
- 陈:渐进式的并行化方式,曾经自己项目组都学生做过,性能提升很有限。和线程级投机、事务内存能带来的性能提升很有限一样。在四核的机器上,能有30%的加速,已经是非常理想的结果了。如果只有一两倍的性能提升,没有人愿意改写现有的软件代码,因为成本太高。
- 范:Godson-T的情况,基本都是在模拟器上做。计划最近做出实际的芯片来。16核以上时,模拟器性能太有限。《多核编译技术研讨会》记一中提到的Intel玩具级CPU,其实仅仅提供了20多条指令。用来演示的系统,主机箱还没有机器背后的冷却器大。2D的芯片设计因为片子越来越大,已经很难继续,3D的散热则是很大的问题,还有准确性问题。不过目前美国已经有技术能让冷却水进入3D器件内部。
- 问:体系结构的发展趋势是要走向和应用领域结合,但这样就陷入了矛盾。要在片子中加入很多应用领域相关的加速,就意味着片子的商业化和销量受到极大的制约,而且流片的成本也越来越高。但通用些的话性能又很难上去,怎么看?
- 范:从做芯片的人的角度出发,觉得未来是要越通用越好,因为这样片子适合更多的人,才能卖出去。否则成本降不下来,没人再愿意做。
- 胡:从应用领域的人来讲,是要专一些,但不能太专。专一些,可以把针对某些特殊处理的应用速度提上去。华为曾经做过一些集成FFT的片子,虽然能带来不小的加速,但因为通信标准经常会变动,一变就意味着重新设计片子,成本太大。所以后来放弃这种形式。而且片子太专的话,软件迁移的成本也越来越高。现在的趋势,应该是针对比如网络应用中的特殊处理加入一些硬件优化,这种优化要尽量通用一些。
- Open64对于OpenMP的支持如何?
- 陈:Open64已经能支持OpenMP 2.0标准。对OpenMP 3.0的标准开发缓慢。原因是OpenMP 3.0的标准过于复杂,难以实现。而且很容易出错。没有人愿意那样用它。现在OpenMP虽然有官方的委员会和学术交流,但也基本是OpenMP 委员会那帮人在自娱自乐。前途渺茫。
PS 1:写这篇文章时,丁晨老师和我直线距离5米内。唉,只是俺这个粉丝没啥能向这位名师请教的,层次问题!层次问题!
PS 2:华为的编译团队,目前主要分布在美国、北京和杭州三块。美国有不到十个人,负责前沿性质的项目预研。国内北京有十几个人,负责网络平台的编译优化;杭州有三十多人,负责华为内部的开发工具链的维护和优化。华为内部的编译器有两个,一个GCC,一个商用编译器。
华为,这么多年,低调的做公司做技术,网罗了一大批顶尖的通信、电子、计算机领域的华人。技术当家的通信领域,相信华为会越走越好,祝华为的编译团队越来越壮大。

“16核以上时,模拟器性能太有限。”
这个能展开讲讲么?
我没有听前面的讲座,也不太明白。当时在说在服务器上运行的Godson-T的模拟器性能问题。我的理解是16核以上时,模拟器的运算量。所以模拟太慢。
估计算法的复杂度是指数级的。
华为基础研发还是投入了一些力量的嘛。
华为现在好像挺注重这一块的。通信领域如果自己不能做片子,别的大公司把所有设计芯片的公司一买断,就傻了。所以华为必须要重视基础研究才行。
我想问几个问题:华为的商用编译器是完全自己开发的吗?效能如何?支持的芯片是哪个?
这个我也不清楚,当时胡老师只提到华为有两个编译器,一个GNU GCC,一个商用的。具体的他没有介绍。
我想知道胡老师怎么了解到HW的编译器情况,莫非有合作?:)
想不到openmp前途渺茫,多核并行编程该把宝压在哪里呢…
我觉得Intel的并行工具开发工具是个不错的参考。Intel Parallel Studio