CN104485967B - 由序列通项表达式驱动的并行计算传输列表实时压缩方法 - Google Patents

由序列通项表达式驱动的并行计算传输列表实时压缩方法 Download PDF

Info

Publication number
CN104485967B
CN104485967B CN201510010178.9A CN201510010178A CN104485967B CN 104485967 B CN104485967 B CN 104485967B CN 201510010178 A CN201510010178 A CN 201510010178A CN 104485967 B CN104485967 B CN 104485967B
Authority
CN
China
Prior art keywords
constant
group
transmission list
node
expression formula
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201510010178.9A
Other languages
English (en)
Other versions
CN104485967A (zh
Inventor
吴峻峰
许跃生
张勇瑞
林英展
王健珊
关文超
何鸿恺
李达超
叶纬材
张永东
江颖
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
National Sun Yat Sen University
Original Assignee
National Sun Yat Sen University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by National Sun Yat Sen University filed Critical National Sun Yat Sen University
Priority to CN201510010178.9A priority Critical patent/CN104485967B/zh
Publication of CN104485967A publication Critical patent/CN104485967A/zh
Application granted granted Critical
Publication of CN104485967B publication Critical patent/CN104485967B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明公开了一种由序列通项表达式驱动的并行计算传输列表实时压缩方法,包括:S1、传输列表的逻辑分解并将传输列表按对象归属地划分;S2、非线性部分优化,利用非线性部分不等式的表格化来继续缩小范围,用组内涉及的变量的范围来验证非线性部分不等式;S3、“代理”代码定制,对于只包含线性表达式的组,可以用“代理”代码;S4、消息结构化编码解码,所述消息是指为把传输列表发送给数据拥有者而所用的消息;S5、列表驱动的数据打包拆包,所述列表是指传输列表。本发明使用了表达式分析程序来自动化传输列表的压缩方案的定制,然后根据表达式分析程序的分析结果来生成能实现这些压缩方案的程序代码,具有操作容易、通信效率高的优点。

Description

由序列通项表达式驱动的并行计算传输列表实时压缩方法
技术领域
本发明涉及并行计算机程序的数据通信研究领域,特别涉及一种由序列通项表达式驱动的并行计算传输列表实时压缩方法。
背景技术
以往解决并行计算的传输列表压缩问题的时候,有三种方案。这些方案不包括用传统的文件压缩算法压缩传输列表,原因是那些压缩算法的实时性达不到要求。
第一种方案适用于某些特定的并行计算流程,这些流程已经有专用的软件封装数据通信过程了,例如Hypre、PESTc、ScaLAPACK等。封装的功能一般包括了传输列表的压缩,因此应用程序自身代码不用管传输列表。由于并行计算流程的特殊性,这些专用软件往往能为传输列表找到很简短的表示方式。这是因为在较窄应用范围内,传输列表往往是很有规律的,明确了规律之后就容易找到其最佳的表示方式。还有更幸运的情况,传输列表甚至不需要包含在数据通信消息中,这是因为在某些非常特殊的并行计算流程里,专用软件的程序可以在数据拥有者节点安排一段代码扮演“代理”的角色。这类“代理”可以在拥有者处通过计算生成一份一模一样的传输列表,替请求者递交给数据拥有者。
第二种方案适用于某些简化的并行计算流程。这些流程非常简单,简单到可以配套“通用”软件框架来封装数据通信。典型的例子是Map-Reduce。这里“通用”打引号是因为那只是计算部分的通用,通信部分的流程则要按照简化的固定的模式来走。通信部分的简化使传输列表很结构化,有固定形式、甚至能预先确定,因此软件框架不需要知道数据的具体专业领域的信息,也不需要应用程序代码的帮助,就能做好传输列表的压缩甚至“代理”。
第三种方案适用于通用的并行计算流程。这些流程通常使用通用的数据通信支持库来实现(例如MPI、PVM等),但需要程序自主管理数据传输过程。这种方法的数据传输,可以使用双边通信功能,也可以用单边通信功能。其中,双边是指数据请求者和数据拥有者两边,单边则特指数据请求者这一边。双边通信需要两边都知道传输列表。数据请求者当然是知道传输列表的,问题在于怎样让数据拥有者得到传输列表,和前面说的一样,可以把传输列表先发送给数据拥有者,也可以在拥有者处定制一份“代理”代码来计算出一份一模一样的传输列表。不管是发送还是计算,一旦应用程序的自身代码让两边都有了传输列表,双边通信就能很默契地高效完成了。单边通信实际上是由单边激发通信,真正的通信过程仍然要两边都参与。单边通信与双边通信的区别在于单边通信自动化了把传输列表发给数据拥有者的过程,因此单边通信不可能使用“代理”代码,并且对传输列表只能采取机械化的表示方式。
上述第一种方案的缺点是专业领域上的适用面窄,其缺点的原因是需要针对非常特殊的并行计算流程,利用数据的专业领域信息,来定制传输列表的表示方式和“代理”代码。换到另外一种应用,专业领域上的差别可以是非常大的。
上述第二种方案的缺点是计算流程上的适用面窄。其缺点的原因是并行计算流程过度简化,不能适应很多应用的计算需求。
上述第三种方案的缺点是程序优化难度大,程序开发成本高。对于双边通信,应用程序要在自身代码中自主定制传输列表的表示方式和“代理”代码,过程繁琐。对于单边通信,由于传输列表已经被机械化地自动处理了,所以程序优化空间小,无法为传输列表选择较好的表示方式,也无法用“代理”代码来减少传输列表的发送。单边通信的优化,最直接的做法往往是换成合理的双边通信。
发明内容
本发明的主要目的在于克服现有技术的缺点与不足,提供一种由序列通项表达式驱动的并行计算传输列表实时压缩方法,用于实现并行计算传输列表的表示方式和“代理”代码的定制和实现。
为了达到上述目的,本发明采用以下技术方案:
由序列通项表达式驱动的并行计算传输列表实时压缩方法,包括下述步骤:
S1、传输列表的逻辑分解并将传输列表按对象归属地划分,由于逻辑命题“对象在某地”在数学中可以用“对象的位置在某地范围内”这种不等式所表示,所以所述划分是通过求解由多维的不等式组得到的,而不等式组的求解可以先根据不等式之间的依赖关系拆分为相互独立的小不等式组,以降低求解的复杂度,这就是所述的逻辑分解;
S2、非线性部分优化,利用非线性部分不等式的表格化来继续缩小范围,用组内涉及的变量的范围来验证非线性部分不等式;
S3、“代理”代码定制,对于只包含线性表达式的组,只要该组表达式中的“常量”是在数据拥有者节点上可知的,那么该组就可以用“代理”代码;
S4、消息结构化编码解码,所述消息是指为把传输列表发送给数据拥有者而所用的消息;
S5、列表驱动的数据打包拆包,所述列表是指传输列表,所述数据打包是按照列表所指定的顺序,把发往某节点的数据集中放入一个消息中,以便用该消息把数据成批地发送给那个节点;数据拆包就是该消息的接收者把数据从消息中取出来;
上述步骤S1-S5都和传输列表中的对象的逻辑位置有关,这些对象都存储在并行计算中逻辑概念上的共享数组时里,都被传输列表按照某种逻辑顺序来排列,假设传输列表的顺序是k维的,所请求的对象的数组是m维的,那么这段传输列表的序列的通项表达式就是关于k个变量的m维表达式,并且这k个变量变化的范围都由传输请求指定。
优选的,步骤S1中,逻辑分解首先是按照上述k个变量在这m维表达式中的分布,把这m维分成若干组,使得不同组的表达式包含不同的变量,然后把每一组的有线性表达式的维找出来;按对象归属地划分是按照数组在不同节点上的分区,把传输列表分成若干个子表,每个子表中的对象都是一个节点的,不同子表的对象是不同节点的。
优选的,当指定某个节点时,这m维的表达式,为了让其值落在该节点的区域内,每一维都能对应两个不等式,一个是该维表达式的值不小于该节点区域在这一维的下界,另一个是该维表达式的值不大于该节点区域在这一维的上界;所述逻辑分解,首先将这2m个不等式分成相互独立的若干组,每一组不等式的解都不会影响其它组的解;其次将容易求解的线性不等式找出来;求解这些不等式,可以把那k个变量在这个节点上指定有效对象的范围算出来,这个范围可以比变量的全局范围小很多;求解不等式的过程用的是几何方法,只处理线性表达式得到的不等式:每一个这样的线性不等式都对应一个超平面;所述超平面在多维空间中的性质和平面在三维空间中的性质类似,平面是超平面的特例,每一个这样的超平面都有可能把数据请求所用的变量的全局范围切掉一部分,所述全局范围即为一个超立方;这些超平面都切完之后,就剩下一个相对较小的有界凸集了。
优选的,步骤S2中,用组内涉及的变量的范围来验证非线性部分不等式的方法是:遍历所涉及的变量的取值范围,逐点检查非线性不等式是否成立;当成立的点数所占比例低于事先确定的一个阈值时,就把非线性表达式转变为表格,其中只包含非线性不等式成立的那些点,且表格的维数由非线性不等式所涉及的变量数决定。
优选的,步骤S3中,所述“常量”需要在每个节点上都维护一个常量表,这个常量表的内容是各个节点上的“常量”在表格所在节点的副本;所述的“常量”是指表达式中除了请求给定范围的那些变量之外的量,这些量可以是存储在应用程序的变量中的,这些变量不是表达式中的那些变量;所述“常量”,是相对的常量,不是程序中绝对的常量。
优选的,所述“常量”的维护,难点在于“常量”的同步更新,其同步更新的方法为:
在原节点上更新了“常量”之后,在常量表所在节点上也做相应地更新,保持副本与原本的一致性,常量表允许应用程序做以下三方面的选择:要保存哪些“常量”;哪些“常量”可以不需要通信,用给定的计算子程序可以异地更新;哪些“常量”需要通信来保持数据同步;在常量表的帮助下,“代理”代码可以没有阻碍地对该组线性表达式进行求值,从而避免了通过通信把组内表达式信息发送给数据拥有者;“代理”代码的模板是:先从常量表中取出所需的“常量”,再用超平面切割超立方体计算缩小的变量范围,然后就可以在缩小的变量范围内遍历各点,即遍历在组所涉及的维上的投影,得到序列元素在这些维上的位置信息。
优选的,步骤S4中,消息结构化编码解码的具体方法为:
首先,对于步骤S3中确定可以用“代理”代码的表达式组,该表达式组不需要放到消息中;
然后,所有要入到消息中的表达式,都按照下面格式来编码:用一个整数来记录表达式组的维数;用前述维数那么多个整数来记录维号列表;用一个整数来记录表达式逻辑树的节点数;用节点数那么多个节点结构来记录节点内容;用一个整数来记录常量表长度;用常量表长度那么多个常量表结构来记录常量值;用一个整数来记录该组表达式所涉及的变量数;用前述变量数那么多个整数来记录变量在数据请求中的编号;用一个整数来记录限定变量范围的超平面数;对每个超平面,用前述变量数加一那么多个整数来记录超平面的位置;按照上述格式来存表达式,就可以把数据请求编码到消息中;解码过程是按编码过程反过来做的,即按上述格式把表达式组从消息中取出来。
优选的,所述节点内容包括节点编号、父节点编号、作为子节点里的序号、操作符编号、左操作元类型和编号以及右操作元类型和编号;
所述结构内容包括常量编号、常量类型编号、常量维数、常量各维大小以及常量数据。
优选的,步骤S5中,列表的顺序混合使用了两种方式来指定,分别是“代理”代码和列表的结构化消息,这两种方式结合起来,可以还原传输列表,对于可以用“代理”代码的表达式组,组内的顺序用“代理”代码来计算得到;对于不能用“代理”代码的表达式组,则需要通信得到从步骤S4所生成的传输列表消息,并从消息中,取出表达式的信息,从而通过遍历表达式涉及的变量的范围,来得到组内的顺序。
优选的,步骤S4和步骤S5的动作都是要按具体情况来完成的,因此需要用代码生成程序来生成对应的代码,这些代码所需要的分析结果,是由表达式分析程序来产生的。
本发明与现有技术相比,具有如下优点和有益效果:
1、本发明与上述第一、二种现有技术相比较,本发明使用了表达式分析程序来自动化传输列表的压缩方案的定制,具有应用领域方面的适用面广、并行算法方面的通用性好的优点。事实上,前述现有技术的第一种情况(只为特定应用领域特殊地定制压缩方案)和第二种情况(只为特定并行计算流程特殊地定制压缩方案)都是在支持软件的底层代码(即专用软件代码、软件框架代码)中根据具体情况手工定制压缩方案的,而本发明的方案则是通过程序对表达式的分析来自动定制压缩方案,因此有这个优点。
2、本发明用代码生成程序生成能实现这些方案的程序代码,把生成的这些代码和应用程序的其他代码一起编译,就能得到通信效率较高的并行计算程序。本发明与前述第三种现有技术的方案的区别在于,前述第三种现有技术方案为了适应多种多样的应用和算法,需要大量地手工编写传输列表的压缩代码,而本发明方案的这些代码是通过代码生成程序自动生成的,因此有这个优点。
附图说明
图1是本发明方法的流程图。
具体实施方式
下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。
实施例
传输列表是并行计算程序的数据通信消息的重要组成部分,本发明要解决这种传输列表的自动实时压缩问题,并行计算把每个大规模任务分解成多个小规模任务,把每组大规模数据分成多组小规模数据,把分解后的任务和数据分配到不同的计算机节点上,进行计算和处理,并且不时地进行节点间的数据通信,以实现任务之间的协调,解决数据之间的依赖。数据通信通常由通信请求驱动,这就像电子商务的物流由商品订单驱动一样,和这些订单一致的是,通信请求也要包含一份传输列表。这列表实际上是一个序列,其元素通项是要传输的数据所对应的对象的逻辑位置。对于读数据的请求,请求者节点把这些对象的位置发给数据拥有者节点之后,数据拥有者就可以按照这些位置找到要数据对应的对象,然后就可以把对象的数据取出来打包发给请求者。对于写数据的请求,请求者把位置序列连同数据一起发给数据拥有者,然后拥有者按位置把得到的数据更新到对应的对象中。本发明就是要解决压缩这类传输列表的问题,其中的压缩是广义的压缩,不但选择更简短的表示方式,而且通过一种叫“代理”代码的计算机程序代码,来尽可能地减少传输列表的发送。使用“代理代码”可以减少传输列表的发送量,让传输列表中必须发送的部分有更简短的表示方式,在保证传输实时性的前提下减少由传输列表产生的通信负荷。
如图1所示,本实施例的由序列通项表达式驱动的并行计算传输列表实时压缩方法,其中主要技术包含五个部分的功能中,分别是传输列表的(一)逻辑分解和按对象归属地划分、(二)非线性部分优化、(三)“代理”代码定制、(四)消息结构化编码解码和(五)列表驱动的数据打包拆包。其中,第一、二部分都是表示方式的优化,第三部分是定制好“代理”代码,以便减少传输列表的发送量,第四部分是对必须发送的传输列表的消息进行编码和解码,而第五部分则是用这种新型结构的传输列表指挥的数据打包和拆包机制。由于前三部分都是可以预先处理的,最后这两部分的效率是保证实时性的关键。
上述五部分和前述两套电脑程序的对应关系是:前三部分由表达式分析程序负责,后两部分是代码生成程序负责。
在具体介绍这五部分功能之前,先说一下传输列表中对象的逻辑位置。这些对象是都是可以按照数组组织的,包括很复杂的数据结构,都可以放到数组中。这里的数组是逻辑概念上的数组,是并行计算中的全局共享数组,在物理分布上允许数组跨节点存储,每个节点都可以拥有这个数组中连续的一个区域。数组可以是一维的,也可以是多维的,不同的数组可以有不同的维数。传输列表首先是按照数据请求分段的,每段中的对象都是同一个数组的,而且对象在数组中的位置有通项表达式表示。由于数组可以是多维的,所以这里的通项表达式也对应地可以是多维的。此外,这里的通项排列是按照对象在数据请求中的逻辑顺序来排的。这里允许数据请求的逻辑顺序是多维的,这个请求的维数不要求和数组的维数一样,请求的维数由请求中使用了多少个变量来决定,并且要求变量的范围(称为变量的全局范围)要在请求中明确地给出。因此,假设一个数据请求是k维的,所请求的对象的数组是m维的,那么这段传输列表的序列的通项表达式就是m维的,这些表达式都是关于数据请求给定的k个变量的(但不要求每个表达式都包含所有k个变量),并且这里k个变量变化的范围都由请求指定。
第一部分功能是传输列表的逻辑分解和按对象归属地划分,在图1中是A1部分。逻辑分解首先是按照上述k个变量在这m维表达式中的分布,把这m维分成若干组,使得不同组的表达式包含不同的变量,然后把每一组的有线性表达式的维找出来。按对象归属地划分是按照数组在不同节点上的分区,把传输列表分成若干个子表,每个子表中的对象都是一个节点的,不同子表的对象是不同节点的。这里的分解和分划是有关联的,当指定某个节点时,这m维的表达式,为了让其值落在该节点的区域内,每一维都能对应两个不等式,一个是该维表达式的值不小于该节点区域在这一维的下界,另一个是该维表达式的值不大于该节点区域在这一维的上界。因此,这部分功能中的分解,首先是为了把这2m个不等式分成相互独立的若干组,每一组不等式的解都不会影响其它组的解,更重要的是在组内求解不等式更容易;其次是为了把容易求解的线性不等式找出来。求解这些不等式,可以把那k个变量在这个节点上指定有效对象的范围算出来,这个范围可以比变量的全局范围小很多。求解不等式的过程用的是几何方法,只处理线性表达式得到的不等式:每一个这样的线性不等式都对应一个超平面(超平面是在多维空间中的性质和平面在三维空间中的性质类似,平面是超平面的特例)。每一个这样的超平面都有可能把数据请求所用的变量的全局范围(一个超立方体)切掉一部分。这些超平面都切完之后,就剩下一个相对较小的有界凸集了。
第二部分功能是非线性部分的优化,在图1中是A2部分。上一部分利用线性部分的不等式缩小了描述请求的变量在指定节点上的范围,这一部分尝试用非线性部分不等式的表格化来继续缩小范围,得益于第一部分的不等式分组,这里可以只用组内涉及的变量的范围来验证非线性不等式,其方法是遍历所涉及的变量的取值范围,逐点检查非线性不等式是否成立;当成立的点数所占比例低于事先确定的一个阈值时,就把非线性表达式转变为表格,其中只包含非线性不等式成立的那些点,且表格的维数由非线性不等式所涉及的变量数决定。这样做,可以使请求的接收者(也就是数据拥有者)避免在非线性不等式不成立的点上求表达式的值,降低了接收者处理请求时的计算复杂度,但代价是使表达式的常量变多(表格中的值是增多的常量),从而增大了发送请求的传输量。因此,非线性表达式的优化必须用前述的阈值来控制,以便在传输量和计算量之间取得平衡。
第三部分功能是“代理”代码的定制,在图1中是A3部分,上面第一部分把表达式分组后,有一些组内是只包含线性表达式的,另外有一些组包含了非线性表达式(有可能也包含线性表达式)。对于只包含线性表达式的组,有可能可以用“代理”代码,只要该组表达式中的“常量”是在数据拥有者节点上可知的,那么该组就可以用“代理”代码。为了让“代理”代码能够处理好这些“常量”,需要在每个节点上都维护一个常量表,这个常量表的内容是各个节点上的“常量”在表格所在节点的副本。应当明确的是,这里的“常量”是指表达式中除了请求给定范围的那些变量之外的量,这些量可以是存储在应用程序的变量中的,只不过这些变量不是表达式中的那些变量。因此,这里的所谓“常量”,是相对的常量,不是程序中绝对的常量。这些“常量”的维护,难点在于“常量”的同步更新。在原节点上更新了“常量”之后,在常量表所在节点上也要相应地更新,来保持副本与原本的一致性。这些更新要尽可能地避免通信,因此,常量表允许应用程序做以下三方面的选择:要保存哪些“常量”;哪些“常量”可以不需要通信,用给定的计算子程序可以异地更新;哪些“常量”需要通信来保持数据同步。在常量表的帮助下,“代理”代码可以没有阻碍地对该组线性表达式进行求值,从而避免了通过通信把组内表达式信息发送给数据拥有者。“代理”代码的模板是:先从常量表中取出所需的“常量”,再用第一部分所提及的几何方法(用超平面切割超立方体)计算缩小的变量范围,然后就可以在缩小的变量范围内遍历各点(在组所涉及的维上的投影),得到序列元素在这些维上的位置信息。该模板被用于图中的G2部分(生成代理)。
第四部分是消息结构化编码解码,在图1中是G1部分,这里的消息是指为把传输列表发送给数据拥有者而所用的消息。简单来说,这些消息要存放数据请求的表达式的信息。首先,每三部分的功能已经确定了那些表达式组可以用“代理”代码,从而那些表达式组不需要放到消息中;然后,所有要入到消息中的表达式,都按照下面格式来编码:用一个整数来记录表达式组的维数;用前述维数那么多个整数来记录维号列表;用一个整数来记录表达式逻辑树的节点数;用节点数那么多个节点结构来记录节点内容,节点内容包括节点编号(一个整数),父节点编号(一个整数),作为子节点里的序号(一个整数),操作符编号(一个整数),左操作元类型和编号(两个整数,类型包括子树、常量和变量),右操作元类型和编号(两个整数,类型种类如前所述);用一个整数来记录常量表长度;用常量表长度那么多个常量表结构来记录常量值,结构内容包括常量编号(一个整数),常量类型编号(一个整数),常量维数(一个整数),常量各维大小(每维一个整数),常量数据(总共各维大小之乘积那么多个数据,每个数据项都用常量类型编号所对应的类型来表示);用一个整数来记录该组表达式所涉及的变量数;用前述变量数那么多个整数来记录变量在数据请求中的编号;用一个整数来记录限定变量范围的超平面数;对每个超平面,用前述变量数加一那么多个整数来记录超平面的位置。按照上述格式来存表达式,就可以把数据请求编码到消息中。解码过程是按编码过程反过来做的,换句话说,就是按上述格式把表达式组从消息中取出来。我们可以看到,由于传输列表的这种消息是用表达式来表示的,其长度会明显地小于传统的枚举方式所需要的消息长度。因此,这一部分功能能够很大程度地优化应用程序的通信效率。
第五部分是列表驱动的数据打包拆包,在图1中是G3部分,这里的列表是指传输列表,简单来说,数据打包就是按照列表所指定的顺序,把发往某节点的数据集中放入一个消息中,以便用该消息把数据成批地发送给那个节点;反过来,数据拆包就是该消息的接收者把数据从消息中取出来,其中,因为数据接收者是知道传输列表的,所以接收者会知道各项数据对应哪个对象。更具体地,列表的顺序混合使用了两种方式来指定,分别是“代理”代码和列表的结构化消息,这两种方式结合起来,可以还原传输列表。对于可以用“代理”代码的表达式组,组内的顺序用“代理”代码来计算得到;对于不能用“代理”代码的表达式组,则需要通信得到从第四部分功能所生成的传输列表消息,并从消息中,取出表达式的信息,从而通过遍历表达式涉及的变量的范围,来得到组内的顺序,有了这些顺序,打包和拆包都是机械的动作。
本实施例中,由于第四和第五部分功能的动作都是要按具体情况来做的,因此需要用代码生成程序来生成对应的代码。这些代码所需要的前三部分功能的分析结果,是由表达式分析程序来产生的。
上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

Claims (10)

1.由序列通项表达式驱动的并行计算传输列表实时压缩方法,其特征在于,包括下述步骤:
S1、传输列表的逻辑分解并将传输列表按对象归属地划分,由于逻辑命题“对象在某地”在数学中可以用“对象的位置在某地范围内”这种不等式所表示,所以所述划分是通过求解由多维的不等式组得到的,而不等式组的求解可以先根据不等式之间的依赖关系拆分为相互独立的小不等式组,以降低求解的复杂度,这就是所述的逻辑分解;
S2、非线性部分优化,利用非线性部分不等式的表格化来继续缩小范围,用组内涉及的变量的范围来验证非线性部分不等式;
S3、“代理”代码定制,对于只包含线性表达式的组,只要该组表达式中的“常量”是在数据拥有者节点上可知的,那么该组就可以用“代理”代码;
S4、消息结构化编码解码,所述消息是指为把传输列表发送给数据拥有者而所用的消息;
S5、列表驱动的数据打包拆包,所述列表是指传输列表,所述数据打包是按照列表所指定的顺序,把发往某节点的数据集中放入一个消息中,以便用该消息把数据成批地发送给那个节点;数据拆包就是该消息的接收者把数据从消息中取出来;
上述步骤S1-S5都和传输列表中的对象的逻辑位置有关,这些对象都存储在并行计算中逻辑概念上的共享数组里,都被传输列表按照某种逻辑顺序来排列,假设传输列表的顺序是k维的,所请求的对象的数组是m维的,那么这段传输列表的序列的通项表达式就是关于k个变量的m维表达式,并且这k个变量变化的范围都由传输请求指定。
2.根据权利要求1所述由序列通项表达式驱动的并行计算传输列表实时压缩方法,其特征在于,步骤S1中,逻辑分解首先是按照上述k个变量在这m维表达式中的分布,把这m维分成若干组,使得不同组的表达式包含不同的变量,然后把每一组的有线性表达式的维找出来;按对象归属地划分是按照数组在不同节点上的分区,把传输列表分成若干个子表,每个子表中的对象都是一个节点的,不同子表的对象是不同节点的。
3.根据权利要求2所述由序列通项表达式驱动的并行计算传输列表实时压缩方法,其特征在于,当指定某个节点时,这m维的表达式,为了让其值落在该节点的区域内,每一维都能对应两个不等式,一个是该维表达式的值不小于该节点区域在这一维的下界,另一个是该维表达式的值不大于该节点区域在这一维的上界;所述逻辑分解,首先将这2m个不等式分成相互独立的若干组,每一组不等式的解都不会影响其它组的解;其次将容易求解的线性不等式找出来;求解这些不等式,可以把那k个变量在这个节点上指定有效对象的范围算出来,这个范围可以比变量的全局范围小很多;求解不等式的过程用的是几何方法,只处理线性表达式得到的不等式:每一个这样的线性不等式都对应一个超平面;所述超平面在多维空间中的性质和平面在三维空间中的性质类似,平面是超平面的特例,每一个这样的超平面都有可能把数据请求所用的变量的全局范围切掉一部分,所述全局范围即为一个超立方;这些超平面都切完之后,就剩下一个相对较小的有界凸集了。
4.根据权利要求1所述的由序列通项表达式驱动的并行计算传输列表实时压缩方法,其特征在于,步骤S2中,用组内涉及的变量的范围来验证非线性部分不等式的方法是:遍历所涉及的变量的取值范围,逐点检查非线性不等式是否成立;当成立的点数所占比例低于事先确定的一个阈值时,就把非线性表达式转变为表格,其中只包含非线性不等式成立的那些点,且表格的维数由非线性不等式所涉及的变量数决定。
5.根据权利要求1所述的由序列通项表达式驱动的并行计算传输列表实时压缩方法,其特征在于,步骤S3中,所述“常量”需要在每个节点上都维护一个常量表,这个常量表的内容是各个节点上的“常量”在表格所在节点的副本;所述的“常量”是指表达式中除了请求给定范围的那些变量之外的量,这些量可以是存储在应用程序的变量中的,这些变量不是表达式中的那些变量;所述“常量”,是相对的常量,不是程序中绝对的常量。
6.根据权利要求5所述的由序列通项表达式驱动的并行计算传输列表实时压缩方法,其特征在于,所述“常量”的维护,难点在于“常量”的同步更新,其同步更新的方法为:
在原节点上更新了“常量”之后,在常量表所在节点上也做相应地更新,保持副本与原本的一致性,常量表允许应用程序做以下三方面的选择:要保存哪些“常量”;哪些“常量”可以不需要通信,用给定的计算子程序可以异地更新;哪些“常量”需要通信来保持数据同步;在常量表的帮助下,“代理”代码可以没有阻碍地对该组线性表达式进行求值,从而避免了通过通信把组内表达式信息发送给数据拥有者;“代理”代码的模板是:先从常量表中取出所需的“常量”,再用超平面切割超立方体计算缩小的变量范围,然后就可以在缩小的变量范围内遍历各点,即遍历在组所涉及的维上的投影,得到序列元素在这些维上的位置信息。
7.根据权利要求1所述的由序列通项表达式驱动的并行计算传输列表实时压缩方法,其特征在于,步骤S4中,消息结构化编码解码的具体方法为:
首先,对于步骤S3中确定可以用“代理”代码的表达式组,该表达式组不需要放到消息中;
然后,所有要入到消息中的表达式,都按照下面格式来编码:用一个整数来记录表达式组的维数;用前述维数那么多个整数来记录维号列表;用一个整数来记录表达式逻辑树的节点数;用节点数那么多个节点结构来记录节点内容;用一个整数来记录常量表长度;用常量表长度那么多个常量表结构来记录常量值;用一个整数来记录该组表达式所涉及的变量数;用前述变量数那么多个整数来记录变量在数据请求中的编号;用一个整数来记录限定变量范围的超平面数;对每个超平面,用前述变量数加一那么多个整数来记录超平面的位置;按照上述格式来存表达式,就可以把数据请求编码到消息中;解码过程是按编码过程反过来做的,即按上述格式把表达式组从消息中取出来。
8.根据权利要求7所述的由序列通项表达式驱动的并行计算传输列表实时压缩方法,其特征在于,所述节点内容包括节点编号、父节点编号、作为子节点里的序号、操作符编号、左操作元类型和编号以及右操作元类型和编号;
所述结构内容包括常量编号、常量类型编号、常量维数、常量各维大小以及常量数据。
9.根据权利要求1所述的由序列通项表达式驱动的并行计算传输列表实时压缩方法,其特征在于,步骤S5中,列表的顺序混合使用了两种方式来指定,分别是“代理”代码和列表的结构化消息,这两种方式结合起来,可以还原传输列表,对于可以用“代理”代码的表达式组,组内的顺序用“代理”代码来计算得到;对于不能用“代理”代码的表达式组,则需要通信得到从步骤S4所生成的传输列表消息,并从消息中,取出表达式的信息,从而通过遍历表达式涉及的变量的范围,来得到组内的顺序。
10.根据权利要求1所述的由序列通项表达式驱动的并行计算传输列表实时压缩方法,其特征在于,步骤S4和步骤S5的动作都是要按具体情况来完成的,因此需要用代码生成程序来生成对应的代码,这些代码所需要的分析结果,是由表达式分析程序来产生的。
CN201510010178.9A 2015-01-08 2015-01-08 由序列通项表达式驱动的并行计算传输列表实时压缩方法 Active CN104485967B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510010178.9A CN104485967B (zh) 2015-01-08 2015-01-08 由序列通项表达式驱动的并行计算传输列表实时压缩方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510010178.9A CN104485967B (zh) 2015-01-08 2015-01-08 由序列通项表达式驱动的并行计算传输列表实时压缩方法

Publications (2)

Publication Number Publication Date
CN104485967A CN104485967A (zh) 2015-04-01
CN104485967B true CN104485967B (zh) 2017-10-03

Family

ID=52760483

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510010178.9A Active CN104485967B (zh) 2015-01-08 2015-01-08 由序列通项表达式驱动的并行计算传输列表实时压缩方法

Country Status (1)

Country Link
CN (1) CN104485967B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000036562A1 (en) * 1998-12-15 2000-06-22 Intensys Corporation Digital camera using programmed parallel computer for image processing functions and control
WO2011100837A1 (en) * 2010-02-18 2011-08-25 Research In Motion Limited Parallel entropy coding and decoding methods and devices
CN102324999A (zh) * 2011-05-16 2012-01-18 中兴通讯股份有限公司 一种交织地址的并行计算方法及系统
CN102446156A (zh) * 2011-09-14 2012-05-09 中国科学院计算技术研究所 用于并行多处理器系统的通信行为获取装置
CN103309889A (zh) * 2012-03-15 2013-09-18 华北计算机系统工程研究所 一种利用gpu协同计算实现实时数据并行压缩的方法
CN103916131A (zh) * 2013-01-02 2014-07-09 三星电子株式会社 压缩数据的方法和用于执行该方法的设备

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000036562A1 (en) * 1998-12-15 2000-06-22 Intensys Corporation Digital camera using programmed parallel computer for image processing functions and control
WO2011100837A1 (en) * 2010-02-18 2011-08-25 Research In Motion Limited Parallel entropy coding and decoding methods and devices
CN102324999A (zh) * 2011-05-16 2012-01-18 中兴通讯股份有限公司 一种交织地址的并行计算方法及系统
CN102446156A (zh) * 2011-09-14 2012-05-09 中国科学院计算技术研究所 用于并行多处理器系统的通信行为获取装置
CN103309889A (zh) * 2012-03-15 2013-09-18 华北计算机系统工程研究所 一种利用gpu协同计算实现实时数据并行压缩的方法
CN103916131A (zh) * 2013-01-02 2014-07-09 三星电子株式会社 压缩数据的方法和用于执行该方法的设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
一种面向分布式众核平台的并行编程语言;吴峻峰 等;《计算机科学》;20130331;第40卷(第3期);全文 *

Also Published As

Publication number Publication date
CN104485967A (zh) 2015-04-01

Similar Documents

Publication Publication Date Title
US11061923B2 (en) Interactive visual analysis of datasets using a specialized virtual machine
US10380140B2 (en) Systems and methods for implementing a virtual machine for interactive visual analysis
CN102929996B (zh) XPath查询优化方法及系统
US20190188308A1 (en) Computing data lineage across a network of heterogeneous systems
Dempster et al. EVPI‐based importance sampling solution proceduresfor multistage stochastic linear programmeson parallel MIMD architectures
US11023443B2 (en) Collaborative planning for accelerating analytic queries
CN103258049A (zh) 一种基于海量数据的关联规则挖掘方法
US20090006370A1 (en) Advanced techniques for sql generation of performancepoint business rules
CN105701200A (zh) 一种内存云计算平台上的数据仓库安全olap方法
CN112163048A (zh) 基于ClickHouse实现OLAP分析的方法、装置
Ou et al. Architecture-independent locality-improving transformations of computational graphs embedded in k-dimensions
JP5060345B2 (ja) データベース処理装置、情報処理方法及びプログラム
CN108376169A (zh) 一种用于联机分析处理的数据处理方法和装置
CN112148343B (zh) 规则发布方法、装置及终端设备
Pay et al. Partition-based decomposition algorithms for two-stage stochastic integer programs with continuous recourse
Cao et al. A scalable global optimization algorithm for stochastic nonlinear programs
Warrier et al. A branch‐and‐price approach for the maximum weight independent set problem
CN104951442B (zh) 一种确定结果向量的方法和装置
CN111708807A (zh) 数据扁平化处理方法、装置、设备及存储介质
CN104485967B (zh) 由序列通项表达式驱动的并行计算传输列表实时压缩方法
Griebel et al. A particle-partition of unity method-Part IV: Parallelization
US20020095422A1 (en) Method for creating a balanced binary tree
CN102737134A (zh) 适用于大规模实时数据流的查询处理方法
Nwana et al. A co-operative parallel heuristic for mixed zero–one linear programming: Combining simulated annealing with branch and bound
US11416262B1 (en) Systems and methods for improving computational speed of planning by enabling interactive processing in hypercubes

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant