扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
ZDNet至顶网服务器频道 4月25日 评论(文/孟庆):在不久前结束的IDF上,英特尔信誓旦旦的表示,在面向多任务并行计算领域他们已经与很多合作伙伴共同测试并完善了MIC系列产品(Knights Ferry),并将与今年年底推出正式面向商用领域和客户的正式产品“Knights Corner”。但是在这之前,远在大洋彼岸的NVIDIA Tesla事业部首席技术官Steve Scott先生的一篇博客则对提出了质疑。
他在博客中撰文表示:英特尔的MIC众核计算加速器并不代表免费的“午餐”——所谓用MIC运行x86程序无需更改代码是无稽之谈。
Steve先生在博文中引用登纳德缩放比例定律 (Dennard Scaling)表示,虽然摩尔定律仍然还在(可以继续增加晶体管密度),但是晶体管已经不能因为体积缩小而降低电压,因此尽管集成的晶体管越来越多,但也意味着功耗越来越大。这就导致了目前的处理器全都受到功率的限制——每一次制程工艺的切换,都会加重这个问题。
其实有悟性的读者肯定想到了之前英特尔和AMD狂攀主频高峰的情形——大家只要把主频坐上去,性能就上去了。然后碰到功耗瓶颈,开始转而在架构和内核上做文章,现在又再次碰到了功耗的壁垒(内核增多需要增加晶体管数量)。因此包括NVIDIA和AMD在内提出了混合架构——数百个简单的并行计算核心为高吞吐量的负载做优化,而将CPU内核来做常驻的串行操作,这样就各有所长的发挥了GPU和CPU的性能。
Steve表示,英特尔的MIC加速计算单元,实际上是用15年前的奔腾核心加上宽幅向量单元,再靠数量来堆积并行计算优势,来获得更高的浮点性能。他认为这种做法挺好,但是如果只因为x86指令集而误解为不需要更改程序代码就能运行,那就大错特错了。
对于这样的说法,笔者有几个困惑的地方:1、英特尔MIC产品究竟对于程序员来说是不是有那么大的优势?2、NVIDIA自身的GPU在并行计算时又是如何做的?
在咨询了NVIDIA公司的专家之后,笔者了解到,目前的很多程序都是串行编程,而不论是GPU还是MIC在做并行化运算的过程中,都需要做一些手工的工作。直接使用CUDA C这样的语言重写是一个途径,当然这对程序员有较高的要求,需要程序员通晓并行编程的能力。除此就是对源程序代码中并行的部分做标记——采用标记化的语言来标记并行化代码是目前NVIDIA GPU和MIC都支持的方式。标记化语言可以将串行指令交给CPU执行,将并行度高的指令交给MIC执行,而并行化则由编译器完成。这样在较短的时间内可以让过去基于CPU的代码中的可以并行的部分交由能力更高的GPU或者MIC完成,从而获得性能提升。但是这同样需要程序员的参与,并不能完全自动地完成。NVIDIA的GPU支持OpenACC,这也是一种标记化语言,因此程序员可以简单的让并行化的部分执行在GPU内。
按照某些人的说法,仅仅通过重新编译,就让代码在MIC上的获得性能加速,是很不现实的。无论是MPI或者OpenMP方式,都会碰上严重的瓶颈,首先是对于具备高达50+核心的MIC来说,板载的每个核心分配到的内存容量是非常有限的,其次阿姆达尔定律瓶颈会很明显—每个MIC核心上基于古老的Pentium处理器架构的处理器的低劣性能可能会将并行化带来的好处完全淹没。
他再三强调:如果想让一部分程序在英特尔MIC上运行,另一部分在至强上运行,就会带来手工的编译操作,至少要把并行和创新来分开。按照MIC的架构,只有标记注释是个好选择——因此如果说不需要改代码就能获得并行化的效果,是天方夜谭。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者