CN101593129B - 触发具有约束关系的多个事件的执行的方法和设备 - Google Patents
触发具有约束关系的多个事件的执行的方法和设备 Download PDFInfo
- Publication number
- CN101593129B CN101593129B CN 200810109302 CN200810109302A CN101593129B CN 101593129 B CN101593129 B CN 101593129B CN 200810109302 CN200810109302 CN 200810109302 CN 200810109302 A CN200810109302 A CN 200810109302A CN 101593129 B CN101593129 B CN 101593129B
- Authority
- CN
- China
- Prior art keywords
- event
- vector
- events
- overall situation
- finished
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Multi Processors (AREA)
Abstract
本发明涉及一种触发具有约束关系的多个事件的执行的方法和设备。所述方法包括:为所述多个事件中的每个事件分配不同的质数;为所述多个事件共同设置一个全局完成矢量,其中所述全局完成矢量与为事件分配的质数有关;以及对于任意一个待执行的子事件,仅当当前的全局完成矢量可以被为该子事件的所有父事件分配的质数的连乘积整除时,则触发该子事件的执行。根据本发明,能够充分利用多个事件之间的并行处理能力、以尽量少的存储空间来保证全局完成矢量在所有处理器上的相干性、以较少的延迟触发具有约束关系的多个事件的执行。
Description
技术领域
本申请一般涉及计算机技术应用领域,特别的涉及一种触发具有约束关系的多个事件的执行的方法、设备和相应的计算机程序。
背景技术
现有技术中,通常使用一种称为“有向无环图(Directed AcyclicGraph,DAG)”的数学模型来抽象描述多个事件之间的制约关系。有向无环图是指一个无环的有向图。关于有向无环图的详细描述为本领域技术人员所熟知,这里不做过多的详细描述。本领域技术人员可以理解,有向无环图应用领域非常广泛,包括并不限于使用有向无环图来描述事件、事务、工程或系统等的进行过程。如在一个多核处理器系统中,有向无环图被用来描述所要执行的多个线程之间的制约关系。又或是在一个关于学生课程设置的例子中,有向无环图被用来描述为学生设置的多个课程之间的制约关系。再或是在物流配送系统中,有向无环图也被用来处理货物的分发等。
图1简单示出了一种表示多个事件之间的制约关系的有向无环图。在例示的该有向无环图中,有向无环图由节点和有向线段构成。举例来说,图1中示出了多个事件(0,1,2,3...,...n*4,n*4+1,n*4+2,n*4+3),每个事件在图中以圆圈示出的节点表示(每个圆圈中的数字称为事件ID)。例如,0→4的有向线段表示事件4的执行必须在事件0完成之后,0→5和1→5的有向线段表示事件5必须要在事件0和事件1完成之后才能执行。本领域技术人员可以理解,在图1例示性示出的有向无环图中,节点之间具有约束关系。其中,举例来说,事件0和事件4之间具有约束关系,事件4的执行必须在事件0完成之后,事件0被定义为事件4的父事件,事件4被定义为事件0的子事件。类似地,事件5与事件0和事件1之间具有约束关系,事件0和事件1被定义为事件5的父事件,事件5被定义为事件0和事件1的子事件。可以理解,对于图1所例示的任意一个事件,其可以具有多个子事件而不限于所例示的一个或两个,其也可以具有多个父事件而不限于所例示的一个或两个,而且,每个事件所具有的子事件的数目可以彼此不相同,每个事件所具有的父事件的数目也可以彼此不相同。
对于以有向无环图模型抽象出来的具有约束关系的多个事件的执行,现有技术中通常采用以下两种事件调度方法。一种是基于层的事件调度方法,另一种是基于位图的事件调度方法。
图2是基于层的事件调度方法的示例。为简明起见,仍旧参考图1所示的有向无环图来描述这种基于层的事件调度方法。在该方案中,每个事件将被分配给一个层号i(0≤i≤n),举例来说,事件0、1、2、3被分配了一个“层0”的层号,而事件4、5、6、7被分配了一个“层1”的层号......事件n*4、n*4+1、n*4+2、n*4+3被分配了一个“层n”的层号。
根据基于层的事件调度方法,仅当具有层号为i-1的所有层都已经提交后,具有层号为i的事件才开始提交。这种基于层的事件调度方法较简单,但是,该方案的缺陷是会丢失一些事件的固有并行关系(inherent parallelism),延迟较大,并且会因此降低整个系统性能。如在图2中所示例的情形,假设事件0、1和2已经提交并已经执行完毕,而事件3还没有提交。在这种情形中,由于事件0已经执行,因此和事件0有约束关系的事件4是可以提交的;同样,由于事件0、事件1已经执行,因此和事件0和事件1有约束关系的事件5也可以提交;由于事件1、事件2已经执行,因此和事件1和事件2有约束关系的事件6也可以提交。但是,根据基于层的事件调度方法,由于事件3还没有提交,也就是第“0”层的事件还没有都执行完毕,因此不会执行下一层(也就是第“1”层)事件。因此事件3的未提交将阻止事件4、5和6的提交。
从以上描述可知,基于层的事件调度方法在执行具有约束关系的多个事件时,没有充分考虑多个事件之间的并行处理能力,并且存在很大延迟,由此会造成对系统性能的降级。
图3是基于位图的事件调度方法的示例。为简明起见,仍旧参考图1所示的有向无环图来描述这种基于位图的事件调度方法。图3所示的基于位图的事件调度方法采用具有相关性的位图来确保所有事件的正确提交次序。在事件的执行过程中,基于位图的事件调度方法使用一个全局完成矢量来对是否执行事件n进行判断。
具体地,该全局完成矢量是对所有事件的位映射。以图3所示为例,全局完成矢量具有长度为4*(n+1)的位数,其中每个位被映射到有向无环图上的相应事件,例如,位n将被映射到事件n上。在事件n提交后,全局完成矢量上的位n将被置为1。因此,对于任意一个子事件来说,仅当映射到其所有父事件上的位被置为1时(也就是其所有父事件都已经执行后),该子事件i才可以提交。
举例来说,对于图3中所示出的事件0、1、2、3......n*4、n*4+1、n*4+2、n*4+3,事件0对应全局完成矢量的第一位,在该事件0提交并执行后,其所对应的全局完成矢量上的第一位将被置为“1”,由此全局完成矢量变成“0000......0001”;事件1对应全局完成矢量的第二位,在该事件1提交并执行后,其对应的全局完成矢量上的第二位将被置为“1”,由此全局完成矢量变成“0000......0010”。这样,仅当映射到事件5的所有父事件(事件0和事件1)上的位都为1(此时,全局完成矢量变成“0000......0011”)时,事件5才可以提交并执行。
该方案可以保证事件之间的并行处理能力,但存在的缺陷是:该调度方法要求全局完成矢量的长度与事件的总个数相同,因此随着事件数量的增加,全局完成矢量的长度也增加。例如,如果图3中n=1599,则全局完成矢量的长度将是6400位,即800字节。另外,由于事件可以在不同的处理器上执行,因此代表各个事件的位图的全局完成矢量必须在所有处理器上都相干。这意味着每次全局完成矢量改变时,都需要把新的值传送到所有处理器。因此,全局完成矢量中的位越多,在保证相干性方面中的开销就越多,所占用的存储空间也就越大,计算的延迟越大。
由此,需要一种能够充分利用事件的并行处理能力、以尽量少的存储空间保证全局完成矢量在所有处理器上的相干性、较少的延迟来触发具有依赖性的多个事件的执行的新的技术方案。
发明内容
为解决现有技术中存在的上述问题,本发明的一个目的是要提供一种能够充分利用多个事件之间的并行处理能力以及较少的延迟来触发具有约束关系的多个事件的执行的方法、设备和相应的计算机程序。
本发明的再一个目的是要提供一种能够以尽量少的存储空间保证全局完成矢量在所有处理器上的相干性、以较少的延迟触发具有约束关系的多个事件的执行的方法、设备和相应的计算机程序。
根据本发明的一个方面,提供了一种触发具有约束关系的多个事件的执行的方法,其中所述多个事件中具有约束关系的两个事件被分别称为父事件和子事件,并且,对于任意一个子事件,仅当该子事件的所有父事件都执行完毕后,才开始执行所述子事件;所述方法包括:为所述多个事件中的每个事件分配不同的质数;为所述多个事件共同设置一个全局完成矢量,其中所述全局完成矢量与为事件分配的质数有关;以及对于任意一个待执行的子事件,仅当当前的全局完成矢量可以被为该子事件的所有父事件分配的质数的连乘积整除时,则触发该子事件的执行。
根据本发明的另一个方面,还提供了一种触发具有约束关系的多个事件的执行的设备,其中所述多个事件中具有约束关系的两个事件被分别称为父事件和子事件,并且,对于任意一个子事件,仅当该子事件的所有父事件都执行完毕后,才开始执行所述子事件;所述设备包括:初始化模块,被配置用于为所述多个事件中的每个事件分配不同的质数,以及为所述多个事件共同设置一个全局完成矢量,其中所述全局完成矢量与为事件分配的质数有关;判断模块,与所述初始化模块相连并被配置用于:对于任意一个待执行的子事件,仅当当前的全局完成矢量可以被为该子事件的所有父事件分配的质数的连乘积整除时,则触发该子事件的执行;以及事件触发模块,响应判断模块输出的判断结果,触发事件的执行。
根据本发明的触发具有约束关系的多个事件的执行的方法和设备,能够充分利用多个事件之间的并行处理能力、较少的延迟以及以尽量少的存储空间来保证全局完成矢量在所有处理器上的相干性触发具有约束关系的多个事件的执行。
附图说明
以下通过结合附图阅读参考下述对说明性实施例的详细描述,将更好地理解本发明本身、优选实施方式、其它目的及其优点。在附图中:
图1示意性示出现有技术中表示多个事件之间的制约关系的有向无环图模型;
图2示意性示出现有技术中对基于有向无环图的多个事件采用基于层的事件调度方法的示意图;
图3示意性示出现有技术中对基于有向无环图的多个事件采用基于位图的事件调度方法的示意图;
图4示意性示出根据本发明的触发具有约束关系的多个事件的执行的方法的流程图;
图5是实现本发明的用于触发具有约束关系的多个事件的执行的方法的一种具体实施方式;以及
图6是根据本发明的触发具有约束关系的多个事件的执行的设备的示意结构图。
具体实施方式
以下将参照附图对本发明的优选实施方式进行详细说明。
根据本发明,对于具有约束关系的多个事件,本发明提供了一种基于质数的代数特性来触发多个事件的执行的方案。其中该多个事件中具有约束关系的两个事件被分别称为父事件和子事件。并且,对于任意一个子事件,仅当该子事件的所有父事件都执行完毕后,才开始执行该子事件。根据本发明的一种实施方式,采用有向无环图模型来描述事件之间的约束关系。本领域技术人员可以理解,对于任意一个事件,其可以具有一个以上的子事件,其也可以具有一个以上的父事件。而且,每个事件所具有的子事件的数目可以彼此不相同,每个事件所具有的父事件的数目也可以彼此不相同。
图4示意性示出根据本发明的触发具有约束关系的多个事件的执行的方法的流程图。
参照附图4,在步骤S401开始根据本发明的这种基于质数的代数特性来触发多个事件的执行的方法。
在步骤S403,为多个事件中的每个事件分配互不相同的质数,该质数例如被定义为P(a),其中a是事件的序号ID。
根据本发明,为每个事件分配不同的质数的方式可以有多种,只要保证为每个事件分配的质数彼此不同即可。根据本发明的一种优选实施方式,从顺序增加的质数序列中为每个事件选取和分配不同的质数。根据本发明的一种优选实施方式,使用例如按从“2、3、5、7、11、13...”的顺序增大的质数序列来依次为每个事件分配不同的质数,例如使用“2、3、5、7、11、13...”。根据本发明的另一种实施方式,也可以从上述质数序列中截取任意一段质数序列来依次为每个事件分配一个质数,例如使用“5、7、11、13...”。或者,根据本发明的再一种实施方式,也可以从上述质数序列中随机抽取不同的质数为每个事件分配一个质数,例如使用“2、11、7、...”等等。
根据本发明,优选地,除了为每个事件i分配质数P(i)外,还为每个事件定义如下两个属性设置“wait_for(i)”和“contribute(i)”,(0≤i≤n,i和n均为整数),如公式(1)、(2)所示:
contribute(i)=p(i)k (2)
其中,属性“wait_for(i)”与事件i的所有父事件有关。表示为事件i的所有父事件分配的质数的连乘积。并且,在初始执行事件时,属性“wait_for”的初始值被设置为“1”,表示还没有完成的事件。属性“contribute(i)”与事件i的所有子事件有关。其中k表示事件i的所有子事件的个数。P(i)k表示为事件i分配的质数p(i)的k次幂。
在步骤S405,为所述多个事件共同设置一个全局完成矢量“global_completion_vector””(简称“GCV”),其中该全局完成矢量与为事件分配的质数p(a)有关。优选地,每当有事件执行完成后,就更新当前的全局完成矢量,如以下详细描述的。
根据本发明的一种优选实施方式,“global_completion_vector”被定义为:
其中,对于事件i完成时的全局完成矢量,将该当前的全局完成矢量乘以为事件i分配的质数的k次幂,其中事件i表示所述多个事件中的任意一个事件,k表示该事件i的所有子事件的个数;以及当事件i本身仅是父事件时,将该乘积的结果直接作为更新后的当前全局完成矢量;当事件i本身既是父事件又是子事件时,将该乘积的结果除以为该事件i的所有父事件分配的质数的连乘积,将所得到的结果作为更新后的当前全局完成矢量。
特别地,在初始事件执行时全局完成矢量的初始值被设置为“1”。并且如上所述,在初始执行事件时,对于没有父事件的任意事件,将其属性“wait_for”的初始值也被设置为“1”,表示还没有完成的事件。在事件i执行以后,本发明考虑了事件i的所有子事件(属性“contribute(i))并考虑了事件i的所有父事件(属性“wait_for(i)”),来更新全局完成矢量,由此,确保了事件之间的约束关系。
优选地,根据本发明的一种实施方式,只要有事件执行完毕,就根据为该事件所设置的属性“wait_for””和“contribute”来更新“global_completion_vector”。根据本发明,“global_completion_vector”的更新是原子的,即当有多于一个事件同时完成时,他们对“global_completion_vector”的更新是串行执行的。并且,更新后的“global_completion_vector”会用于所有待执行事件。
根据本发明的优选实施方式,本领域技术人员可以理解,可以采用并行处理方式触发并执行所述多个事件。另外,对于所有待执行事件,可以并行地判断各个事件是否可被触发并执行。因此,在以下描述中,将针对每个待执行事件均要执行的步骤来进行描述。
在步骤S407,对于待执行事件判断其自身是否可被执行。具体地,所有待执行事件都会根据全局完成矢量GCV来判断自身是否可以被执行。根据本发明的优选实施方式,对于没有父事件的任意事件,可以触发该事件的执行。而对于所有待执行子事件,则根据全局完成矢量GCV来判断其自身是否可以被执行,优选地,对于任意一个待执行的子事件,使用下式(4)来进行判断:
wait_for(i)|global_completion_vector (4)
式(4)表示:对于任意一个待执行的子事件i,仅当当前的全局完成矢量可以被为该子事件i的所有父事件分配的质数的连乘积∏p(a)整除时,则触发该子事件的执行。
使用本发明的这种基于质数的事件触发条件,对于任意一个子事件i,由于只要满足事件i的所有父事件执行完毕,就开始执行该相应的子事件i。因此相对现有技术中的第一种方法,可以保证多个事件之间的并行处理能力。并且,由于使用为事件分配的不同质数作为具有约束关系的事件之间的制约关系,因此相对现有技术中的第二种方法,可以使用更少的存储空间来保证全局完成矢量在所有处理器上的相干性。
接下来,如果步骤S407的判断结果是可执行相应的事件,则过程前进到步骤S409,触发相应事件的提交和执行。否则,如果步骤S407的判断结果表明不可执行相应的事件,则继续进行监视和判断。
本领域技术人员应当理解,对于没有约束关系的事件是可以并行执行的。并且,本领域技术人员还应当理解,对于本身仅是父事件的那些事件来说,这些事件也是可以并行执行的。
如此,每当在步骤S409中触发的事件完成后,过程进入到步骤S4011。在步骤S4011,更新当前的GCV。其中,更新GCV的过程可以如上所述进行,并且还会在后面参考附图并结合具体实施例进行详细描述。此外,在步骤S4011中更新了的GCV还会被送到步骤S407,由此,所有待执行的事件都会根据更新后的GCV来重新判断自身是否可以被执行。
以下结合图5所示的一个具体实施方式来说明本发明的用于触发具有约束关系的多个事件的执行的方法。
为简明起见,并为了更清楚显示本发明与现有技术中的两种方法的对比,图5所显示的实施方式仍旧参考图1所示的有向无环图来进行描述。
参考图5,对于图5中示出的事件0、1、2、3......n*4、n*4+1、n*4+2、n*4+3,如前所述,上述事件之间具有约束关系。例如,事件0是事件4、5的父事件,而事件5本身是事件0、1的子事件,又是事件9、10的父事件。事件5必须要在事件0、1执行完以后才可以执行。
根据本发明,首先为每个事件分配不同的质数p(a)。如前所述,为每个事件分配不同的质数的方式有多种。在图5所示的例子中,例如将质数序列“2、3、5、7、11、13、17、19、......”分配给事件0、1、2、3、4、5、6、7......。
除了为每个事件i分配互不相同的质数P(a)外,还为每个事件定义上述两个属性设置“wait_for(i)和“contribute(i)”,其中,属性“wait_for(i)”与事件i的所有父事件有关。属性“contribute(i)”与事件i的所有子事件有关。在图5中,为事件0分配的质数是“2”。因为事件0还没有执行,其不存在父事件,因此其属性“wait_for(0)”为“1”。事件0有两个子事件(事件4和事件5),因此其属性“contribute(0)”(为事件0分配的质数为2,其具有两个子事件)为2*2=4。类似地,对于事件5,为其分配的质数是“13”。事件5有两个父事件(事件0和事件1),因此其属性“wait_for(0)”为“2*3”(为事件5的所有父事件(事件0和事件1)所分配的质数(“2”和“3”)的连乘积)。事件5有两个子事件(事件9和事件10),因此其属性“contribute(0)”(为事件5所分配的质数“13”的2次幂)为13*13=169。以下表格示意性示出依据本发明方法为事件分配质数的示例。
表一
其中p(n)是第n个质数
根据本发明,为所述多个事件共同设置一个全局完成矢量“global_completion_vector”,其中所述全局完成矢量与为事件分配的质数有关。如上所述,图5使用公式3来定义“global_completion_vector”:
其中,在初始执行事件时“global_completion_vector”初始值被设置为“1”,并且如上所述,在初始执行事件时,属性“wait_for”的初始值被设置为“1”,表示还没有完成的事件。在开始执行事件i后,考虑事件i的所有子事件(属性“contribute(i)”)并考虑事件i的所有父事件(属性“wait_for(i)”),来更新“global_completion_vector”,由此确保事件之间的约束关系。
以下结合图4、图5来具体说明在步骤S4011,每当有事件执行完成时,如何根据本发明来更新全局完成矢量。
假设:事件0被首先执行。
对于事件0,初始全局完成矢量为“1”,在事件0执行完毕后,全局完成矢量被更新为GCV=1*2*2/1=4。此后,所有待执行子事件都会以这个更新后的GCV来判断自身是否可以被执行。
根据本发明的一种实施方式,此时对于子事件4(为其分配的质数为11、属性“wait_for”为2,属性“contribute”为11*11),计算可知GCV/wait_for(4)=4/2,可以整除,因此,触发事件4的执行。在事件4执行完毕后,再次更新GCV,此时更新的全局完成矢量是:GCV=GCV(旧)*contribute(4)/wait_for(4)=4*11*11/2=2*11*11。此后,所有待执行子事件都会以该更新的全局完成矢量为当前全局完成矢量来再次判断自身是否可以被执行。
或者,根据本发明的另一种实施方式,假设在事件0执行完毕后,事件2被触发执行了。则在事件2执行完毕后,全局完成矢量被更新为:GCV=GCV(旧)*contribute(2)/wait_for(2)=4*5*5/1=4*5*5。此时,根据该更新后的全局完成矢量,判断事件4可以被执行,因此就触发事件4的执行。在事件4执行完毕后,再次更新全局完成矢量。
或者,根据本发明的再一种实施方式,如果在事件0执行完毕后,根据该更新后的全局完成矢量,判断事件4可以被执行,同时,事件2也在执行的情况下,只要事件4和事件2中的任意一个执行完成后,就根据执行完毕的事件更新全局完成矢量。
通过以上描述可知,本领域技术人员可以理解:事件的执行是可以并行的。并且,对于本身仅是父事件的那些事件来说,这些事件也是可以并行执行的。此外,本领域技术人员还可以理解:全局完成矢量的更新是原子的,即,不会受其它事件执行的影响。并且,更新后的全局完成矢量会用于所有待执行事件。
对于图5中示出的例子,假设n=1599,根据本发明的方法,对于全局完成矢量来说,128位就足够了。
证明如下:存在少于65536(216)的6542个质数。对于图5中的示例,对全局完成矢量有贡献的p(a)的最大数量是8。因此,对于6400个事务,16*8=128位足够了。这远远小于图3中所例示的基于位图的事件调度方法中所要求的6400位。
通过对图5具体实施例的描述,本领域技术人员可以理解本发明的有益效果在于:能够充分利用多个事件之间的并行处理能力、较少的延迟以及以尽量少的存储空间来保证全局完成矢量在所有处理器上的相干性触发具有约束关系的多个事件的执行。
图6是根据本发明的触发具有约束关系的多个事件的执行的设备600的示意结构图。如图所示,所述设备600包括:初始化模块601、判断模块603、事件触发模块605、全局完成矢量更新模块607、以及全局完成矢量存储模块609。其中:
初始化模块601,被配置用于为多个事件中的每个事件分配不同的质数P(a),其中a是事件的序号ID。如前所述,初始化模块601为每个事件分配不同的质数的方式可以有多种,只要保证为每个事件分配的质数彼此不同即可。
此外,根据本发明,优选地,初始化模块601除了为每个事件i分配质数P(a)外,还为每个事件定义如下两个属性设置“wait_for(i)”和“contribute(i)”,(如公式(1)、(2)所示)。其中,属性“wait_for(i)”与事件i的所有父事件有关。∏p(a)表示为事件i的所有父事件分配的质数的连乘积。并且,在初始执行事件时,属性“wait_for”的初始值被设置为“1”,表示还没有完成的事件。属性“contribute(i)”与事件i的所有子事件有关。其中k表示事件i的所有子事件的个数。P(a)k表示为事件i分配的质数p(a)的k次幂。
此外,初始化模块601还所述多个事件共同设置一个全局完成矢量“global_completion_vector”(GCV),该全局完成矢量与为事件分配的质数p(a)有关。在初始执行事件时“global_completion_vector”初始值被设置为“1”。并且,每当有事件执行完成后,就更新当前的全局完成矢量。更新GCV的方法如前所述,这里不做重复描述。
判断模块603,与所述初始化模块601相连并被配置用于对事件是否能够被触发执行进行监视和判断。具体地,判断模块603会根据全局完成矢量GCV来判断所有待执行事件自身是否可以被执行。其中,对于任意一个待执行的子事件i,仅当当前的全局完成矢量可以被为该子事件i的所有父事件分配的质数的连乘积∏p(a)整除时,则判断模块603判断为应触发该子事件的执行。根据本发明的优选实施方式,对于没有父事件的任意事件,判断模块603会判断出可以触发该事件的执行。而对于所有待执行子事件,判断模块603则会根据全局完成矢量GCV来判断待执行事件自身是否可以被执行。
事件触发模块605,响应判断模块603的判断结果,触发事件的执行。具体地,如果判断模块603的判断结果是可执行相应的事件,则事件触发模块605触发相应事件的提交和执行。否则,如果判断模块603的判断结果表明不可执行相应的事件,则继续进行监视和判断。本领域技术人员应当理解,对于没有约束关系的事件,事件触发模块605是可以并行执行这些事件的。并且,本领域技术人员还应当理解,对于没有父事件的任意事件,所述事件触发模块605被配置为触发该事件的执行。以及所述事件触发模块605采用并行处理方式触发并执行所述多个事件。
另外,事件触发模块605还监视事件的执行是否结束。在事件的执行结束时,该事件触发模块605将此消息通知给全局完成矢量更新模块607。
在事件触发模块605触发事件的执行后,响应所执行的事件,全局完成矢量更新模块607会更新GCV,并将更新后的GCV存储在全局完成矢量存储模块609。全局完成矢量存储模块609中所存储的全局完成矢量供判断模块603使用来进行监视和判断。
具体地,局完成矢量更新模块607被配置用于每当有事件执行完成后,就更新全局完成矢量存储模块609中当前存储的全局完成矢量。其中:所述全局完成矢量更新模块607,对于事件i完成时的全局完成矢量,将该当前的全局完成矢量乘以为事件i分配的质数的K次幂,其中事件i表示所述多个事件中的任意一个事件,k是该事件i的所有子事件的个数;以及当事件i本身仅是父事件时,将该乘积的结果直接作为更新后的当前全局完成矢量;当事件i本身既是父事件又是子事件时,将该乘积的结果除以为该事件i的所有父事件分配的质数的连乘积,将所得到的结果作为更新后的当前全局完成矢量。
特别地,在初始执行事件时“global_completion_vector”初始值被设置为“1”,属性“wait_for” 的初始值被设置为“1”。在开始执行子事件i后,根据本发明的设备考虑事件i的所有子事件(属性“contribute(i)”)并考虑事件i的所有父事件(属性“wait_for(i)”),来利用所述GCV更新模块607来更新保存在GCV存储模块609中的“global_completion_vector”,由此,确保了事件之间的约束关系。
通过以上的描述,本领域技术人员可以理解,使用本发明的这种基于质数的事件触发条件,对于任意一个事件i,由于只要满足事件i的所有父事件执行完毕,就开始执行相应的子事件,因此相对现有技术中的第一种方法,可以保证多个事件之间的并行处理能力。并且,由于使用为事件分配的不同质数作为具有约束关系的事件之间的制约关系,因此相对现有技术中的第二种方法,可以节省更多的存储空间。
通过以上的描述不能看出,本发明的这种触发具有约束关系的多个事件的执行的方法和设备可应用于多个领域,包括但不限于:计算机技术领域、事务处理领域、物流运输领域、办公业务处理等等....,
例如,随着多核处理器技术的不断更新和发展,事务存储(Transactional Memory,TM)技术被广泛应用于并行计算和事务处理中。通过将不同并行执行的线程事务化,用原子事务操作来代替锁机制来降低编程的复杂性。TM技术主要使用了线程级预测(TLS)技术,而TLS需要确保事务提交/开始次序,并且TM也采用有向无环图来抽象化待处理的事务。在这种情形下,使用本发明的方法或设备,可以在保证多个事件之间的并行处理能力的同时以尽量少的存储空间来实现触发具有约束关系的多个事件的执行。
应当理解,给出这种示意只是为了便于本领域技术人员理解本发明的原理,不应当将其理解为对本发明的任何限制。
本领域技术人员会认识到,可以以方法、系统或计算机程序产品的形式提供本发明的实施例。因此,本发明可采取全硬件实施例、全软件实施例,或者组合软件和硬件的实施例的形式。硬件和软件的典型的结合可以是带有计算机程序的通用计算机系统,当程序被加载并被执行时,控制计算机系统,从而可以执行上述的方法。
本发明可以嵌入在计算机程序产品中,它包括使此处描述的方法得以实施的所有特征。所述计算机程序产品被包含在一个或多个计算机可读存储介质(包括,但不限于,磁盘存储器、CD-ROM、光学存储器等)中,所述计算机可读存储介质具有包含于其中的计算机可读程序代码。
已参考根据本发明的方法、系统及计算机程序产品的流程图和/或方框图说明了本发明。流程图和/或方框图中的每个方框,以及流程图和/或方框图中的方框的组合显然可由计算机程序指令实现。这些计算机程序指令可被提供给通用计算机、专用计算机、嵌入式处理器或者其他可编程的数据处理设备的处理器,以产生一台机器,从而指令(所述指令通过计算机或者其他可编程数据处理设备的处理器)产生用于实现在流程图和/或方框图的一个或多个方框中规定的功能的装置。
这些计算机程序指令也可保存在一个或多个计算机的读存储器中,每个这种存储器能够指挥计算机或者其他可编程数据处理设备按照特定的方式发挥作用,从而保存在计算机可读存储器中的指令产生一种制造产品,所述制造产品包括实现在流程图和/或方框图的一个或多个方框中规定的功能的指令装置。
计算机程序指令也可被加载到一个或多个计算机或者其他可编程数据处理设备上,使得在所述计算机或者其他可编程数据处理设备上执行一系列的操作步骤,从而在每个这样的设备上产生计算机实现的过程,以致在该设备上执行的指令提供用于实现在流程图和/或方框图的一个或多个方框中规定的步骤。
以上结合本发明的优选实施方式对本发明的原理进行了说明,但这些说明只是示例性的,不应理解为对本发明的任何限制。本领域技术人员可以对本发明进行各种改变和变形,而不会背离由随附权利要求所限定的本发明的精神和范围。
Claims (16)
1.一种触发具有约束关系的多个事件的执行的方法,其中所述多个事件中具有约束关系的两个事件被分别称为父事件和子事件,并且,对于任意一个子事件,仅当该子事件的所有父事件都执行完毕后,才开始执行所述子事件,所述方法包括:
为所述多个事件中的每个事件分配不同的质数;
为所述多个事件共同设置一个全局完成矢量,其中所述全局完成矢量与为事件分配的质数有关;以及
对于任意一个待执行的子事件,仅当当前的全局完成矢量可以被为该子事件的所有父事件分配的质数的连乘积整除时,则触发该子事件的执行。
2.根据权利要求1所述的方法,其中,对于没有父事件的任意事件,触发该事件的执行。
3.根据权利要求1或2所述的方法,还包括:每当有事件执行完成后,就更新当前的全局完成矢量的步骤。
4.根据权利要求3所述的方法,其中:所述更新当前的全局完成矢量的步骤进一步包括:
对于事件i完成时的全局完成矢量,将该当前的全局完成矢量乘以为事件i分配的质数的k次幂,其中事件i表示所述多个事件中的任意一个事件,以及k表示该事件i的所有子事件的个数;以及
当事件i本身仅是父事件时,将该乘积的结果直接作为更新后的当前全局完成矢量;
当事件i本身既是父事件又是子事件时,将该乘积的结果除以为该事件i的所有父事件分配的质数的连乘积,将所得到的结果作为更新后的当前全局完成矢量。
5.根据权利要求1或2所述的方法,还包括:将所述全局完成矢量的初始值设置为1。
6.根据权利要求1或2所述的方法,其中,从顺序增加的质数序列中为每个事件选取和分配互不相同的质数。
7.根据权利要求1或2所述的方法,其中,使用有向无环图来描述事件之间的约束关系。
8.根据权利要求1或2所述的方法,其中,采用并行处理方式触发并执行所述多个事件。
9.一种触发具有约束关系的多个事件的执行的设备,其中所述多个事件中具有约束关系的两个事件被分别称为父事件和子事件,并且,对于任意一个子事件,仅当该子事件的所有父事件都执行完毕后,才开始执行所述子事件,所述设备包括:
用于为所述多个事件中的每个事件分配不同的质数的装置;
用于为所述多个事件共同设置一个全局完成矢量的装置,其中所述全局完成矢量与为事件分配的质数有关;以及
用于对于任意一个待执行的子事件,仅当当前的全局完成矢量可以被为该子事件的所有父事件分配的质数的连乘积整除时,则触发该子事件的执行的装置。
10.根据权利要求9所述的设备,其中还包括用于对于没有父事件的任意事件,触发该事件的执行的装置。
11.根据权利要求9或10所述的设备,还包括:用于每当有事件执行完成后,就更新当前的全局完成矢量的装置。
12.根据权利要求11所述的设备,其中:所述用于每当有事件执行完成后,就更新当前的全局完成矢量的装置进一步包括:
用于对于事件i完成时的全局完成矢量,将该当前的全局完成矢量乘以为事件i分配的质数的k次幂的部件,其中事件i表示所述多个事件中的任意一个事件,以及k表示该事件i的所有子事件的个数;以及
用于当事件i本身仅是父事件时,将该乘积的结果直接作为更新后的当前全局完成矢量的部件;
用于当事件i本身既是父事件又是子事件时,将该乘积的结果除以为该事件i的所有父事件分配的质数的连乘积,将所得到的结果作为更新后的当前全局完成矢量的部件。
13.根据权利要求9或10所述的设备,还包括:用于将所述全局完成矢量的初始值设置为1的装置。
14.根据权利要求9或10所述的设备,其中,该设备还包括用于从顺序增加的质数序列中为每个事件选取和分配互不相同的质数的装置。
15.根据权利要求9或10所述的设备,其中,该设备还包括用于使用有向无环图来描述事件之间的约束关系的装置。
16.根据权利要求9或10所述的设备,其中,该设备还包括用于采用并行处理方式触发并执行所述多个事件的装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200810109302 CN101593129B (zh) | 2008-05-28 | 2008-05-28 | 触发具有约束关系的多个事件的执行的方法和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200810109302 CN101593129B (zh) | 2008-05-28 | 2008-05-28 | 触发具有约束关系的多个事件的执行的方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101593129A CN101593129A (zh) | 2009-12-02 |
CN101593129B true CN101593129B (zh) | 2013-01-23 |
Family
ID=41407798
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200810109302 Expired - Fee Related CN101593129B (zh) | 2008-05-28 | 2008-05-28 | 触发具有约束关系的多个事件的执行的方法和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101593129B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104123178B (zh) * | 2014-07-25 | 2017-05-17 | 南京大学 | 基于图形处理器的并行化约束检测方法 |
CN108430084B (zh) * | 2018-05-09 | 2021-01-26 | 清华大学 | 一种基站切换方法及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6324495B1 (en) * | 1992-01-21 | 2001-11-27 | The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration | Synchronous parallel system for emulation and discrete event simulation |
CN101013384A (zh) * | 2007-02-08 | 2007-08-08 | 浙江大学 | 一种基于模型的实时系统的可调度性分析方法 |
-
2008
- 2008-05-28 CN CN 200810109302 patent/CN101593129B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6324495B1 (en) * | 1992-01-21 | 2001-11-27 | The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration | Synchronous parallel system for emulation and discrete event simulation |
CN101013384A (zh) * | 2007-02-08 | 2007-08-08 | 浙江大学 | 一种基于模型的实时系统的可调度性分析方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101593129A (zh) | 2009-12-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10083060B2 (en) | System for error checking of process definitions for batch processes | |
Qiao et al. | Litz: Elastic framework for {High-Performance} distributed machine learning | |
US8769537B1 (en) | System for partitioning batch processes | |
US9009734B2 (en) | Application level speculative processing | |
Murray | GPU acceleration of Runge-Kutta integrators | |
US8165981B2 (en) | Dynamic constraint satisfaction problem solver that recreates structure across sessions | |
DE102018126003A1 (de) | Kombinieren von Zuständen mehrerer Threads in einem Multithread-Prozessor | |
US20120117008A1 (en) | Parallel Processing Of Data Sets | |
US20150205633A1 (en) | Task management in single-threaded environments | |
Di Sanzo et al. | On the analytical modeling of concurrency control algorithms for software transactional memories: The case of commit-time-locking | |
US11144499B1 (en) | Method for logging update queries | |
DE102022129468A1 (de) | Implementierung von objektversionierung und -konsistenz bei skalierung | |
CN101593129B (zh) | 触发具有约束关系的多个事件的执行的方法和设备 | |
Verreydt et al. | Leveraging Kubernetes for adaptive and cost-efficient resource management | |
CN107209764B (zh) | 指定和应用数据的规则 | |
Li et al. | Easyscale: Accuracy-consistent elastic training for deep learning | |
Cardoen et al. | A PDEVS simulator supporting multiple synchronization protocols: implementation and performance analysis | |
US8661424B2 (en) | Auto-generation of concurrent code for multi-core applications | |
DE102022105958A1 (de) | Techniken zum ausgleichen von arbeitslasten beim parallelisieren von multiplizier-akkumulier-berechnungen | |
Boyer | Improving Resource Utilization in Heterogeneous CPU-GPU Systems | |
Gonz'lez-Domínguez et al. | Design and performance issues of cholesky and lu solvers using upcblas | |
Tripathi et al. | Beehive: A framework for graph data analytics on cloud computing platforms | |
WO2016097676A1 (en) | Atomic add with carry instruction | |
Nicolae et al. | Towards Low-Overhead Resilience for Data Parallel Deep Learning | |
Ding et al. | TURNIP: A" Nondeterministic" GPU Runtime with CPU RAM Offload |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130123 Termination date: 20150528 |
|
EXPY | Termination of patent right or utility model |