高性能计算集群,英文原文为High Performance Computing Cluster,简称HPC Cluster,是指以提高科学计算能力为目的计算机集群技术。HPC Cluster是一种并行计算(Parallel Processing)集群的实现方法。并行计算是指将一个应用程序分割成多块可以并行执行的部分并指定到多个处理器上执行的方法。目前的很多计算机系统可以支持SMP(对称多处理器)架构并通过进程调度机制进行并行处理,但是SMP技术的可扩展性是十分有限的,比如在目前的Intel架构上最多只可以扩展到8颗CPU。为了满足哪些"计算能力饥渴"的科学计算任务,并行计算集群的方法被引入到计算机界。著名的"深蓝"计算机就是并行计算集群的一种实现。
由于在某些廉价而通用的计算平台(如Intel+Linux)上运行并行计算集群可以提供极佳的性能价格比,所以近年来这种解决方案越来越受到用户的青睐。比如壳牌石油(Shell)所使用的由IBM xSeries服务器组成的1024节点的Linux HPC Cluster是目前世界上计算能力最强的计算机之一。
HPC Cluster向用户提供一个单一计算机的界面。前置计算机负责与用户交互,并在接受用户提交的计算任务后通过调度器(Scheduler)程序将任务分配给各个计算节点执行;运行结束后通过前置计算机将结果返回给用户。程序运行过程中的进程间通信(IPC)通过专用网络进行。
HPC Cluster中使用的服务器通常可以分为用户节点、管理节点、存贮节点和计算节点四种。它们的角色分别是:
用户节点:
提供用户界面的计算机。它从用户那里接受任务,运行调度器(在本地或独立的"控制节点"上)将任务分派到其它计算机,并将运算结果返回给用户。
管理节点:
提供管理功能的计算机。它应该能够使管理员从这一计算机对集群中的任意一台计算机进行监视和操作,并处理集群中所有计算机的日志和报警信息。
存贮节点:
提供存贮共享的计算机。为了使任务可以并行执行,每台执行任务的计算机必须能够访问同样的数据。存贮节点通过网络共享(NFS)或其它方式来确保数据访问的同步。
计算节点:
真正执行计算任务的计算机。集群中的大部分计算机都是这种类型。一个HPC Cluster中通常同时使用三个网络,它们分别是IPC网络,管理网络和存贮访问网络。根据具体的使用需求和选择的节点特性,这些网络可以使用多种介质和协议。
IPC网络:
用于并行任务执行时的进程间通信的专用网络,通常要求延迟小,带宽大。
管理网络:
用来收集集群信息、监视集群计算机和执行维护任务的网络。
存贮访问网络:
用来访问公用存贮的专用网络。
在实现一个HPC Cluster时,通常需要考虑以下问题:
•应用程序是计算能力饥渴型(CPU+内存)还是IO(磁盘/网络)饥渴型?
--HPC Cluster只适合解决计算能力饥渴型的问题
• 应用程序是否可以"并行化"?
--HPC Cluster对于可以并行化的应用程序最为有效
• 怎样才能提高"计算密度"?
--所谓的"计算密度"是指在单位空间中所能提供的计算能力(所能摆放的计算机台数)。没有很好的计划和组织,一台1000+节点的超级计算机就可能成为一场超级麻烦。更高的计算密度不仅意味着更小的体积,也意味着更加简便的管理和更少的投资。1U的机架式服务器应当是首选。然后应该考虑的是:哪种服务器需要更少的电缆?哪种计算机用作计算节点可以省去额外的控制部件(如连接键盘、鼠标的控制台切换器)?哪种计算节点可以提供更高的计算效能?
• 如何安装和管理所有的计算机?
--计算机的可管理性在HPC Cluster的实现中至关重要。在同时面对数十甚至成百上千的计算机的情况下,管理员能否简单快速地执行维护工作常常成为影响集群发挥效用的关键因素。
在集群计算的需求确定之后,选择各种组件构成Cluster的实现方案常常十分困难,而且经常由于组件之间难以协同工作而导致Cluster的实现失败,或者最终构造了一个难以使用又难以管理的Cluster。针对这种情况,应该优先考虑选择一体化的HPC产品。这些产品通常会在厂商的工厂中进行组装和测试,然后按机架的方式交付客户使用。比如在目前的IBM所提供的1300 HPC Cluster,它基于Intel架构的硬件平台和Linux操作系统,使用与"深蓝"计算机上同样的集群计算技术,在计算密度、集群管理等方面都比较出色。