泡泡网CPU频道 PCPOP首页      /      CPU     /      新闻    /    正文

众核时代来临!2012年英特尔软件大会

    泡泡网CPU频道3月19日 2012年3月19日上午北京,在位于鸟巢附近的北辰洲际酒店,Intel召开了2012年英特尔软件大会媒体沟通会。会上来自英特尔的首席软件讲师兼英特尔软件开发产品总监james(中文名仁达敬)先生就集成众核(MIC)架构做了一系列演讲。主要涉及到在高性能计算领域英特尔的软件工具是如何支持多核架构和英特尔的众核架构的,下面是本次会议的具体内容。

    仁达敬:非常感谢大家参加这次媒体沟通会。非常高兴来到中国,在上周我去了深圳、上海,召开了针对软件开发人员的几个技术大会,我也非常高兴在此和大家沟通一下我们正在做了一些工作。

众核时代来临!2012年英特尔软件大会

    我们知道,英特尔目前一颗CPU能支持10多个线程进行工作, 现在我们正在研发新的芯片,我们将提到众核架构,能在一颗芯片里面支持200多个线程同时工作,为广大的应用开发人员带来新的机会和挑战,更好地去做并行编程。我们可以看到,现在大多数的设备,无论是超级本还是一些智能手机,我们都可以看到它们现在已经实现了两核,甚至一些设备上已经实现了四核的架构。我们可以知道,无论你是双核或者四核的手持智能终端设备,它运行的绝大部分后台工作都依赖于一些数据中心和高性能计算中心,这些实际上对整个前端的设备运算支持提供了强有力的支持。这些数据中心或者高性能中心,他们对并行计算的要求会更高,无论是在可靠性还有并发性方面,都是要求非常高的。而同时, 无论是手机这些智能终端设备还是处于后台的高性能中心,并行运算都是非常重要的。这一方面可以提高用户的体验,对于大多数人来说这是不难理解的。接下来我们会推出一个新款的架构,叫做Knights Corner,这个还没有正式上市,但是我们已经做了很多的演示,包括在上面跑一些应用。这个新的架构对于很多开发人员来说,我想面临的问题就是:您的应用已经为英特尔这个新的架构准备好了没有。我们可以看到,这个设备新的架构是可以同时处理200多个线程。所以对于并行编程来说,这是一个新的挑战和机会。这仅仅是针对一些大型应用,如果只是开发了基于双核或者四核的架构的话,其实这个架构上200多个线程同时跑的应用也要做更深一步的考虑和准备。

    我们可以看一下,并行就是同时做多件事情,这个以前只有人可以做到,比如说同时可以做多件事情,现在实际上随着新的芯片技术的发展,机器也可以做到这一点。对于很多事情的处理来说就变得非常方便和容易。针对绝大部分的软件开发人员来说,他们需要相应的工具,包括培训等等措施来帮助他们实现并行。目前大多数处理器都是基于两核、四核或者是八核的架构,但是众核MIC架构来说是采用了比较新的架构,可以支持50个核。所以这种架构对于绝大多数的数据中心和高性能中心是非常重要的。

    我们可以从这张PPT上展示的世界上最大的500家超级计算机的图当中可以看到,英特尔的架构仍然是最多的。这个图最后的更新是从去年11月份(2011 年11月份)。我们可以从11月份的数据里看到,93%中国新建的超级计算中心都是基于英特尔架构。对于英特尔来说,中国仍然是非常重要的市场,因为中国市场的业务量仍然是我们增长最快的。另外我们可以看一下,和我们的合作伙伴来讲,对于英特尔在中国的业务也是非常重要,并且我们也有很多很优秀的员工,在英特尔中国开发了一些很好的新技术。

    下面我们可以谈一下新旧两种英特尔架构的发展历史。左边是在15年前制造的机器,当时是世界上首台达到了每秒1万亿次浮点运算的机器,去年11月份,我们展示了Knights Corner这个众核架构,我们可以看一下,这么一个小小的芯片,运算能力已经超过了1万亿次浮点运算。在15年以后,可能这个芯片也会装到我们的手机上面。我们很高兴地可以看到,英特尔一直在致力于推动这个并行的进展,在硬件方面我们有多核和众核的架构,另外我们也能提供一些很好的开发软件产品推动这个并行。英特尔实际上一直在做一件事情,就是用我们通用的技术,比如用同一套软件的工具和平台去支持多核和众核的架构。

    既然软件工具如此重要,在接下来我们会谈一谈这些软件工具详细的新特点,它们还有哪些创新的功能。我们首先看一下这个工具最主要的功能,借此可以帮助我们分析并行的一些难点在什么地方,能怎样去帮助。另外一方面,英特尔VTune? 性能分析器也可以从两个比较重要的并行技术方面去帮助一些应用的可扩展性和矢量化方面进行相应的编程。我们知道,针对大多数设备和应用来说,性能仍然是他们最关心的,无论你是跑在一个手机或者手持设备上还是到后台的像高性能计算中心或者数据中心等等,性能仍然是他们比较关心的。所以对于我们工具软件来讲,性能也是重点之一。我们知道,性能不光是集中在一台机器上。从目前来说,大多数计算中心和数据中心他们都有成千上万台机器,所以这个对于性能提升来说是一个极大的挑战。我们可以看一下,像英特尔的这些软件工具,可以帮助从一个集群到单台的性能调试都是非常有效的。英特尔的工具可以帮助你调试超过1万个集群上面核上的性能。

    我们可以看一下,帮助你分析超过两千多个核的机器的性能。现在我们知道,目前有这两种情况可以帮助到大家:一是细化到每一个核上的性能,二是看到核与核之间通讯的情况。这样为大家提供了一个很大的方便,我们不单是针对单核的性能进行调优,我们还可以针对核与核之间的通讯进行优化。对于很多开发人员来说,他们既可以看到单个核上运行的情况,另外一方面,他们也可以看到核与核之间通讯的情况,这样对他们来说是变成了非常容易的一件事情。可能有很多开发人员他们还没有意识到这种技术的重要性,但是对于英特尔来说,我们已经提前预知到这个技术的重要性,所以我们不光是可以帮助你去看单个核上的计算能力,另外一方面,我们还可以看到核与核之间的通信效率到底怎么样。

    对于应用来说,编译器的性能效率是非常高效的,我们可以非常高兴地为大家宣布,到目前为止,英特尔的编译器编辑的性能仍然是非常好的的。除了编译器以外,我们提供了相应的高性能库,这些库同样可以为我们的应用带来极大的性能提升。这是一个关于加解密算法的情况,加解密对于大家来说,在智能手机上,保护银行帐号,保护银行信息是非常重要的。另外一个我们面临的挑战就是把大规模的数据量进行传输和移动,对于大规模数据量的处理来说,压缩和解压的效率是非常关键的。像英特尔高性能的数学库,也提供了针对各种领域的科学运算的较好效率和性能。除了刚才的编译器和高性能数学库、IPV库提供的高性能的计算和处理能力来说,由于提供了高性能的处理效率。需要强调一点,刚才提到的那些软件技术和软件产品,都可以同时支持现有和将来的多核,另外还可以针对众核MIC架构支持。 应用的另外一个重要性就是面向未来的可扩展性,如何扩展到更多的核和更大的机器上。英特尔的软件和硬件的完美结合,就确保了以后性能加速的增长。这个图是我们想给大家提供的一个例子,就是英特尔的Threading Building Blocks(TBB)在多核上较好的性能加速比。另外,英特尔MPI提供的是较好的通讯效率, 还减少了通讯的延迟。英特尔多性能构建模块是提供了较好的可扩展性,特别是针对C++的开发人员来说,是最好的并行编程方案。接下来我会重点详细介绍TBB,在之前要首先确保应用者的可靠性。

    如果让你的应用同时做很多件事情,会造成一个问题,就是可能会发生错误的几率提高,另外一方面,对你来说,如何去调试这个并行程序,难度还要提高。所以英特尔针对这种错误和难度的调试,我们就开发了相应的软件产品。所以无论您的应用是存在内存方面的一些错误,还有包括多线程方面的错误,还有包括一些安全性错误造成的应用的话,比如说造成一些病毒还有安全性的攻击,这些英特尔都意识到了,我们投入了很多的一些人力和资源开发相应的软件工具,帮助解决一系列的问题。在解决了错误性的这些问题以后,我们可能下一个问题就要问:到底这个应用程序的运行效率怎么样,我的运行到底在什么地方花了更长的时间,在哪些地方做了无效、无谓的等待等等,我们的这个软件工具是为了解决相关的计算效率的问题。

    我们可以看到阻碍计算效率的因素,比如一些等待是阻碍了正常计算的效率。我们做很多的工作,包括调试和分析,无非就是解决通讯和计算的效率问题。我们在前面提到多线程构建库这个技术,所以目前这个技术已经支持了多种操作系统,并且可以运行在不同的平台上面,另外也是在我们应用开发人员当中非常流行的,它对于很多C++的开发人员做并行编程来说是一个完整的解决方案。在过去几年我们也不断地对多线程构建模块进行了进一步的开发,无论让你的TBB应用于嵌入式设备,或者是针对图形图像的处理,都是做了很多的工作。我们知道TBB多线程构建模块实际上是针对C++的开发人员,针对C语言的这些开发人员,我们也开发了称为姊妹的技术叫Cilk? Plus,Cilk? Plus这个技术针对C语言的开发人员来说,和我们英特尔的编系是紧密集成在一起的,特别是在一些矢量化技术的应用来说,是有它独特的一些地方的。矢量化技术针对应用来说是非常重要的一项技术,我们也在很多技术研讨会里面谈到了如何让您的应用实现矢量化。为什么矢量化技术是非常重要的?我们知道,矢量化技术实际上是另外一种形式的并行技术,这个技术实际上是随着多核和众核的发展,并行化是领用一种比较有效利用多核和众核计算能力的技术之一。

     我们都知道,现在目前CPU的处理能力可以做到一条指令来处理多条数据,所以如果你要是用到矢量化的话,对你的处理能力也得到了极大的提升。像以前如何使用矢量化我们都会想到SP1这个指令,目前来说我们可能会提到新的指令叫IBS等等。还有像众核,我们还有更宽的矢量技术,可以让一条指令处理更多的数据。Cilk? Plus这个主意首先是在麻省理工学院MIT出来的。其中MIT的一个教授他在数十年前就开始专注于这个领域的研究,并且他自己也成立了一家公司,来专门致力于Cilk? Plus这个技术的发展,在几年前这家公司也加入了英特尔。Cilk? Plus这个技术在英特尔的编译器里面支持Windows、Linux、Mac OS X系统,并且我们还把Cilk? Plus的技术规范和源码已经提交给了开源的这些组织,希望他们可以考虑成为开放式的标准之一。甚至于在实验的分支来说,已经集成了Cilk? Plus这个技术。Cilk? Plus这个技术对于大多数人来说非常容易,非常简单,我也非常愿意传授Cilk? Plus这个技术。我们可以看一下,Cilk? Plus可以让你的循环变得非常简单,另外还可以让你的源代码做一些并行的功能调用。

    我们从几个方面都阐述了英特尔公司怎么样去帮助大家实现并行化。在结束之前,我想跟大家分享一下,如果您想实现并行化技术的话,英特尔有哪些资源可以帮助你。所以我们刚才提到过的这些英特尔的并行技术,都是可以在software.intel.com找到相关的文章。大家可以到下面这个图的网站上去学习如何一步步对应用实现矢量化。如果您想听讲授相关的编程技术的话,也可以去英特尔相关的网页上寻找教学的素材。我们看到很多并行技术在高校非常流行,所以很多老师和教授和我们英特尔合作开办相关的课程。针对这些需求,我们也创建了相关的中文网页,所有关于技术相关的文章和文档都已经实现了中文。如果针对多核进行并行编程的话,我们也有相关中文的文档。实际上很多并行的技术都是由英特尔中国的一些工程师发明的,所以他们很多文章实际上是先写成中文,再翻译成英文传播到全球。   

    针对刚才提到的英特尔多性能构建库TBB,在几年前就有一本书讲授这个技术,并且这本书已经翻译成了中文。我也和另外两个同事在写一本新书,是讲述如何用TBB和Cilk? Plus进行并行编程的,希望这个书可以在明年7月份出版。用一句话来说,英特尔是一直致力于软件和硬件上面推行并行化技术的。无论是基于多核的架构还是将要发布的50个核的众核架构来说,并行化是非常重要的一件事情。英特尔会提供一些工具,帮助我们开发人员实现并行这个技术。如果大家对刚才讲的一些内容有什么样的一些问题,我非常高兴在此做出逐一解答。

    提问1:您觉得现在的编程应用对并行编程的支持力度是否足够?如果不足的话,您觉得在哪些方面我们需要改善,或者说我们需要重新创建一门新的面向并行的语言?

