高性能计算( 二 )


高性能计算

文章插图
图2.格线网路架构作为执行模型和环境 , 格线还被设计成在操作和执行方面更具灵活性 。儘管可以使用格线解决诸如HPC解决方案之类的计算任务 , 但格线可以更灵活 , 可以使用各种节点执行不同的计算、表达式和操作 。格线并不只是一种没有任何特点的计算资源 , 可将它分布到各种节点中使用 , 并且一直运行到作业和操作都已完成 。这使得格线在不同计算和组件的执行顺序对于剩余任务的连续执行不那幺重要的地方变得更加实用 。利用这种可变长度灵活性和较孤立任务的格线解决方案的一个好例子是计算机合成电影和特技效果中的表演 。在这里 , 生成的顺序并不重要 。单帧或更大的多秒的片段可以彼此单独呈现 。儘管最终目标是让电影以正确的顺序播放 , 但最后五分钟是否在最初的五分钟之前完成是无关紧要的;稍后可以用正确的顺序将它们衔接在一起 。格线与传统HPC解决方案之间的其他主要不同是:HPC解决方案设计用于提供特定资源解决方案 , 比如强大的计算能力以及在记忆体中保存大量数据以便处理它们的能力,另一方面 , 格线是一种分散式计算资源 , 这意味着格线可以根据需要共享任何组件 , 包括记忆体、CPU电源 , 甚至是磁碟空间 。因为这两个系统之间存在这些不同 , 因此开发出了简化该过程的不同编程模型和开发模型 。HPC解决方案的专用特性在开发应用程式以使用这种能力时提供了一些好处 。大多数HPC系统将自己表现为单个计算资源 , 因此它成为一种编程责任 , 需要通过专用库来构建一个能够分布到整个资源中的应用程式 。HPC环境中的应用程式开发通常是通过专用库来处理 , 这极大简化了创建应用程式的过程以及将该应用程式的任务分配到整个HPC系统中的过程 。最流行的解决方案之一是讯息传递接口(MPI) 。MPI提供了一个创建工作的简化方法 , 使用讯息传递在各个节点之间交换工作请求 。作为开发过程的一部分 , 可能知道想要使用的处理器(在这里指单独节点 , 而非单独CPU)的数量 。HPC环境中的劳动分工取决于应用程式 , 并且很显然还取决于HPC环境的规模 。如果将进行的工作分配依赖于多个步骤和计算 , 那幺HPC环境的并行和顺序特性将在格线的速度和灵活性方面起到重要作用 。一旦分配好工作 , 就可以给每个节点传送一条讯息 , 让它们执行自己的那部分工作 。工作被放入HPC单元中同时传送给每个节点 , 通常会期望每个节点同时给出结果作为回响 。来自每个节点的结果通过MPI提供的另一条讯息返回给主机应用程式 , 然后由该应用程式接收所有讯息 , 这样工作就完成了 。图3中显示了这种结构的一个示例 。
高性能计算

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