服务器 频道

新趋势:个人集群 走近你的办公桌

软件编程和操作系统选择

    多核技术对于服务器系统的设计也产生了重要影响。我们知道,除了普通的集群之外,还有很多小系统实际上应该被归为星群“Constellations”。根据Beowulf集群创造人Tom Sterling 的定义,“星群是一种使用大型SMP节点的集群,其中每个节点的处理器数要大于节点本身的数量。”今天的很多小“集群”其实都适合这个定义。打个比方,一套32核的系统,如果由分别安装有8个内核的4个节点组成,那么,它就是星群;而如果由分别安装4个内核的8个节点组成,那么,它才是真正意义上的集群。从上层软件的角度来看,在进行应用开发设计时是需要对此进行考虑的。

    HPC的并行软件代码,通常是用MPI写的,可以在多核服务器上运行;当然它们也可以跨越几台多核服务器。上面提到,有许多小型的部门级系统实际上是星群,所以需要考虑一些不同的软件设计方法。

    在并行计算领域,MPI和OpenMP是最为流行的编程模型。程序员面临的最大问题就是:我写的代码是在集群系统上跑,还是在星群上运行,或者是针对SMP系统?这个问题的答案取决于应用,以及你希望能实现的最大系统扩展性。如果因为受Amdahl定律限制,很难获得8倍以上的性能提升,那么你最好针对SMP设计,使用类似OpenMP的方法。如果你需要更多的内核,那么可以试试MPI。或者,为了充分利用SMP集群层次存储结构的特点,可以考虑将上述两种编程模型相结合,实现MPI/OpenMP的混合编程,由MP I负责节点间并行,OpenMP负责节点内的多线程并行。不管是那一种,你在做软件开发时都需要事先做好决策。不幸的是,现在还没有一种编程语言适合所有的场合。

 

OpenMP并行模型与MPI并行模型比较
 OpenMP并行模型MPI并行模型
原理 OpenMP使用Fork-Join的并行执行模式。开始时由一个主线程执行程序,该线程一直串行地执行,直到遇到第一个并行化制导语句后才开始并行执行。过程如下: ①Fork:主线程创建一队线程并行执行并行域中的代码;②Join:当各线程执行完毕后被同步或中断,最后又只有主线程在执行。消息传递编程模型是使用显式方式控制并行性的分布存储模型,MPI是这一模型的事实标准。MPI可移植到分布和共享存储体系结构上,而且允许静态任务调度。显式并行通常提供了一个更好的性能和可移植性。特别适用于粗粒度的并行,使用MPI实现单程序多数据(SPMD)并行模型时,每个进程只能读写本地内存中的数据,对远程数据的访问则通过进程间显式的消息传递(库函数调用)来完成的。MPI包含了多种优化的组通信库函数,可供编程人员选择使用非常好的的通信模式。
并行粒度线程级进程级
存储方式 共享存储分布式存储
数据分配方式             隐式显式
编程复杂度                     相对简单,充分利用了共享存储体系结构的特点,避免了消息传递的开销。数据的放置策略不当可能会引发其他问题;并行化的循环粒度过小会增加系统开销等。编程模型复杂:需要分析及划分应用程序问题,并将问题映射到分布式进程集合;细粒度的并行会引发大量的通信,需要解决通信延迟大和负载不平衡两个主要问题;调试MPI程序麻烦;MPI程序可靠性差,一个进程出问题,整个程序将错误。
并行化虽然它也支持粗粒度的并行,但主要还是针对细粒度的循环级并行。将串行程序转换为并行程序时无须对代码作大的改动。并行化改进需要大量的修改原有的串行代码。
可扩展性可扩展性差: OpenMP采用共享存储,意味着它只适应于SMP、DSM机器,不适合于集群。可扩展性好:适合于各种机器

    还有一个软件问题是对操作系统的选择。今天,高端HPC大多采用Linux,但对于低端系统(个人级或部门级),已经有了另外一种选择——微软Windows HPC Server 2008。上文提到的几乎所有系统都可以支持微软的HPC方案。考虑到微软目前在桌面系统上占据霸主地位,随着HPC个人化趋势日益明显,用户应该会看到,选用基于Windows的HPC方案能更好的与现有环境集成在一起。当然,Linux也是一种选择,但需要考虑好一下互操作性。

小结:个人HPC走近你身边

    总结一下,上面我们讨论了部门级HPC和个人HPC的新趋势,今天应用软件扩展性限制、高效设计的刀片、占用空间较小的系统等因素,加上多核计算技术的蓬勃发展,已经给HPC用户带来了一些非常有意思的新选择,使得我们今天可以考虑把HPC应用从传统的数据中心机房里迁移出来,放在桌边的小机器上来运行。

    这种迁移需求也许会引起一些争议。我们要注意的是,把计算资源放在什么地方,主要取决于你的现有环境。如果你机房里的空间和电力还够用,那么买一台小型部门级刀片集群,搁在机房里会更有好,毕竟有专门的IT人员会来管理它;但如果你的数据中心正面临电力不足、空间不足、散热能力不足等困境,那么把机器放在办公室环境里也确实是个不错的选择。

0
相关文章