并行计算
HPC解决方案的专用特性在开发应用程序以使用这种能力时提供了一些好处。大多数HPC系统将自己表现为单个计算资源,因此它成为一种编程责任,需要通过专用库来构建一个能够分布到整个资源中的应用程序。
HPC环境中的应用程序开发通常是通过专用库来处理,这极大简化了创建应用程序的过程以及将该应用程序的任务分配到整个HPC系统中的过程。
最流行的解决方案之一是消息传递接口(MPI)。MPI提供了一个创建工作的简化方法,使用消息传递在各个节点之间交换工作请求。作为开发过程的一部分,您可能知道想要使用的处理器(在这里指单独节点,而非单独CPU)的数量。HPC环境中的劳动分工取决于应用程序,并且很显然还取决于HPC环境的规模。如果您将进行的工作分配依赖于多个步骤和计算,那么HPC环境的并行和顺序特性将在网格的速度和灵活性方面起到重要作用。
一旦分配好工作,就可以给每个节点发送一条消息,让它们执行自己的那部分工作。工作被放入HPC单元中同时发送给每个节点,通常会期望每个节点同时给出结果作为响应。来自每个节点的结果通过MPI提供的另一条消息返回给主机应用程序,然后由该应用程序接收所有消息,这样工作就完成了。图4中显示了这种结构的一个示例。

图4.HPC功能图
执行模型通常是固定的,并且连续到完成某个单个应用程序。例如,如果将一项任务分配给256个单元,而您的HPC系统中有64个节点,那么您需要4个过程迭代来完成工作。工作通常是并行完成的,在整个应用程序完成之前,所有64个节点都仍将保持忙碌。在整个过程中,HPC系统充当一台机器。尽管消息已经被用来在多个计算节点中分配工作,但整个应用程序被有效地操作为一个单独的应用程序。
其他HPC库和接口的工作方式类似,具体的方式取决于开发用于HPC环境中的应用程序。无论什么时候,都可以将工作分配和执行看作一个单独的过程。尽管应用程序的执行可能要排队等候,但一旦应用程序开始运行,将立即在HPC系统的所有节点上执行该工作的各个组件。
为了处理多个同时发生的应用程序,多数HPC系统使用了一个不同应用程序在其中可以使用不同处理器/节点设置的系统。例如256个节点的HPC系统可以同时执行两个应用程序,如果每个应用程序都使用整个计算资源的一个子集的话。
网格编程
网格的分布式(常常是非专用的)结构需要为工作的执行准备一个不同的模型。因为网格的这种特性,无法期望同时执行各种工作单元。有许多因素影响了工作的执行时间,其中包括工作分配时间以及每个网格节点的资源的有效功率。
因为各个节点中存在的不同之处和工作被处理的方式,网格使用了一个将网格节点的监视与工作单元的排队系统相结合的系统。该监视支持网格管理器确定各个节点上的当前负载。然后在分配工作时使用该信息,把要分配的工作单元分配给没有(或有少量)当前资源负载的节点。
所以,整个网格系统基于一系列的队列和分布,通过在节点之间共享负载,在节点变得可用时将工作分配给队列中的每个节点,使网格作为一个整体得到更有效的使用。
响应和结果都同样地在网格控制器上进行排队,以便在处理完所有工作单元(及其结果)时将它们收集到应用程序的最终结果集中。图5中显示了这样一个示例。

图5.网格功能图
网格模型允许使用各种级别的资源、工作单元规模和分配级别,而不只是HPC解决方案使用的执行模型提供的那些。大多数网格支持使用每个将被排队和分配的应用程序的各种工作单元同时执行多个工作请求。例如,可以在一些节点仍然在完成Job1上的工作时开始Job2上的工作,为了完成工作,两项作业以某种动态的方式使用相同数量的可用节点。
此过程的灵活特性不但允许以更动态更适应的方式执行工作,还允许网格与各种硬件和平台一起使用。即使网格中的某些节点比其他一些节点更快或更慢一些,也不再有任何关系;它们可以在自己(比较)空闲的时间完成工作,并且结果将被排队。其间,更快的系统可能被分配更多的工作并完成更多的工作单元。
出现这种不利现象是因为需要更繁重的管理费用来观察和监视各个节点,以便能够在节点间有效分配工作。在异构环境中,还必须考虑不同的平台,并开发跨支持环境兼容的应用程序。但在网格空间中,Web服务已简化了该过程,使分配工作变得更容易,不必担心这些不同。
在查看Web服务的效果之前,我们将查看HPC和网格之间的会合区域,并了解这将如何影响不同的执行模型。