当前位置: 首页 > 专利查询>南京大学专利>正文

基于图形处理器的并行化约束检测方法技术

技术编号:10584683 阅读:108 留言:0更新日期:2014-10-29 14:20
本发明专利技术是一种基于图形处理器的并行化地检测约束的方法,步骤:1)以量词为分割点,将一条约束分割成若干处理单元,通过调度这些处理单元,消除检测过程中的递归并最大化并行度;2)根据当前的处理单元和信息集合,产生相应数量的GPU线程,每个GPU线程根据自身的线程号计算其对应的变量赋值,并处理在此赋值下的处理单元。一个被赋值的处理单元称为一个并行计算单元,并行计算单元是能在GPU中并行处理的最小单元;3)索引-结果池的二层次存储策略,所有并行计算单元的节点产生的非定长结果存储在结果池中,而在索引中存储节点产生的结果在结果池中的起始地址和长度,该策略“串行分配空间,并行写结果”,能达到较高的写速度。

【技术实现步骤摘要】
基于图形处理器的并行化约束检测方法
本专利技术涉及一种基于图形处理器的并行化约束检测方法。
技术介绍
约束检测是一种常用的验证信息有效性的方法。一条约束反映了一条信息或者多条信息之间应该满足的关系。一般而言,一条约束由若干种节点联接而成:“全称量词”节点,“存在量词”节点,“与”节点,“或”节点,“蕴含”节点,“非”节点和“函数”节点。每种节点描述了一个特定的关系。检测约束即:将获取的信息与预定义的约束进行核对,违反了约束的一条信息或者一组信息是无效的。约束检测通常是结合其他应用中的。当前约束检测的方式主要有两类:增量式检测和并行检测。但是,这两种方式都完全依赖于中央处理器(CPU),因此会消耗大量本来应该用于其他应用的计算资源。本方法的计算不再依赖于CPU,相反,它主要依赖图形处理器(GPU)进行计算。因此,该方法在提高了约束检测的速度的同时,也保证了有充分的计算资源供其他应用使用。
技术实现思路
针对现有技术中存在的不足,对当前约束检测耗时过大,占用资源过多的缺点,本专利技术提出了一种基于GPU的约束检测方法。该方法的核心在于三个部分:约束预处理;并行策略;存储策略。本专利技术的技术方案为:一种基于图形处理器的并行化约束检测方法,它包括:约束预处理,基于量词的约束分割方法;具体为:步骤1、指定约束头节点为当前节点,从当前节点开始分割;步骤2、若当前节点为“全称量词”或者“存在量词”节点,则将该舦灝分割成两个子部分,一个子部分以该量词节点结束,另一部分从该量词节点的子节点开始,指定该量词节点的子节点为当前节点继续分割;步骤3、若当前节点为“与”节点,“或”节点或者“蕴含”节点,则指定该节点的左子节点为当前节点继续分割,处理完左子节点后,指定该节点的右子节点为当前节点继续分割;步骤4、若当前节点为“非”节点,则指定该节点的子节点为当前节点继续分割;步骤5、若当前节点为“函数”节点,则停止当前分支的递归;经过分割后,一条约束被转变为若干处理单元,各个处理单元不相交,且所有处理单元共同构成该约束。并行策略,基于处理单元的并行处理方法;具体为:步骤1、计算所需线程数N,设从当前处理单元的父节点开始,到约束头结点的路径中的变量<υ1,υ2,...υn>对应的上下文信息集合为<Si,S2,...Sn>,各个上下文信息集合中的信息条数为<I1,I2,...In>,则N=I1×I2×...×In;若当前处理单元到头节点不包含任何变量,或者当前处理单元包含头节点,则N=1;步骤2、生成N个GPU线程,线程id从0至N-1(该id由GPU自动分配);各个线程根据自身id独立计算其对应的赋值,设整数值Mi=j表示变量υi取其对应集合Si中第j条信息(0≤Mi<Ii);则Mi的取值按以下步骤得出:i:设size=1,cur=n;ii:若cur≥1,转子iii,否则结束;iii:size=size*Icur;cur=cur-1,转子ii。步骤3、各个线程将所计算出的赋值映射到处理单元中,产生各个线程需要处理的并行计算单元;各个线程独立处理各个并行计算单元;所述的所有GPU线程并发执行,且互相之间不存在依赖关系。存储策略。索引-结果池的二层次存储方法,主要包含三个部分:1)索引数组,包含两个域:结果的起始位置pos和长度len;2)结果数组;3)结果数组位置指针Pointer(简称位置指针),它只能被互斥地写。设n个线程产生的结果长度分别为l1,l2...li...ln,所述索引-结果池的二层次存储方法具体为:步骤1、各个线程根据其赋值计算各自当前节点在索引数组中的存储位置;步骤2、各个线程互斥的获取结果数组位置指针,设第i个线程获取到该结果数组位置指针,则它将该节点的起始位置pos设为Pointer当前值,之后,步骤3、更新该结果数组位置指针的值:Pointernew=Pointerold+li,其中,Pointerold为位置指针初始值,li为第i个线程产生的结果长度;步骤4、更新后释放该结果数组位置指针供其他线程使用,并将结果填入结果数组,结果长度填入该节点的结果长度len中。本专利技术的有益效果:本专利技术能高效地利用GPU进行约束检测:约束分割消除了约束处理过程中的递归,使之适应于GPU的工作方式;基于处理单元的并行策略,使得各个线程能够独立地定位和处理数据,提升了该方法的并发性;并发存储策略显著提升了存储效率。该专利技术在提升了约束检测的效率的同时,大幅降低对CPU资源的依赖,从而使得CPU资源能够更多的服务于其他应用。此外,由于GPU和CPU可以同时执行,不存在相互等待的情况,因此,该方法也能借此特性获得额外的效率上的增益。附图说明图1本专利技术的约束处理用例图。图2本专利技术计算过程中的上下文映射和并行策略。图3本专利技术二层次的存储策略。具体实施方式以下结合附图和具体实施例对本专利技术作进一步详细说明。本实施例的基于GPU的约束检测方法。该方法的核心在于三个部分:约束预处理;并行策略;存储策略。具体的说:1.约束预处理。本专利技术提出了基于量词的约束分割方法,包含以下步骤:a)指定约束头节点为当前节点,从当前节点开始分割;b)若当前节点为“全称量词”或者“存在量词”节点,则将该部分分割成两个子部分,一个子部分以该量词节点结束,另一部分从该量词节点的子节点开始,指定该量词节点的子节点为当前节点继续分割;c)若当前节点为“与”节点,“或”节点或者“蕴含”节点,则指定该节点的左子节点为当前节点继续分割,处理完左子节点后,指定该节点的右子节点为当前节点继续分割;d)若当前节点为“非”节点,则指定该节点的子节点为当前节点继续分割;e)若当前节点为“函数”节点,则停止当前分支的递归。经过分割后,一条约束被转变为若干处理单元,各个处理单元不相交,且所有处理单元共同构成该约束。图1展示了一条约束,它的含义如下:对于在城市A中的任何一辆出租车,它在一段时间内行驶的距离只能在一个合理的范围内。对于这条约束,它按照上述算法将被分割成三部分,如图中虚线所示。2.并行策略。基于处理单元的并行处理方法,包含以下步骤:a)计算所需线程数N。设从当前处理单元的父节点开始,到约束头结点的路径中的变量<υ1,υ2,...υn>对应的上下文信息集合为<S1,S2,...Sn>,各个上下文信息集合中的信息条数为<I1,I2,...In>,则N=I1×I2×...×In;若当前处理单元到头节点不包含任何变量,或者当前处理单元包含头节点,则N=1;b)生成N个GPU线程,线程id从0至N-1(该id由GPU自动分配);各个线程根据自身id独立计算其对应的赋值。设整数值Mi=j表示变量υi取其对应集合Si中第j条信息(0≤Mi<li),则Mi的取值按以下步骤得出:i.令size=1,cur=n;ii.若cur≥1,转iii,否则结束;iii.size=size*Icur;cur=cur-1,转iic)各个线程将所计算出的赋值映射到处理单元中,产生各个线程需要处理的并行计算单元;各个线程独立处理各个并行计算单元。所述的所有GPU线程并发执行,且互相之间不存在依赖关系。以图1所示约束为例。设当前接收到两条A城本文档来自技高网...
基于图形处理器的并行化约束检测方法