仁达敬:实际上从目前来说,对于编程语言来说,可能做得比较充分和最好的还是Fortran语言。我想告诉你们,首先第一位Fortran语言我认为是对于并行编程准备最充分的,第二位的就是C++语言,因为我们有TBB软件产品,去帮助大家实现多样化的并行。我们正在做的工作就是如何去帮助C语言实现和完善并行编程的功能和特性,我们也开发了Cilk? Plus。但是我们也在考虑怎么样把Fortran变形编程的一些特点移植到C语言当中去。实际上目前来说,硬件并行的发展技术是远远超过了软件在并行技术方面的发展脚步。所以我们在软件方面投入了大量的精力,比如怎么样实现矢量化去加速这些并行技术的发展。

    另外,我们要提供一个完整的并行解决方案,而不是一个针对单独并行技术提供的单点产品。为什么这么说?实际上对于现在来说,随着并行化的多样性,仅仅靠一种单一的并行技术是无法解决大多数并行编程面临的问题。所以我们要通过不同并行化技术的有机结合,组成一个完整的方案,解决并行编程的问题。TBB是提供一个抽象的技术,希望在矢量化方面加强投入,因为矢量化对于我们硬件的发展来说,如何利用未来硬件的性能和效率现在变成了非常关键的事情。

    提问2:您好,我想问一下现在提供了很多的计算环境,相比通用计算的编程,英特尔MIC这样的众核架构有什么样的优势?因为毕竟你们还没有推出,别人已经推出好几代了,谢谢。

