微软高性能计算软件应用之道
谈到高性能计算机,或者说是超级计算机,相信大家都会想到机房里面的大家伙,做一些非常高深的科研课题,模拟一些新产品的设计,不过今天我们要谈的不是硬件的机器,而是上面跑的软件,包括操作系统、管理软件、开发工具和应用软件,今天我们非常荣幸邀请到了在这个领域里面有着21年从业经验的专家——微软中国研发集团高性能计算首席架构师徐明强博士。
用高性能计算机模拟残酷的现实
主持人:徐博士您在这个行业里面一干就是20年,我想听听您对高性能计算的理解?
徐明强:我先谈一谈高性能计算愿景是什么样子,然后谈一下我这20年所见、所闻,如何来成就这个愿景的。
愿景我觉得就是要让任何人、任何机构都可以随时随地的对现实进行模拟和建模,然后来实现他们的潜能。现实对许多人往往是非常残酷的,对癌症病人来说,他晚上脱下的鞋,第二天不知道是否可以穿上,对酒后开车的人来说,安全性是非常重要的,而高性能计算可以帮助人们随时随地精确的模拟现实,认识现实,使得现实为己所用,为己造福。
这里讲一个故事,就是在20多年前,中国有一位寄生虫学家,他为了研究寄生虫在人身上的生命周期,做出了牺牲,当时他没有任何病人可供研究,所以他在自己身上植入了寄生虫,虽然他一天一天获得知识,但也一天一天地消瘦下来。我知道了这个故事之后非常感动,我觉得科学工作者为了人类的健康付出这么大的代价,这对我们做高性能计算工作的人来说,这是多么大的一个挑战。我们有这样的紧迫感,我们必须努力的去工作、去探索,使我们可以为科学工作者提供更便捷、更可用、更方便的工具,使得他们能够模拟他们所研究的现实。
主持人:我记得有这么一句话,说高性能计算模拟是继理论研究、实验研究之后第三个进行科学研究的方法,在药物设计、汽车设计、飞机设计甚至是核爆炸的模拟里面,高性能计算都起到非常重要的作用。
徐明强:是这样子的。我感觉有一只看不见的手,把高性能计算这项技术从高端的、先进的、发达国家的实验室里,推向了普通大众,推向工业界。
比如在一开始的时候,20多年前,10Gflops的计算机,是要耗资四千万美金,而今天不用三千美金就可以买到同样性能的计算机,所以说高性能计算机的可购买性、可支付性非常强了;还有20多年前必须是通过CRAY这样厂商制造的专业芯片,才可以有这样的性能,今天英特尔、AMD通用芯片也可以实现这样的性能,使得可购买的数量也变大了;第三从应用方面看,一开始都是用在先进国家的一些科学前沿的基础研究上面,现在都普及到了普通通用产品,象汽车、飞机、医药、金融风险分析等。因此,从可应用性之广、可支付性之高、可获数量之大、可应用性之广,都可以看到高性能计算正在普及。
高性能计算应用面临的最大挑战:易用性
主持人:在高性能计算应用普及的过程当中,您认为现在面临的最大挑战是什么?
徐明强:我们对客户做过一个调查,其中一个问题就是说你的部门在高性能计算应用当中所遇到的最大的挑战到底是什么?有42%的人回答说很难聘到合适的开发管理人才。因为其中有一个原因,现在大部分高性能计算是基于LINUX系统,而管理LINUX系统和会懂LINUX系统开发的人员都是比较缺乏的。还有30%的人说并行编程模式难,调试也难。有四分之一的人说到数据管理是一个很大的问题。
这里我想举一个例子,就是美国宝洁公司IT管理员曾经跟我说,高性能计算对他们来说至关重要,但是高性能计算也使他们耗资巨大、开销巨大,因为使用的都是LINUX系统,所以最后他们的系统管理员都变成系统集成商了。比如他们使用非常多的应用,不同的应用需要不同的LINUX内核版本,有的用Redhat,有的用Suse,Infiniband网络设备驱动也因为操作系统内核不同而变化,所以这个管理员所要测试的工作量是非常庞大的,当他看到微软进入这个市场的时候他非常兴奋,他说,终于有一个厂商可以给我提供操作系统、给我提供网络设备的驱动认证,使我可以安心的使用系统,因为我知道,当我使用的网络是通过微软认证的,那么它就一定会具有稳定性。 #p#page_title#e#
主持人:也就是说微软希望能够给用户提供一个整体的解决方案。
徐明强:是的,微软的策略中心思想就是要提高应用开发者和管理人员的工作效率。
开发人员的工作效率差是因为编程模式复杂,因为工具比较落后、缺乏,很多开发人员的体会是当他从工作站移到集群开发的时候,以前他依赖的一些调试、功能都已经不复存在,微软所做的就是要让他在集群上开发,如同在客户端上开发一样容易,一样高效率。那么对于用户来说,最好是和他的应用有一个无缝连接,让用户根本不知道后面是在使用一个集群。对于管理者来说,只要是任何通过微软认证的一个Windows的管理员都可以管理集群,这样就解决了一个聘用人才、管理人才难的矛盾。
主持人:确实是,毕竟使用高性能计算机的人本身可能不是计算机方面的专家,很多是物理专家、化学专家或者是医药专家,他们对计算机并不是很了解,您刚才谈到微软这个策略就是能够更好的去提高管理效率,提高他们的工作效率,让他们更好、更容易的使用这个工具。
徐明强:是的。
微软高性能计算产品:管理、开发与调度
主持人:那么在微软的产品里面具体是怎么体现的,您能不能给我们谈一下微软都有哪些产品来帮助他们实现这个目的?
徐明强:微软高性能计算产品包括三个部分,第一是帮助系统人员能够有效管理,我们有一个资源管理器,第二是帮助程序员开发并行计算,我们有一套开发编程模式和运行系统,第三是帮助用户可以更有效的提交作业、监控作业、管理作业,我们有一个作业调度器。
从管理器来说,我们提供一个整套的解决方案,使得管理人员可以非常便捷的从一点就可以部署整个集群的操作系统和应用,可以让他一目了然地监控成百上千个结点的负载情况,而且我们给他一些内置的、可配置的故障排除诊断程序,可以让他做各种测试,可以让他能够发现故障所在,最后我们可以让他将整个集群系统,微软的HPC Server系统和企业级的管理系统实现有效的集成。
对于开发人员来说,我们提供了MPI和面向服务的编程模式,这样可以让编程人员很有效的来编写传统的高性能计算的应用,也可以编写新兴的松耦合应用。我们还提供Visual Studio的项目模块,使得用户可以更方便、便捷的来建立这些应用项目,也提供一些调试工具,让他用自己的工作站就可以来调试并行程序,为他们提供了很大的方便。
有一个投行的IT管理人员,当他看到我们这个面向服务的调试工具以后,他说,自从我们的应用从客户端转到了集群以后,开发人员的工作效率就大大降低,因为当故障发生的时候,没有人知道到底是怎么回事,因为没有一个调试工具可以让他进入程序内部,发现程序的故障情况。
主持人:请您帮我们回顾一下微软高性能计算产品经历了一个怎样的发展历程?
徐明强:我们这个团队是2004年建立的,用了两年时间,2006年发布了第一版,这个版本无论是从管理系统、开发系统和用户界面的支持上,还是初级阶段,比如管理只包括了一些部署的支持和一些简单监控的支持,作业管理器也只有一些非常简单的作业调度策略,从开发系统来说我们只是MPI,所以我们第一版本面向的是一些传统的高性能计算用户,使用MPI来开发系统。
到了第二版本,我们从管理作业调度器和开发系统方面,都有了很多新增的功能,比如在管理上,除了部署和监控,我们还提供了非常有效的故障诊断程序,还可以帮助管理者深层使用报表,使他对这个系统的使用状况有非常清晰的了解,对于作业调度器我们还增加了一些部门级和企业级的作业调度策略。
就我个人而言,最兴奋的是在编程模式,除了MPI的编程模式,我们还引入了面向服务的编程服务模式和运行系统,使得很多新兴产业,比如金融业、保险业都可以使用面向服务的这种编程模式。用户的反馈是,以前用作业调度系统,因为一些参数扫描的作业,他们会花很多的编程时间,而到了面向服务的系统以后,他们只要编程一些服务的DLL放到集群上,而他们的开发人员只要用对象和方法的调用就可以直接编写并行程序,这对他们的程序员来说非常易于上手,易于完成项目。 #p#page_title#e#
主持人:微软高性能计算产品在市场上的反馈怎么样?
徐明强:从市场上来看,我们第一版主要是侧重制造业、石油还有生命科学这些领域,到了第二版以后我们就拓宽了,包括金融业、保险业还有政府部门。市场反映各有不同,在金融业,传统上编写应用时使用Windows的几率比较多,因为他们大部分应用是客户自已开发的;对于制造业来说,很多应用由第三方独立软件开发商提供,所以既有LINUX平台,也有Windows平台。比较来看,金融业对微软的采纳率是非常高的,因为应用传统上就是在Windows平台跑,保险业也是,所以我们看到最早的一些用户都是金融保险机构,得到了非常好的反馈。当然我们在制造业也有不少的客户,而且得到了很宝贵的反馈。所以我们相信,我们和用户一起和独立开发商和硬件厂商一起合作,就可以营造出来一个适合各行各业的高性能计算平台。
主持人:我特别感兴趣的是,微软中国研发团队在这个过程当中起到了什么样的作用,你们参与了哪些项目,能否给我们分享一下。
徐明强:在开发第一版高性能计算服务器的时候,上海研发部门就参与了开发项目,当时第一版主要是做外部的一些用户界面程序,到了第二版和第三版的时候,就开始做服务器内核的开发,尤其是面向服务的编程模式和运行系统,所以从这点来看,上海这个团队在短短这五年里头,无论是在全球开发和测试,还是异地协调以及项目管理和团队建设上,它都积累了宝贵的经验,而且有长足的进步。这就使得总部有这样的信心,说上海的开发团队不仅可以开发用户界面,而且可以胜任内核的开发,不光是单一功能的开发,而且可以胜任管理功能、编程功能和运行时功能的开发。
多核与GPU异构系统的软件挑战
主持人:谈到并行计算,还是比较难的,会用MPI编程序的人不多,微软是不是做很多事情,让并行编程更加容易,让大规模并行计算机更加容易用。
徐明强:是的,我们微软内部有一个“并行计算平台”(PCP),这个组和我们HPC Sever组共同的愿景就是能够使得开发人员很简单、很高效的开发出适合于在多核机器、在单机和在多机上都可以运行的应用。
举几个例子来说,PCP组开发出来的产品,适合于计算密集和数据密集应用,比如有一个TPL就是帮助程序员更快速地开发多线程并行程序。程序员的反馈说,这个确实提高了他们的效率,而且不用他们去解决很多很复杂的同步,避免做并行计算时很常见的一些错误。另外在数据并行上,微软也有一个工具叫LINQ,这是许多.net程序员非常熟悉的工具,那么在多核机上我们有个PLINQ,使得多核的机器上也可以并行处理数据流,给广大数据密集应用的程序者带来了福音。
主持人:除了X86多核系统,这两年有个新的趋势就是CPU+GPU混合架构模式的出现,我想请你谈一谈这种异构系统的并行软件编程、作业调度方面,带来什么样的挑战和机遇,微软如何应对?
徐明强:我先谈谈机遇,GPU呈现了一种唯物辩证法,最早高性能计算都是向量机,后来被英特尔、AMD的X86、X64芯片所取代,现在向量机又借GPU回来了,GPU就是一个向量机。微软PCP组有一位专家是从CRAY公司过来的,他预期在将来的十几年内,无论是计算机科学领域,将会有近20%的论文都是集中在GPGPU的研究上。这也给很多软件开发商、系统集成商都带来了很大的机遇。
当然,任何时候你出现异构,挑战也是显而易见的。GPU在今后几年的发展,我们会看到市场上很多多样的结构,2006年一位专家曾经说了这么一句话,科学计算在1975年到95年之间拥有一个非常稳定的CRAY架构平台,后来随着不断的异构架构的发明,那么在今天的科学计算世界,在短期内,无论是独立软件开发商,还是用户自己开发的应用,都缺乏一个简明和统一的稳定的编程模式和平台。这就是微软所要面对的挑战,但这也不是微软第一次面对这样的挑战,早在WindowsNT开发的时候,当时也面对过要支持不同的芯片,到底要是RISC芯片还是要支持X86芯片。 #p#page_title#e#
今天微软的策略仍然不变,就是要为程序员、管理员提供非常可用、易用的工具。工具的功能可能会演变,但是微软平台是稳固的。所以,从编程上来说,我们的目标是要最大努力去保护独立开发商以及客户应用开发商的投入,而作业调度要让用户最大的限度启动GPU所能带来的提速效益,在管理上使得管理者能够最好监控GPU的使用情况。
主持人:刚才您谈了这么多,我想微软最希望的是保护用户在软件方面的投资。
徐明强:是的,因为微软的成功完完全全是取决于软件开发商的成功。微软在历史上就对这方面非常重视,比如微软平台上有许多共享的软件,都是以二进制方法去传播的,我们在每一个版本更新的时候,都非常重视以往的应用能否继续运行。在我们高性能计算组,有一个测试部门,就是专门对所有和我们合作的开发商的软件进行测试,目标就是要让这些应用能够不做任何修改就可以直接在新的版本上运行。
中外高性能计算应用的差距
主持人:谈到应用,我注意到这样一个现象,一个是千万亿次计算机“天河一号”的发布,另一个是上海超算百万亿次计算机缺少大应用,很多都是小规模的软件在跑。这和国外的情况不太一样。对于这种“大机器,小应用”的状况,您是怎么看的?
徐明强:我看差距有两方面,首先从大的应用来说,目前中国还没有多少应用能够让这种千万亿次机器长久不闲置地运行,这和我们的国情有关。毕竟发达国家有许多计算应用都是在科学研究的前沿,需要很大的计算量,尤其是对于最新的多层次、多学科的仿真模拟应用,有玩笑说,这些应用跑起来,可以轻松地把当前最快的计算机当做午饭吃,还没有说晚饭该怎么吃呢?
第二个差距是在于普及性。像西方发达国家,不光是高端的应用多,在低端,在各行业高性能计算应用也是非常普及的。去年有一个教数学分析的华裔教授跟我说,虽然处在经济危机中,但他的很多博士生非常容易就找到工作。因为制造行业需要这些人去帮助设计,小到轴承的受力分析,这样的人才他们都需要。所以我想,这也为我们这样一个制造业大国展现了非常大的发展空间。
我想造成差距的原因,除了我们的国情,也需要时间积累。即便是在西方,普及也不是一蹴而就的,比如在90年代初,喷雾式飞机制造商用集群工作站来做CFD模拟,到了90年代中期,一些芯片制造商还有电子制造工业开始使用集群来验证他们的逻辑设计,到了90年代末,生命科学、制药商用来做蛋白质分析,用来做基因排序,那么到新世纪,我们看到金融、投行、保险业开始使用集群做风险分析,所以它的普及有这样一个过程。那么中国是什么样一个情况呢,我们还需要拭目以待,但是我们微软正在非常努力的和政府、学术界及工业界一起协同合作,要尽早推进高性能计算在中国的普及。
展望未来
主持人:最后请教您一个问题,微软对于未来高性能计算是怎么看的,下一版的产品大概会在哪些方面作出一些改进?
徐明强:因为多核的出现,今天任何一个平台,即使是一个工作站,都会成为一个比较强大的高性能计算机。微软的目标就是要制造出一个统一的编程模式,和配套的运行时系统、管理系统、监控系统、开发工具,使得开发人员能够非常高效率的开发应用,使这些应用不光能在多核的单机上运行,而且也可以在多机的集群上运行,甚至可以到云里头运行,甚至可以说让集群和云混起来运行,使得用户可以非常透明的使用后台的各种资源,使管理者可以有效的管理工作站、集群,甚至云里头运行的应用。总之,就是一个透明的,而且是一个非常统一的编程模式、管理模式和这样一个平台。欢迎大家访问我们在Technet上的中文博客,更多了解Windows HPC Server:http://blogs.technet.com/chinahpc