【技术保护点】
一种基于图形处理器的并行化约束检测方法,其特征在于,它包括:基于量词的约束分割步骤;基于处理单元的并行处理步骤;存储策略步骤。

【技术特征摘要】
1.一种基于图形处理器的并行化约束检测方法,其特征在于,它包括:基于量词的约束分割步骤;基于处理单元的并行处理步骤;存储策略步骤;所述基于量词的约束分割步骤具体为:步骤1、指定约束头节点为当前节点,从当前节点开始分割;步骤2、若当前节点为“全称量词”或者“存在量词”节点,则将该节点分割成两个子部分,一个子部分以该量词节点结束,另一部分从该量词节点的子节点开始,指定该量词节点的子节点为当前节点继续分割;步骤3、若当前节点为“与”节点,“或”节点或者“蕴含”节点,则指定该节点的左子节点为当前节点继续分割,处理完左子节点后,指定该节点的右子节点为当前节点继续分割;步骤4、若当前节点为“非”节点,则指定该节点的子节点为当前节点继续分割;步骤5、若当前节点为“函数”节点,则停止当前分支的递归;经过分割后,一条约束被转变为若干处理单元,各个处理单元不相交,且所有处理单元共同构成该约束。2.根据权利要求1所述的并行化约束检测方法,其特征在于:所述基于处理单元的并行处理步骤,具体为:步骤1、计算所需线程数N,设从当前处理单元的父节点开始,到约束头结点的路径中的变量<v1,v2,…vn>对应的上下文信息集合为<S1,S2,…Sn>,各个上下文信息集合中的信息条数为<I1,I2,…In>,则N=I1×I2×…×In;若当前处理单元到头节点不包含任何变量,或者当前处理单元包含头节点,则N=1;步骤2、生成N个GPU线程,线程id从0至N-1(该id由GPU自动分配);各个线程根据自身id独立计算其对应的赋值,设...

【专利技术属性】
技术研发人员:许畅马晓星吕建眭骏
申请(专利权)人:南京大学
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1