仁达敬:我们有自己针对于图形处理方面的技术来处理相关的针对图形的计算。但是提到另外一个方面,用GPU来做计算的时候还有很多的一些限制。英特尔MIC的架构就是在数据并行方面做得非常好,在这方面是它的优势。在MIC的开发过程当中,我们也在全球寻找了100多家的机构测试MIC这个机器,并且把它们的应用跑到MIC这个架构上面,去看到底它的性能在什么地方,哪些是好的,哪些可能还有一些不足。这样的话,我们是一个不断完善的过程。我们在美国刚刚做了一个成功的例子,有一家美国的研究机构把他们研究的1000万多行的代码移植到MIC的架构上,对于他们来说,在历史上是比较大的举动之一。不能简单的把MIC想像成是图形加速器的概念。实际上对于MIC来说,它的编程非常容易在上面实现。

众核时代来临!2012年英特尔软件大会

   提问3:我想问一下TBB对于GPU多核之间的通信是否也支持?

仁达敬:目前主要是支持内存的架构,GPU还不是这种架构,目前TBB还不能跑到这种架构上面。

    在一个多小时的会议中,Intel向与会的记者们详细介绍了关于新产品和新软件的特性,而众核心时代已经离我们越来越近了。■

0人已赞

关注我们

泡泡网

手机扫码关注