你需不需要一台每秒可以进行数百万亿次浮点运算的机器?或者,你想不想知道点关于你家地下室里的超级计算机是如何上电运行的趣事儿?建造一台属于自 己的计算集群——亦即超级计算机——是每个闲得发慌还有钱烧的专业极客都能做到的事情!从技术上来讲,一台现代多处理器超级计算机实际上是一个计算机网 络,这些计算机并行地工作以解决特定的计算问题。本文将从硬件和软件两个角度为你解开建造一台超级计算机的神秘面纱。
Steps
1.首先要确定硬件部件和所需要的资源
你需要一个头节点(head node),至少一打的计算节点(compute node),一台以太网交换机,一个电源分配单元(power distribution unit)和一个服务器机架。计算一下电力消耗,冷却需求和占地需求。同样,你需要确定你的私有网络的IP地址段,节点的命名,预计使用的软件包以及搭建 服务集群所用的技术(后面会有更多解释)。
- ●尽管硬件相当昂贵,但是这里列出的软件都是免费的,并且大多都是开源的;
- ●如果你想要了解一下你的超级计算机理论上能有多快,你可以用这个工具:http://hpl-calculator.sourceforge.net/
2.建立计算节点
你需要自己组装计算节点,或者你也可以使用预配置的服务器。
- ●选择一款能够最大化空间、冷却和能源消耗效率的机架式服务器;
- ●或者,你可以使用一打左右闲置的过时服务器——它们集合在一起工作的性能要比它们独立运行时的总和还多,而且还能省你一大笔钱!整个系统的处理 器、网络适配器、主板应该是同一型号的,这样才能达到最佳运行效能。当然了,别忘了给每个节点配内存和硬盘,并且至少给头节点配一台光驱。
3.将服务器装在机架上
安装的时候从下面开始,这样可以避免机架头重脚轻。你可能会需要朋友的帮助才能完成这件事——这么多的服务器将非常的重,把它们放到机架的滑轨上会非常困难。
4.在机架顶端安装以太网交换机
现在来配置交换机:允许9000字节的大的帧,将IP地址设置为你在第一步里面确定的静态地址,关闭例如SMTP嗅探这样不必要的路由协议。
5.安装能源分配单元
根据目前你的节点的最大需求,可能220V就能满足你的高性能计算需求了。
6. 一切都安装妥当之后,就可以开始配置环节了
Linux是高性能计算集群(HPC Cluster)操作系统的事实标准,这不仅因为Linux是科学计算的理想环境,也是由于在数以百计甚至千计的节点上安装的时候,Linux不会产生任何花费。设想一下,在如此多的节点上安装Windows会花掉你多少钱呢?
- ●从更新主板BIOS的固件开始,将所有节点的BIOS固件都更新至最新的版本;
- ●在每个节点上都安装好你喜欢的Linux发行版,头节点需要安装队图形界面的支持。比较流行的选择,包括CentOS、OpenSuse、Scientific Linux、RedHat以及SLES;
- ●作者极力推荐你使用Rocks Cluster Distribution来搭建计算集群。除了它已经安装好计算集群需要使用的所有工具外,Rock还提供了一种通过PXE和RedHat的“Kick Start”来进行批量部署的方案。
7. 安装消息传送界面、资源管理器以及其他必须的库
如果上一步里你没有选择Rock做为你的节点的操作系统,那么现在你需要手动设置并行计算机制所必需的软件。
- ●首先,你需要一个便携的bash管理系统,例如Torque Resource Manager,这些软件允许你划分以及分配计算任务;
- ●如果安装了Torque Resource Manager,那么你还需要Maui Cluster Scheduler来完成设置;
- ●其次,你需要安装消息传送界面(message passing interface),用来在不同的计算节点的进程之间共享数据。不用想了,OpenMP是你的菜!
- 最后,不要忘了用多线程的数学库及编译器来编写你的计算任务。我是不是说过其实你只需要Rocks?
8.将所有的计算节点接入网络
头节点负责将任务分配到计算节点,计算节点再把结果返回回来,节点间的消息传递也是如此,所以当然是越快越好了。
- ●使用私有网络将集群中的所有节点互联起来;
- ●头节点其实还充当局域网里的NFS、PXE、DHCP以及NTP服务器;
- ●你必须将该网络从公网中分离出来,这样可以保证该网络中的广播报文不会影响到其他的网络;
9.对集群进行测试
在你把你强大的Top500计算集群交付给客户之前,你还要测试一下它的性能。HPL(High Performance Lynpack)评测软件包是测试集群的计算速度的常见选择。你需要从源代码编译它,编译的时候根据你选择的架构,打开所有可能的优化选项。
- ●当然了,在编译源代码的时候,你需要打开所有可能的编译优化选项。例如,如果你使用的是AMD的CPU,编译Open64的时候,请加上-0fast优化选项;
- ●把跑分结果和TOP500.org上最快的计算机做个比较!