1. 技术方案(技术路线,技术措施)
1.1. 技术术语
本技术方案中所使用的技术术语的解释如下:
l 计算节点(Computing Node),参与并行计算的计算单元(计算机、进程)。在分层计算中,按照树状结构计算节点又分为父结点和子节点。
l 计算任务(Computing Task),一次并行计算的输入,通常应该具有可分解性,一个大的计算任务可以分解成较小的子任务。
l 计算结果(Computing Result),一次并行计算的输出,通常应该具有可合并性,若干子计算结果可以合并成一个较大的计算结果。
l 计算代码(Computing Code),一次并行计算需要执行的程序,它应该具有三个职责:根据输入得到输出,分解计算任务,合并计算结果。
l 计算容器(Computing Container),或称为分层计算中间件,是分层计算的核心。父节点与子节点之间的数据传递、计算代码的管理、子节点的监控和管理等等完全由容器负责;而计算任务的分解、执行以及计算结果的合并等等也都需要由容器来发起。
1.2. 技术架构
分层计算采用树状拓扑结构,通过分布在各计算节点上的计算容器为用户提供一个并行计算的支撑平台,其架构示意图如下所示:
图 一:分层计算架构图
对于一次并行计算,根节点根据其子节点的数目以及各子节点的计算能力将计算任务分解成若干子任务,然后分发给子节点。对于子节点,如果还存在孙子节点,则重复进行任务分解,直至到达叶子节点。叶子节点进行计算得到计算结果,便将结果返回其父节点,父节点负责进行计算结果的合并,再将合并后的结果返回父节点的父节点,直至到达根节点。这样便完成了整个并行计算。
1.3. 层次计算
父节点分割计算任务,交由子节点计算,等待子节点返回计算结果后合并成自己这一层的完整结果的过程,我们称之为完成了一个层次计算。具体而言,一个层次计算的过程以及这一过程中父节点和子节点的协作关系如下:
图 二:父节点、子节点协作图
1. 父节点根据其子节点的情况(例如计算能力强的子节点应该分配更多的任务)对自己的计算任务进行分割。
2. 父节点将代码和计算任务分发给子节点。其中代码部分可以是代码本身,也可以是一个可供下载的网络链接。
3. 子节点根据从父节点获得的代码执行计算任务。
4. 子节点完成计算任务后将计算结果返回父节点。
5. 父节点汇总所有子节点的计算结果后,汇总成该层次计算的完整结果。
其中步骤2、3是一个异步处理过程,父节点和子节点之间不需要保持连接。层次计算从下往上执行,直到根节点完成层次计算,则完成了整个分层并行计算。
2. 方案实施所需的条件(技术条件,试验条件)
本方案的实施需要具备以下知识:
平台:.Net
语言:C#, XML
本方案的实施和试验需要提供如下软硬件环境:
硬件:两台(或以上)PC机(配置需满足.Net Framework 1.1的要求)
软件:Windows 98 以上版本
.Net Framework 1.1
Visual Studio .Net 2003
3. 存在的主要问题及拟解决办法
首先,该课题一开始是作为一种网格计算模型来提出,后来经过大量查阅文献,发现其实该课题应该划归工作站机群(或分布式存储并行计算)这一领域,此时已经花费了一大半文献查阅时间。因此该课题在文献积累方面会存在一些不足。
拟解决办法:一方面通过延长文献查阅时间,加大文献查阅量来弥补;另一方面广泛咨询指导老师和业界专家,以获得帮助和指导。
其次,分层计算模型作为一个全新的计算模型,其实用性、可靠性和完备性几乎不可能一次达到。
拟解决办法:一方面模型在设计时充分考虑模型本身的可扩展性;另一方面将该课题作为一个开放性课题发布在互联网上,广泛征求意见(网址:http://www.cnblogs.com/shensr/category/14701.html)。
此外,最终提交的分层计算模型设计将涵盖比较全面的内容,但由于时间的关系,原型的开发不可能完全实现设计所涵盖的方方面面。
拟解决办法:原型将只实现分层计算模型的最核心部分。
需要提醒的是,相对于MPI等现有的消息传递编程技术,分层计算牺牲了一定的灵活性,可能有一些并行计算类问题将很难甚至无法在该模型下实现。当然,即便如此也无法掩盖分层计算所带来的巨大好处。
拟解决办法:尽量保持模型本身的可扩展性。
4. 预期达到的目标
本课题最终将达到以下目标:
l 提交一套完整的分层计算模型规范,该规范应该能够帮助第三方厂商开发各自的分层计算容器。
l 在.Net环境下开发一套基于该模型的原型系统,该原型系统将实现计算模型最核心的功能。
l 在.Net环境下开发一个用于演示的计算任务。