微软高性能计算服务器
Microsoft HPC Server 2008 R2:Step by Step
徐明强 编著
人民邮电出版社
北京
内容提要
本书分 8 章,以零基础讲解为宗旨,用实例传授引导读者学习,将微软高性能计算服务
器的使用、管理和编程的各项技术及实战技能一一道来,并有具体应用场景例子在·其中穿
针引线,内容扎实。
本书第 1 章介绍如何快速安装高性能计算集群, 并提供实际应用使读者建立集群提速
效应的感性认识;第 2 章主要讲解初识 MPI、面向服务和 Excel 服务的开发模式、作业调度
器及其用户界面、 管理控制台界面;第 3 章主要讲解如何使用作业调度器的可视化界面、
命令行和 PowerShell、 C#编程接口提交和监控 MPI,参数扫描和任务流作业;第 4 章使用
金融衍生产品的定价项目实例仔细讲解 HPC 面向服务的编程中的计算逻辑封装、服务编写
和部署、客户端异步方法调用和提交并重取等关键技术;第 5 章使用图像对比度扩展项目仔
细讲解 MPI 编程中的数据分割、进程通讯、同步等关键技术;第 6 章主要讲解集群部署、
配置、监控、诊断和报表等技术;第 7 章主要使用讲解 Excel 高性能计算服务;第 8 章 主
要讲解 Windows HPC Server 在上汽工业集团的实用效果。
本书赠送 Windows HPC Server 2008 R2 测试版光盘。本书的实例应用可以从人民邮电出
版社网站下载 (链接见前言末)。
本书适合任何想学习和从事高性能计算的人员,无论您是否从事过高性能计算,无论您
是否接触过 Windows HPC Server;也适合大专院校及培训学校的同学和老师,无论您是否
学的是计算机相关专业,无论您是否有 Windows HPC Server 讲课经验。
i. 作者序
i.1 “当做之事、当做两次”
1988 年,我在拜读 C++的发明者 Bjarne Stroustrop 的《C++编程》一书时,目光集中在一
句引言上:“任何值得做的事情,值得做两次”(Anything worth doing is worth doing
twice)。我个人觉得还是用得恰到好处。 C 语言无以伦比的成功,堪称是一件值得做的事情。
按此引言推论,值得再做一次的,就是 C++。
这句话成为我从事高性能计算(HPC)22 年的写照。
在过去的 22 年中,我的简历可以归纳成一个英文字母:V,如表 Error! No text of
specified style in document.-1 所示。这个表列出我在不同时间段学习和工作的学校、公
司及职位。然后,我的工作内容映射到纵轴——高性能计算软件栈1。可以看见,我所从事的研
究、开发项目呈 V 形。
表 Error! No text of specified style in document.-1 作者个人简历,所做的工作分布在高性能计
算软件栈多层,随时间推移,呈 V 形
将来
1987
~
1991
英国
埃克赛
特大学
1991
~
1993
英国
曼彻斯
特大学
1993
~
1995
美国
阿冈国
家实验
室
1996~
1997
加拿大
Platfor
m
Compu
ting
软件商
博士后 开发工
1997~
2004
加拿大
Platform
Computi
ng
软件商
2004~
2008
美国
微软
2006
~
2010
美国、
上海微
软
职位
博士生 助理研
究员
程师
并行离
散事件
仿真的
协议
高
性
能
计
算
软
件
栈
应用
仿真运
行时系
统
并行语
言和工
具
语言、
工具运
行时系
统
基于虚
拟内存
的运行
时系统
Fortra
n-M 编
译器
并行程
序运行
时支撑
系统
架构师
项目经理 架构师 架构师
Excel
HPC
服务
HPC 面
向服务
系统
1 这里采用一个简单的一维栈。严格地说,高性能计算系统栈应该是一个 H 形,详见前言。
1
作业调
度系统
/网格
操作系
统
LSF 调度
器
Symphon
y
HPC 作业
调度系统
首先我们看到,我是属于“高不成、低不就”的类型——高处的应用没有搞过,低处的操作系统
也未触及。我从事并行仿真运行时系统、并行语言和工具、语言和工具运行时系统、作业调度系
统及网格研究,迄今为止,从底层到高层来看,我做过两遍的事情包括以下方面。
(1) (1)作业调度器:先在 Platform Computing 公司,后在微软。
(2) (2)语言和工具运行时系统: 先在 Platform Computing 公司,后在微软。
(3) (3)并行语言和工具:先在曼彻斯特大学、阿冈国家实验室,不久的将来还会在微软做
Excel 高性能计算服务。
那么,是什么原因让我从栈上面下去,又上来了呢?为什么不在一个领域钻研下去?做这两遍是
否花了无用功?若不是白做无用功,那么我学到、领悟到了什么?
总结性的答案是:不是我刻意要换职业,也不是我刻意要更换公司,更不是我刻意要更换工作。
我是被一股无法逆转的大趋势的浪潮推动。这个大趋势就是高性能计算的普及。它从 20 世纪 80
年代末开始,一直把高性能计算这项技术从高端的、先进的、发达国家的实验室里,推向全球的
实验室;从高等学府和研究院,推向工业界;从制造最先进的杀人武器,推向研究将生命从绝症
中挽回的药物;从研究大自然的规律的应用,推向预测市场风险和决策支撑的应用;从少数几个
推进科技前沿的项目的数据中心里,推向普通学校、研究院教授和研究人员桌面。高性能计算普
及就在今天!
我是一名 60 后,在 20 世纪 80 年代初上大学。那时候,国家改革开放才开始,作为热血青年,
我亲眼目睹我们国家和先进国家的差距。1987 年,我获得中英友好奖学金,赴英留学。当时,
我选择了并行计算,我认为这是当时最先进的。这是我见证高性能计算普及浪潮的开始。
i.2 早期被泼冷水
1987 年,我还是一个就读于英国埃克塞特大学的博士生。在去伦敦参加一个研讨会的时候,我
遇到一个工业界人士,当他问及我的研究方向时,表达了他的观点:“你这是在浪费青春。第一,
未来会有越来越快的向量机;第二,没有人会改变自己的应用,并让这些程序运行在并行机上。”
然而,我还是偏执地认为,并行一定是未来的方向。
2
那个时候,人们对并行计算的研究虽然有比较深刻的理论,但是却并不为主流观点看好,尤其是
在解决大规模高性能计算问题上,并行计算还没有成为解决实际问题的方案。比较典型的高性能
计算系统一般为向量机,它们通常用来为国家的军方服务,或者是为需要巨大运算能力的科研机
构提供产品。这些向量机拥有很快的计算能力,并且有专门定制的全套软硬件系统。
尽管专用向量机与通用系统的系统栈没有太大不同,但向量机却有许多独特的地方:定制的硬件
——从设计到生产,定制的操作系统——针对专用设备和硬件的驱动程序以及操作系统内核,定
制的开发语言——这些语言包含专有的并行语句, 定制的应用——整个向量机的设计几乎就是为
了满足这些应用的。这样做无疑大量提高了整个系统的总体拥有成本,但他们服务的是非常有钱
的行业:军方和大型科研机构。正因为看到了这些问题,我开始坚信,自己选择的方向是正确
的。
i.3 向量机的神坛倒掉
这么赚钱的业务,通常不会被个别企业独家垄断。到 1991 年,从事向量机系统生产和设计的企
业还有 Cray、NEC、Thinking Machines 等公司,然而到 20 世纪 90 年代初期的时候,这些公
司都开始感受到压力了。基于 RISC 的架构计算机逐渐成型,Intel 的工作也开始从众多系统的
底层平台里脱颖而出,稚嫩的小树苗开始发芽了。此时,我完成了名为“并行离散时间模拟:协议
和应用”的论文,并加入英国曼彻斯特大学新型计算中心,开始从事并行语言的移植与虚拟共享存
储高性能计算机器的研究工作。
1990 年,美国的 Livemore 实验室 Eugene Brooks 有一句名言:“Beware the killer Micros
(小心微处理器杀手)”,这句话让众多向量机的生产和设计厂商诚惶诚恐,因为趋势已经越来越
明显,微处理器的快速成长,很有可能会取向量机而代之。
这个趋势持续到 1998 年,便成了事实。原来的那些从事向量机生产的企业在市场的声音越来越
小,这个时代,最杰出的企业是 IBM、HP、SGI 以及 Sun。基于 RISC 架构的处理器开始大放
异彩。整个系统的通用化程度越来越高。麻烦的问题开始体现在软件上,尤其是网络连接,需要
定制不同的通信协议,以确保这些不同主机可以相互通信。
3
i.4 重建高性能计算软件栈
向量机倒了,随之而来的问题是,应用该用什么编程模式呢?
我在此期间有幸参与到更具实际意义的工作中。1993 年 4 月,我加入了美国阿冈国家实验室,
在网格先驱 Ian Foster 的带领下开始从事基于以太网工作站集群的并行语言 Fortran-M 编译器
的开发。此工作为我对整个高性能计算栈的编程模式和运行时系统的理解打下了基础。Fortran-M
就是使用消息传递库来完成多 Fortran 进程之间的同步。对于当时对趋势的把握已经信心满满的
我来说,我已经看到将高性能计算落下神坛的要点了。
大量的 Fortran、C/C++等语言的程序员开始从事底层的系统开发,并开始对并行计算有了深入
的研究,MPI 开始成为工业化的并行计算标准。这使得那些需要使用高性能计算系统的机构开始
意识到,降低成本的时候到了。以 Cray 为代表的向量机体系开始面临彻底的崩溃,而微机的发
展态势已经变得不可阻挡。众多高性能计算的用户开始发出一致的疑问:“我们为什么要花那么多
钱来买一套专用的系统?通用计算机不是更便宜吗?”
1993 年,阿冈国家实验室购买了 IBM SP1 系统,那时候,我看见了搭建一个高性能计算机变得
简单,只要用通用的 RISC 芯片和通用的操作系统,加上定制的网络交换器就行了,而且可以有
很令人吃惊的性能。
然而,市场对于 HPC 的平民化还是需要时间考验的,这对于那些敢于第一个吃螃蟹的人来说是
个极大的挑战。正因如此,当时在北美要找到做并行计算的公司并不容易,但造物主还是眷顾了
我,并将我引向了正确的道路。1996 年加入仅仅只有 20 多人的 Platform Computing
Corporation 是我真正迈向业界的第一步。
i.5 高性能在工业界高端公司的普及
MPI 为初期集群提供了关键的可移植的编程模式和运行时系统。系统栈本身就像一块三明治,应用在上,
节点操作系统在下,中间是 MPI。节点操作系统对于分布式的应用缺乏支持,加上当时的 MPI 库对于运行
时系统和网络的故障自修复功能很差。后果就是应用不能正常结束,而且留下“逃匿进程”使系统无法正
常为后续作业服务。在当时的学术界,这是可以说得过去的;但是在工业界,这是不能忍受的。
4
20 世纪 90 年代初,航空制造业开始考虑使用微处理器杀手来替代 Cray 向量机,面临最大的问题
就是 MPI 的运行时系统的可靠性。我带领一个小组开发了并行应用支撑系统,提供了动态资源分
配、运行时进程启动、管理、资源使用跟踪和清理功能,使得制造业基于 MPI 的应用可以在集群
环境下真正投入生产使用。
从 20 世纪 90 年代中开始,电子设计领域、通用制造业、生命科学和制药业、娱乐业以及金融行
业等领域开始先后采用高性能计算系统进行产品设计和开发。包括飞机设计、处理器设计、其他
工业设计、DNA 分析、环境模拟、数字电影以及商业智能等领域对于大量高性能计算的需求被逐
步发掘出来,而基于 x86 微处理器体系的计算模式也逐步得到认可和尝试。这就奠定了今天主流
集群的基础。
“让每一个科技人员都有高性能计算机!”
i.6
比尔·盖茨在创立微软的时候,有个家喻户晓的愿景:“让每个家庭有台电脑。”1998 年后
期,是微软取得快速发展的时期。这个时期,PC 开始全面发展,并成为每一个知识工作者必不
可少的工具。更重要的是,微软所培育出来的 600 万名开发者,给整个 PC 产业带来了杰出的贡
献,这也为微软成为整个软件界的霸主奠定了坚实的基础。全面的通用化给整个产业带来了快速
的发展和进步,而包括以 TCP/IP 为基础的互联网产业的兴起,更是将原来神神秘秘的企业计
算、网格计算等云端的技术带到了一般开发者面前。
2004 年,微软成立了高性能计算产品组。在一次产品组策略审核会议上,盖茨看了高性能计算
产品组的演示。演示包括两步,演示使用的是一个制造业的应用。第一步是串行应用运行,花了
很多时间。第二步,把应用连到集群,很快就结束。用户使用的界面不改变。盖茨当时就说了一
句话,在创建公司的时候,他的愿景是让每个家庭都有台电脑,今天看了这个演示后,他觉得高
性能计算的下一个目标就是让每个科技人员都有高性能计算机!
从某种意义上来说,微软是具备草根精神的企业之一。当这家公司发展高性能计算所覆盖的范围
已经发展到了众多领域和行业的时候,微软开始决定颠覆,就像当初用 PC 去颠覆大型主机一
样,高性能计算系统为什么不能采用 Windows 服务器?
在从事了 8 年时间集群、网格作业调度系统、并行应用运行时环境的产品架构和开发工作后,
2004 年的我看到了这个机会,并加入了具备草根精神的微软,决心将 HPC 的事业彻底贡献给每
一个专业用户。
5
在过去 6 年中,我和微软上海的高性能计算研发团队紧密合作,顺利完成了新平台作业调度模块
中的全新用户界面、SOA(面向服务架构)编程模型的开发和测试工作。在上述几个重要功能
中,全新用户界面包括图形用户界面和传统的命令行界面,不仅使系统管理人员能直观、快捷地
管理整个 HPC 集群,更帮助桌面用户在熟悉的界面上使用高计算能力解决复杂问题;SOA 编程
模型为开发人员提供了简单易用的并行计算编程方法,为并行计算进入主流应用打下坚实基础;
报表功能帮助系统管理人员及时收集集群运行和作业执行信息,以图表形式显示集群、各个用户、
作业等的“健康”状况;基于 PowerShell 的全新命令行管理工具,加速系统管理和提交作业任务的自动
化。
此时,整个高性能系统栈的重建几近完成,原来的向量机系统已开始出现被通用型微机体系取代
的真正可能。最初偏执的信念,让我抓住了趋势的发展。用我的总结来说,微软具备做高性能计
算,并且完成高性能系统栈所缺乏的关键的优势在于以下方面。
(1)拥有 600 万程序员用户——了解他们的编程习惯和模式。
(2)拥有最流行的编程环境——Visual Studio 的多年积累。
(3)一流的作业调度和管理系统——Windows 高性能计算服务器。
(4)基于 WCF 的高性能面向服务的平台作为运行时环境。
这些优势全都是独一无二的,更加上微软长期以来在大规模客户端和服务器平台的丰富经验,让
我对微软更是充满了信心。我坚信微软最终能实现整个高性能计算普及的目标。
i.7 鸣谢
首先要感谢我所在的 HPC 部门经理严治庆。我从来没有想过要写书,因为时间投入会极大。他一年半前就
鼓励我写这本书,而且在出版资金和资源上予以慷慨支持,并给了我时间上的投入极大的灵活度。若没有
他的不懈支持,这本书是无法完成的。
许多同事都为我提供了原始内容。首先要感谢叶文铭(Wenming Ye),他慷慨地将他撰写的 MPI 和
HPC 面向服务的培训课程材料提供给我。第 4 的绝大部分和第 5 章的全部是从英文培训材料翻译而来。项
目经理丛兰兰为本书提供了第 6 章定制报表的工作簿和 VB 应用材料。邬文隽制作了部署视频,成为第 6
章“管理高性能计算服务器集群”中部署章节的主干。
合作伙伴也为本书提供了材料。泛云公司是部署上汽高性能计算集群的系统集成商。在第 8 章上汽体验
中,我得到泛云公司的允许,使用了他们的白皮书的部分内容。 特此鸣谢!
6