CN104123178A - 基于图形处理器的并行化约束检测方法 - Google Patents

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

Info

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
Application number
CN201410358441.9A
Other languages
English (en)
Other versions
CN104123178B (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.)
CVIC Software Engineering Co Ltd
Original Assignee
Nanjing 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 Nanjing University filed Critical Nanjing University
Priority to CN201410358441.9A priority Critical patent/CN104123178B/zh
Publication of CN104123178A publication Critical patent/CN104123178A/zh
Application granted granted Critical
Publication of CN104123178B publication Critical patent/CN104123178B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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,设从当前处理单元的父节点开始,到约束头结点的路径中的变量<υ12,...υ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。设从当前处理单元的父节点开始,到约束头结点的路径中的变量<υ12,...υ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;
M cur = id size % I cur = 3 1 % 2 = 1 ,
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,设从当前处理单元的父节点开始,到约束头结点的路径中的变量<υ12,...υ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中。
CN201410358441.9A 2014-07-25 2014-07-25 基于图形处理器的并行化约束检测方法 Active CN104123178B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 苏州祥益网络科技有限公司 基于地理时空约束的警务云图像识别车辆管控***

Patent Citations (4)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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