网格对于高性能计算系统而言是相对较新的新增内容,它有自己的历史,并在不同的环境中有它自己的应用。网格计算系统的关键元素是网格中的各个节点,它们不是专门的专用组件。在网格中,各种系统常常基于标准机器或操作系统,而不是基于大多数并行计算解决方案中使用的严格受控制的环境。位于这种标准环境顶部的是应用软件,它们支持网格功能。
网格可能由一系列同样的专用硬件、多种具有相同基础架构的机器或者由多个平台和环境组成的完全异构的环境组成。专用计算资源在
网格中并不是必需的。许多
网格是通过重用现有基础设施组件产生新的统一计算资源来创建的。
不需要任何特别的要求就可以扩展
网格,使进一步地使用
节点变得比在典型HPC环境中还要轻松。有了HPC解决方案,就可以设计和部署基于固定
节点数的系统。扩展该结构需要小心规划。而扩展
网格则不用考虑那么多,
节点数会根据您的需要或根据可用资源动态地增加和减少。
尽管有了拓扑和硬件,
网格就可以以图1和图2中所示结构的相同结构为基础,但使用标准网络连接组件支持网格也是有可能的。甚至可以交叉常规
网络边界,在
WAN或互联网上合并计算资源,如图3所示。
作为执行模型和环境,
网格还被设计成在操作和执行方面更具灵活性。尽管可以使用
网格解决诸如HPC解决方案之类的计算任务,但网格可以更灵活,可以使用各种
节点执行不同的计算、
表达式和操作。
网格并不只是一种没有任何特点的计算资源,可将它分布到各种
节点中使用,并且一直运行到作业和操作都已完成。这使得
网格在不同计算和组件的执行顺序对于剩余任务的连续执行不那么重要的地方变得更加实用。
利用这种可变长度灵活性和较孤立任务的
网格解决方案的一个好例子是计算机合成电影和特技效果中的表演。在这里,生成的顺序并不重要。单帧或更大的多秒的片段可以彼此单独呈现。尽管最终目标是让电影以正确的顺序播放,但最后五分钟是否在最初的五分钟之前完成是无关紧要的;稍后可以用正确的顺序将它们衔接在一起。
网格与传统HPC解决方案之间的其他主要不同是:HPC解决方案设计用于提供特定资源解决方案,比如强大的计算能力以及在
内存中保存大量数据以便处理它们的能力,另一方面,
网格是一种分布式计算资源,这意味着网格可以根据需要共享任何组件,包括
内存、CPU电源,甚至是磁盘空间。
因为这两个系统之间存在这些不同,因此开发出了简化该过程的不同
编程模型和开发模型。
HPC环境中的
应用程序开发通常是通过专用库来处理,这极大简化了创建应用程序的过程以及将该应用程序的任务分配到整个HPC系统中的过程。
最流行的解决方案之一是消息传递接口(
MPI)。MPI提供了一个创建工作的简化方法,使用消息传递在各个
节点之间交换工作请求。作为开发过程的一部分,可能知道想要使用的处理器(在这里指单独
节点,而非单独CPU)的数量。HPC环境中的劳动分工取决于
应用程序,并且很显然还取决于HPC环境的规模。如果将进行的工作分配依赖于多个步骤和计算,那么HPC环境的并行和顺序特性将在
网格的速度和灵活性方面起到重要作用。
节点发送一条消息,让它们执行自己的那部分工作。工作被放入HPC单元中同时发送给每个
节点,通常会期望每个节点同时给出结果作为响应。来自每个
节点的结果通过MPI提供的另一条消息返回给
主机
应用程序,然后由该应用程序接收所有消息,这样工作就完成了。图3中显示了这种结构的一个示例。
一旦分配好工作,就可以给每个
执行模型通常是固定的,并且连续到完成某个单个
应用程序。例如,如果将一项任务分配给256 个单元,而HPC系统中有64个
节点,那么需要4个过程
迭代来完成工作。工作通常是并行完成的,在整个
应用程序完成之前,所有64个
节点都仍将保持忙碌。在整个过程中,HPC系统充当一台机器。尽管消息已经被用来在多个计算
节点中分配工作,但整个
应用程序被有效地操作为一个单独的应用程序。
其他HPC库和接口的工作方式类似,具体的方式取决于开发用于HPC环境中的应用程序。无论什么时候,都可以将工作分配和执行看作一个单独的过程。尽管
应用程序的执行可能要排队等候,但一旦应用程序开始运行,将立即在HPC系统的所有
节点上执行该工作的各个组件。
为了处理多个同时发生的
应用程序,多数HPC系统使用了一个不同应用程序在其中可以使用不同处理器/
节点设置的系统。例如256个
节点的HPC系统可以同时执行两个
应用程序,如果每个应用程序都使用整个计算资源的一个子集的话。