CN104123178A - 基于图形处理器的并行化约束检测方法 - Google Patents
基于图形处理器的并行化约束检测方法 Download PDFInfo
- Publication number
- CN104123178A CN104123178A CN201410358441.9A CN201410358441A CN104123178A CN 104123178 A CN104123178 A CN 104123178A CN 201410358441 A CN201410358441 A CN 201410358441A CN 104123178 A CN104123178 A CN 104123178A
- Authority
- CN
- China
- Prior art keywords
- node
- thread
- result
- pointer
- constraint
- 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.)
- Granted
Links
- 238000001514 detection method Methods 0.000 title abstract description 5
- 238000000034 method Methods 0.000 claims abstract description 40
- 238000012545 processing Methods 0.000 claims abstract description 36
- 230000006870 function Effects 0.000 claims description 5
- 238000013507 mapping Methods 0.000 claims description 4
- 238000011156 evaluation Methods 0.000 claims description 3
- 230000007717 exclusion Effects 0.000 claims description 3
- 230000011218 segmentation Effects 0.000 claims 2
- 238000013475 authorization Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
Landscapes
- Multi Processors (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明是一种基于图形处理器的并行化地检测约束的方法,步骤:1)以量词为分割点,将一条约束分割成若干处理单元,通过调度这些处理单元,消除检测过程中的递归并最大化并行度;2)根据当前的处理单元和信息集合,产生相应数量的GPU线程,每个GPU线程根据自身的线程号计算其对应的变量赋值,并处理在此赋值下的处理单元。一个被赋值的处理单元称为一个并行计算单元,并行计算单元是能在GPU中并行处理的最小单元;3)索引-结果池的二层次存储策略,所有并行计算单元的节点产生的非定长结果存储在结果池中,而在索引中存储节点产生的结果在结果池中的起始地址和长度,该策略“串行分配空间,并行写结果”,能达到较高的写速度。
Description
技术领域
本发明涉及一种基于图形处理器的并行化约束检测方法。
背景技术
约束检测是一种常用的验证信息有效性的方法。一条约束反映了一条信息或者多条信息之间应该满足的关系。一般而言,一条约束由若干种节点联接而成:“全称量词”节点,“存在量词”节点,“与”节点,“或”节点,“蕴含”节点,“非”节点和“函数”节点。每种节点描述了一个特定的关系。检测约束即:将获取的信息与预定义的约束进行核对,违反了约束的一条信息或者一组信息是无效的。约束检测通常是结合其他应用中的。
当前约束检测的方式主要有两类:增量式检测和并行检测。但是,这两种方式都完全依赖于中央处理器(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,转ii
c)各个线程将所计算出的赋值映射到处理单元中,产生各个线程需要处理的并行计算单元;各个线程独立处理各个并行计算单元。
所述的所有GPU线程并发执行,且互相之间不存在依赖关系。以图1所示约束为例。设当前接收到两条A城市中的出租车信息:出租车1和出租车2。则在计算处理单元1时,根据上述算法步骤a),该处理单元到根节点有2个变量(a和b),每个变量可以取两个值(出租车1和出租车2),因此N=4;根据步骤b)生成了4个线程(id分别为0,1,2,3)。各个线程独立计算其变量的取值。以计算id为3的线程的变量取值为例,两个变量对应的赋值计算过程为:
size=1,cur=2;
size=1×Icur=1×2=2,cur=cur-1=1;
由于cur≥1,继续该过程,可以得到M1=1;最终得出M1=1,M2=1,注意到信息是从0开始编号,因此M1=1,M2=1意味着第一个变量和第二个变量都取各自信息集合中第二条信息,即(a=出租车2,b=出租车2)。将取值映射到处理单元中,可以得到并行计算单元。图2的并行计算单元组1展示了生成的4个并行计算单元。
3.存储策略。索引-结果池的二层次存储方法,主要包含三个部分:1)索引数组,包含两个域:结果的起始位置pos和长度len;2)结果数组;3)结果数组位置指针Pointer(简称位置指针),它只能被互斥地写。设n个线程产生的结果长度分别为l1,l2...li...ln,则该方法存储过程如下:
a)各个线程根据其赋值计算各自当前节点在索引数组中的存储位置;
b)各个线程互斥的获取位置指针,设第i个线程获取到该位置指针,则它将该节点的起始位置pos设为Pointer当前值,之后,
c)更新该位置指针的值:Pointernew=Pointerold+li,其中,Pointerold为位置指针初始值,li为第i个线程产生的结果长度。
d)更新后释放该位置指针供其他线程使用,并将结果填入结果数组,结果长度填入该节点的结果长度len中。
图3中展示了该存储策略:设有三个线程同时在处理三个节点,它们都需要将结果写入存储器。设这三个节点的结果分别需要占用1,3,2个存储空间,则它们将同时申请访问位置指针(当前值为0)。假设线程t1获取到该位置指针访问权,则它设置自己的结果的起始位置为Pointer当前值(即0),并更新Pointer的值Pointernew=Pointerold+1=1,之后释放该指针供线程t2和t3访问;t1更新位置指针值之后,将结果填入描述信息数组中,并更新索引数组中自己的长度(即1)。索引数组中第一个元素记录了t1产生的结果的存储起始位置(0)及长度(1)。设t2先于t3获取Pointer访问权,由于t1的更新,Pointer的当前值为1,因此,t2的结果的起始位置为1,更新Pointer的值Pointernew=Pointerold+3=4,释放Pointer,结果填入描述信息数组中,并更新索引数组中自己的长度(即3)。这种策略串行的分配空间,但是多个线程同时写结果是可以并行并且无冲突的完成。
上述1,2阐述了使用GPU并行检测约束的方法,3阐述了适用于GPU的高效的并行写结果的方法。
以上实施例只是对于本发明的部分功能进行描述,但实施例和附图并不是用来限定本发明的。在不脱离本发明之精神和范围内,所做的任何等效变化或润饰,同样属于本发明之保护范围。因此本发明的保护范围应当以本申请的权利要求所界定的内容为准。
Claims (5)
1.一种基于图形处理器的并行化约束检测方法,其特征在于,它包括:
基于量词的约束分割步骤;
基于处理单元的并行处理步骤;
存储策略步骤。
2.根据权利要求1所述的并行化约束检测方法,其特征在于:所述基于量词的约束分割步骤具体为:
步骤1、指定约束头节点为当前节点,从当前节点开始分割;
步骤2、若当前节点为“全称量词”或者“存在量词”节点,则将该部分分割成两个子部分,一个子部分以该量词节点结束,另一部分从该量词节点的子节点开始,指定该量词节点的子节点为当前节点继续分割;
步骤3、若当前节点为“与”节点,“或”节点或者“蕴含”节点,则指定该节点的左子节点为当前节点继续分割,处理完左子节点后,指定该节点的右子节点为当前节点继续分割;
步骤4、若当前节点为“非”节点,则指定该节点的子节点为当前节点继续分割;
步骤5、若当前节点为“函数”节点,则停止当前分支的递归;
经过分割后,一条约束被转变为若干处理单元,各个处理单元不相交,且所有处理单元共同构成该约束。
3.根据权利要求1所述的并行化约束检测方法,其特征在于:所述基于处理单元的并行处理步骤,具体为:
步骤1、计算所需线程数N,设从当前处理单元的父节点开始,到约束头结点的路径中的变量<υ1,υ2,...υn>对应的上下文信息集合为<S1,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);
步骤3、各个线程将所计算出的赋值映射到处理单元中,产生各个线程需要处理的并行计算单元;各个线程独立处理各个并行计算单元;
所述的所有GPU线程并发执行,且互相之间不存在依赖关系。
4.根据权利要求3所述的并行化约束检测方法,其特征在于:步骤2中Mi的取值按以下步骤得出:
i.子步骤i:设size=1,cur=n;
ii.子步骤ii:若cur≥1,转子步骤iii,否则结束;
子步骤iii:size=size*Icur;cur=cur-1,转子步骤ii。
5.根据权利要求1所述的并行化约束检测方法,其特征在于:所述存储策略步骤具体为:索引-结果池的二层次存储方法,包含三个部分:1)索引数组,包含两个域:结果的起始位置pos和长度len;2)结果数组;3)结果数组位置指针Pointer(简称位置指针),它只能被互斥地写;设n个线程产生的结果长度分别为l1,l2...li...in,所述索引-结果池的二层次存储方法具体为:
步骤1、各个线程根据其赋值计算各自当前节点在索引数组中的存储位置;
步骤2、各个线程互斥的获取结果数组位置指针,设第i个线程获取到该结果数组位置指针,则它将该节点的起始位置pos设为Pointer当前值,之后,
步骤3、更新该结果数组位置指针的值:Pointernew=Pointerold+li,其中,Pointerold为位置指针初始值,li为第i个线程产生的结果长度;
步骤4、更新后释放该结果数组位置指针供其他线程使用,并将结果填入结果数组,结果长度填入该节点的结果长度len中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410358441.9A CN104123178B (zh) | 2014-07-25 | 2014-07-25 | 基于图形处理器的并行化约束检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410358441.9A CN104123178B (zh) | 2014-07-25 | 2014-07-25 | 基于图形处理器的并行化约束检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104123178A true CN104123178A (zh) | 2014-10-29 |
CN104123178B CN104123178B (zh) | 2017-05-17 |
Family
ID=51768602
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410358441.9A Active CN104123178B (zh) | 2014-07-25 | 2014-07-25 | 基于图形处理器的并行化约束检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104123178B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108604216A (zh) * | 2015-10-05 | 2018-09-28 | 考科斯汽车有限公司 | 用于解空间分区的并行处理 |
US11416787B2 (en) | 2015-05-15 | 2022-08-16 | Cox Automotive, Inc. | Parallel processing for solution space partitions |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7120903B2 (en) * | 2001-09-26 | 2006-10-10 | Nec Corporation | Data processing apparatus and method for generating the data of an object program for a parallel operation apparatus |
CN101593129A (zh) * | 2008-05-28 | 2009-12-02 | 国际商业机器公司 | 触发具有约束关系的多个事件的执行的方法和设备 |
CN103201764A (zh) * | 2010-11-12 | 2013-07-10 | 高通股份有限公司 | 使用多个处理器的并行图像处理 |
CN103294775A (zh) * | 2013-05-10 | 2013-09-11 | 苏州祥益网络科技有限公司 | 基于地理时空约束的警务云图像识别车辆管控*** |
-
2014
- 2014-07-25 CN CN201410358441.9A patent/CN104123178B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7120903B2 (en) * | 2001-09-26 | 2006-10-10 | Nec Corporation | Data processing apparatus and method for generating the data of an object program for a parallel operation apparatus |
CN101593129A (zh) * | 2008-05-28 | 2009-12-02 | 国际商业机器公司 | 触发具有约束关系的多个事件的执行的方法和设备 |
CN103201764A (zh) * | 2010-11-12 | 2013-07-10 | 高通股份有限公司 | 使用多个处理器的并行图像处理 |
CN103294775A (zh) * | 2013-05-10 | 2013-09-11 | 苏州祥益网络科技有限公司 | 基于地理时空约束的警务云图像识别车辆管控*** |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11416787B2 (en) | 2015-05-15 | 2022-08-16 | Cox Automotive, Inc. | Parallel processing for solution space partitions |
CN108604216A (zh) * | 2015-10-05 | 2018-09-28 | 考科斯汽车有限公司 | 用于解空间分区的并行处理 |
Also Published As
Publication number | Publication date |
---|---|
CN104123178B (zh) | 2017-05-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108829610B (zh) | 一种神经网络前向计算过程中的内存管理方法及设备 | |
JP5425541B2 (ja) | マルチプロセッサ・システム上でデータ・セットを区分化およびソートするための方法および装置 | |
CN106649346B (zh) | 数据重复性校验方法及装置 | |
US20150052331A1 (en) | Efficient Directed Acyclic Graph Pattern Matching To Enable Code Partitioning and Execution On Heterogeneous Processor Cores | |
Zhao et al. | A partition-based approach to structure similarity search | |
SG175109A1 (en) | Performing concurrent rehashing of a hash table for multithreaded applications | |
Babaie-Kafaki et al. | Two effective hybrid conjugate gradient algorithms based on modified BFGS updates | |
Picciau et al. | Balancing locality and concurrency: Solving sparse triangular systems on GPUs | |
Adámek et al. | Single-pulse detection algorithms for real-time fast radio burst searches using gpus | |
CN104035747A (zh) | 用于并行计算的方法和装置 | |
CN104123178A (zh) | 基于图形处理器的并行化约束检测方法 | |
JP2010532531A5 (zh) | ||
Huang et al. | Near-popular matchings in the roommates problem | |
CN105095515A (zh) | 支持快速查询Map-Reduce输出结果的分桶方法、装置及设备 | |
Demaine et al. | Scheduling to minimize gaps and power consumption | |
US8453135B2 (en) | Computation reuse for loops with irregular accesses | |
CN113031930B (zh) | 一种控制流平坦化的源代码混淆生成方法及装置 | |
Aparicio et al. | A scalable parallel approach for subgraph census computation | |
Tretter et al. | Minimising access conflicts on shared multi-bank memory | |
CN106201655B (zh) | 虚拟机分配方法和虚拟机分配*** | |
US8805891B2 (en) | B-tree ordinal approximation | |
CN104424123B (zh) | 一种无锁数据缓冲区及其使用方法 | |
Liu et al. | Modified subspace Barzilai-Borwein gradient method for non-negative matrix factorization | |
Schwiegelshohn et al. | The power of migration for online slack scheduling | |
CN104850646A (zh) | 一种针对单个不确定图的频繁子图挖掘方法 |
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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220126 Address after: 250014 No. 41-1 Qianfo Shandong Road, Jinan City, Shandong Province Patentee after: SHANDONG CVIC SOFTWARE ENGINEERING Co.,Ltd. Address before: 210093 No. 22, Hankou Road, Gulou District, Jiangsu, Nanjing Patentee before: NANJING University |