发明名称 简单对象存取协议的并行通信系统及其实现方法
摘要 一种并行SOAP通信系统及其方法,涉及网络计算技术领域;所要解决的是多机群网格的并行计算的技术问题;该系统通过多个普通计算机机群构建多机群网格,并对多机群网格中的每个计算节点配置一个面向SOAP并行通信结构,所有计算节点上的并行通信结构构成SOAP并行通信系统。利用并发数据流、动态缓冲池技术、压缩编码技术和并行流水机制,使用内存储器实现通信资源和计算资源的并行运行。运用缓冲块构建并发数据流,利用并发数据流实现并行计算所需要的多对多通信,运用超矩阵元素和密度因子来组织并发数据流并实现并发数据流的流量调节,实现并行SOAP通信系统。本发明具有良好的可扩展性、高效性、能支持多机群网格上的并行计算的特点。
申请公布号 CN101217564B 申请公布日期 2012.08.22
申请号 CN200810032680.X 申请日期 2008.01.16
申请人 上海理工大学 发明人 陈庆奎;庄松林;那丽春
分类号 H04L29/08(2006.01)I;G06F9/46(2006.01)I;G06F15/163(2006.01)I 主分类号 H04L29/08(2006.01)I
代理机构 上海申汇专利代理有限公司 31001 代理人 吴宝根
主权项 一种并行SOAP通信系统,即基于INTERNET或INTRANET的多机群网格上的并行SOAP通信系统,其特征在于,包括配置在多机群网格的每个计算节点上的动态缓冲池DBP和动态缓冲池环;所有动态缓冲池和动态缓冲池环DBPR经多机群网格的计算节点相互连接、协同工作完成并行通信过程;所述的多机群网格为一个四元组MCG(Ma,CCS,NG,R);其中Ma为MCG主控制器;CCS={CC1,CC2,...,CCc}为计算机机群的集的集合;NG={N1,N2,...,Ng}为连接各个机群网络的集合;R为连接规则;所述计算机机群是一个三元组CC(Ma,CS,NC),其中Ma为CC主控制器;CS={C1,C2,...,Cp}为CC的所有计算节点的集合,每个计算节点是一台独立的计算机,其有自己独立的CPU、内存、磁盘和通信适配器;NC为连接该机群的互联网络;所述的动态缓冲池是计算节点Ci上的11元组DBP(m,RM,wr,SM,ws,Rmtoken,Smtoken,state,next,Curin,Curout),各元部件描述如下:(1)m为当前时段与Ci通信的MCG其它计算节点的个数,即Ci有2m个并发数据流;(2)RM为m X wr矩阵、是接收m个输入并发数据流的缓冲池,称接收缓冲矩阵;其矩阵元素为下述三种形式:①为一个大小为|B|的缓冲块构成;②为空;③为k个大小为|B|的缓冲块构成,k被称为密度因子,其为大于0的整数;RM的矩阵元素被称为超矩阵元素;wr是矩阵RM的列数;(3)SM为m X ws矩阵,其矩阵元素亦为超矩阵元素,ws是矩阵SM的列数,称SM为发送缓冲矩阵;(4)Rmtoken细化为结构Rmtoken(rece,decopr)、是RM的操作令牌、Rmtoken.rece 指向RM当前输入列,供RECE进程写入RM使用;Rmtoken.decopr指向RM当前输出列、供DECOPR进程读取RM使用;(5)Smtoken细化为结构Smtoken(send,copr),是SM的操作令牌、Smtoken.send指向SM当前输出列、供SEND进程读取SM发送数据使用;Smtoken.copr指向SM当前输入列,供COPR进程写入SM使用;(6)state为动态缓冲池的状态,其包括:“膨胀”,“收缩”和“空壳”;next为指向DBP类型的指针,用于构建动态缓冲池环;(7)Curin表示当前已经进入动态缓冲池的缓冲块数目,Curout表示从动态缓冲池已经输出的缓冲块数目;(8)动态缓冲池的大小为N;所述的动态缓冲池环是计算节点Ci上的一个五元组DBPR (m,DBPS,n,Curi<rece,decopr>,Curo<send,copr>),其中m为当前时段与Ci通信的MCG其它计算节点的个数;DBPS为动态缓冲池的集合,所有动态缓冲池构成一个单向链表环;n是动态缓冲池的个数;Curi.rece是指向RECE进程当前操作的动态缓冲池,Curi.decopr是指向DECOPR进程当前操作的动态缓冲池,Curo.send是指向SEND进程当前操作的动态缓冲池,Curo.copr是指向COPR进程当前操作的动态缓冲池;所述的RECE进程、DECOPR进程、COPR进程和SEND进程是计算节点Ci上的四个通信进程,其特征表现为:Ci上的并发通信过程为“接收RECE”、“解压DECOPR”、“压缩COPR”和“发送SEND”四个操作的并发执行过程;即一个计算节点Ci上的并发发送过程包括并发执行的“压缩”、“发送”的两个过程;其上的并发接收过程包括并发执行的“接收”、“解压”过程;“并发发送过程”和“并行接收过程”是两个互逆的过程;其中“接收”、“发送”由网络适配器执行,“压缩”、“解压”由CPU来执行;所述的四个并发进程,能独立的并发执行,它们通过动态缓冲池来协同并行执行;各个进程实现方法具体描述如下:1)RECE进程的执行过程为:[1]获取当前时间段ts;并重复做[2][3][4]工作,直到ts时间段结束为止:[2]从网络上接收来自其它计算节点的数据流块DSB,[3]根据DBPR.Curi.rece获取DBPR上当前输入DBP;[3.1]如果DBP.state=“膨胀”,则执行如下操作:根据DBP.Rmtoken.rece获取DBP的RM的当前输入列号;确定数据流块DSB所对应的RM的行号line;根据该数据流的密度因子k确定超元素RM[line,DBP.Rmtoken.rece]类型和大小;向缓冲区库申请一个缓冲块B,并把DSB写入B;如果超元素RM[line,DBP.Rmtoken.rece]中的缓冲块数小于k,则将B加入该超元素;DBP.Curin++;如果DBP.Curin<N,则DBP.state=“膨胀”,否则DBP.state=“收缩”;[3.2]如果DBP.state=“收缩”,则执行如下操作:创建一个新DBP,并加入DBPR;执行过程同本进程的[3.1]步;[4]如果ts时间段到时,则执行如下操作:DBP.Rmtoken.rece所指向的RM列已经完成;DBP.Rmtoken.rece++;如果DBP.Rmtoken.decopr=NULL,则置DBP.Rmtoken.decopr=DBP.Rmtoken.rece‑1;2)DECOPR进程的执行过程为:[1]获取当前时间段ts;并重复做[2]~[7]工作:[2]根据DBPR.Curi.decopr获取DBPR上当前输入DBP;[3]如果DBP.Rmtoken.decopr=NULL,则转向[1];[4]获取DBP的RM的第DBP.Rmtoken.decopr列RMC;对向量RMC的每一超元素做如下操作:读取超元素上的缓冲块的数据流块,并执行解压解码操作;释放该超元素上 的所有缓冲块,并统计释放的缓冲块数bn;DBP.Curout=DBP.Curout+bn;[5]如果DBP.Curout<N,则执行如下操作:DBP.Rmtoken.decopr++;转向[4];[6]如果DBP.Curout=N,则执行如下操作:置DBP.state=“空壳”;置DBPR.Curi.decopr为DBPR上的下一个DBP;[7]删除DBPR上的所有“空壳”状态的DBP;转向[2];3)COPR进程的执行过程为:[1]如果计算进程有要发送的数据,则重复做[2][3]工作,直到计算进程的要发送的数据被发送完毕;[2]从计算进程获取通信数据,并对其压缩,添加路由信息RI,形成数据流块DSB;[3]根据DBPR.curo.copr获取DBPR上COPR进程的当前操作DBP;[3.1]如果DBP.state=“膨胀”,则执行如下操作:根据DBP.Smtoken.copr获取DBP的SM的当前输入列号;根据路由信息RI确定数据流块DSB所对应的SM的行号line;根据该数据流的密度因子k确定超元素SM[line,DBP.Smtoken.copr]类型和大小;向缓冲区库申请一个缓冲块B,并把DSB写入B;如果超元素SM[line,DBP.Smtoken.copr]中的缓冲块数小于k,则将B加入该超元素;DBP.Curin++;如果DBP.Curin<N,则DBP.state=““膨胀”,否则DBP.state=“收缩”;[3.2]如果DBP.state=“收缩”,则执行如下操作:创建一个新DBP,并加入DBPR;执行过程同[3.1]步;4)SEND进程的执行过程为:[1]获取当前时间段ts;并重复做[2]~[7]工作;[2]根据DBPR.Curo.send获取DBPR上SEND进程当前操作的DBP;[3]如果DBP.Smtoken.send=NULL,则转向[1];[4]获取DBP的SM的第DBP.Smtoken.send列RMC;对超元素向量RMC的每一超元素做如下操作:读取超元素上的缓冲块的数据流块,并发送到该数据流所对应的计算节点;释放该超元素上的所有缓冲块,统计该超元素所释放的缓冲块数bn;置DBP.Curout=DBP.Curout+bn;[5]如果DBP.Curout<N,则执行如下操作:DBP.Smtoken.send++;转向[4];[6]如果DBP.Curout=N,则执行如下操作:置DBP.state=“空壳”;置DBPR.Curo.send为DBPR上的下一个DBP;[7]删除DBPR上的所有“空壳”状态的DBP;转向[2]。
地址 200093 上海市杨浦区军工路516号