CN108984283A - 一种自适应的动态流水线并行方法 - Google Patents

一种自适应的动态流水线并行方法 Download PDF

Info

Publication number
CN108984283A
CN108984283A CN201810659163.9A CN201810659163A CN108984283A CN 108984283 A CN108984283 A CN 108984283A CN 201810659163 A CN201810659163 A CN 201810659163A CN 108984283 A CN108984283 A CN 108984283A
Authority
CN
China
Prior art keywords
stage
thread
sem
algorithm
buffer
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.)
Pending
Application number
CN201810659163.9A
Other languages
English (en)
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.)
Fudan University
Original Assignee
Fudan 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 Fudan University filed Critical Fudan University
Priority to CN201810659163.9A priority Critical patent/CN108984283A/zh
Publication of CN108984283A publication Critical patent/CN108984283A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/483Multiproc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/485Resource constraint
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/486Scheduler internals

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Image Processing (AREA)

Abstract

本发明属于计算机技术领域,具体涉及一种自适应的动态流水线并行方法。将一个应用划分为多个功能阶段,各个阶段以相互衔接的并行方式工作,并通过各个阶段间的共享缓冲区交互中间结果;其中,各流水线阶段的线程数根据各个阶段现有的工作负载情况进行动态地调整:如果某一个流水线阶段的工作负载比较重,此阶段的线程分配数量上升,保证处于该阶段的负载能被及时处理;反之,如果某一阶段的工作负载较低,此阶段分配的线程数就下调,避免负载不足导致的线程空闲;为适应不同类型输入,对流水线进行划分:根据负载任务分为细粒度和粗粒度。本发明方法能克服算法在并行化过程中存在的各种固有限制,并利用底层多核硬件的计算资源,提高计算效率。

Description

一种自适应的动态流水线并行方法
技术领域
本发明属于计算机技术领域,具体涉及一种自适应的动态流水线并行方法。
背景技术
在大数据时代,计算机***处理的数据量越来越大,实时性要求也越来越高。随着多核乃至众核的普及,多核处理器已经成为各种云平台或数据中心的主流硬件。因此,越来越多的研究者试图通过并行化算法,利用多核平台提供的计算资源加速算法的处理速度,实现对数据的实时处理。这些不同的算法,处理的对象和计算的过程虽然有很多不同,但并行化的过程中存在一些相似的模式。多媒体服务是大数据时代的典型应用,而多媒体检索应用算法是多媒体相关数据服务的基础,有着广泛的应用前景。我们以多媒体检索应用算法的并行化为例,阐述算法并行化过程中的典型问题。
多媒体检索应用需要对大量图片进行分析和处理,因此已有多媒体算法都面临十分严重的实时处理的性能挑战。尽管多媒体检索算法已有很多并行加速方面的研究,但这些设计并没有考虑多媒体检索算法在并行设计时存在的不确定的时间分配问题以及各个方面负载不均衡等问题,并行设计并没有充分利用多核计算资源,也没能取得较好的可扩展并行加速效果。
负载均衡对并行设计的加速效果和可扩展性有至关重要的影响,是设计并行程序需要解决的最重要的问题之一。多媒体检索应用面临的主要问题包括:
负载不均衡挑战:图像级别不均衡是负载不均衡的主要原因之一。导致这种不均衡的主要原因是因为图像的内在特性千差万别,导致不同图像中存在的特征点数目存在较大的差异。一些复杂图像可能拥有上千的特征点,而另一些相对简单的图像可能只包含几十个特征点。同时,即使图像中包含有相同数目的特征点,因为不同特征点所处的层级不同,不同特征点处理过程中所需的时间也存在差异,这种不均衡依然存在。因此,不论采用图像级别并行还是特征点级别并行来加速多媒体检索算法,都存在负载不均衡的问题,从而很难获得理想的加速效果和可扩展性。
规模级别和块级别并行的负载不均衡:规模级别的并行限制同样是由各自层面的负载不均衡导致的。此外,为利用规模层级的并行性或块级别的并行性,在并行设计的过程中不得不引入额外的同步,以保证结果的正确性。以SIFT算法的块级别并行为例,高斯金字塔(GaussianPyramid)的每一层级建立后,就需要一次同步,这是因为每一个高斯层级的计算结果都会用到其他块的计算结果。因此,频繁的同步是影响性能的另一个重要原因。
流水线并行的限制:由于多媒体检索算法的基本流程是将特征点均等地向下传递,因此流水线并行在针对多媒体检索算法并行的过程中是一种可行的考虑。但是,不同阶段间不确定的运行时间分布导致流水线并行设计过程中计算资源分配十分困难。此外,在把应用划分成不同的功能单元时,由于涉及应用的逻辑和不同功能单元间的数据交互,很难将流水线划分为太多阶段。当物理硬件节点可用的硬件核心数上升时,流水线并行设计也很难取得可扩展的性能。
根据多媒体检索算法的并行化过程,本发明提出了一种自适应的动态流水线并行方法。
发明内容
本发明的目的在于克服一类算法在并行化过程中存在的各种固有限制,提供一种能够充分利用底层多核硬件计算资源的自适应的动态流水线并行方法。
在流水线并行机制中,一个完整的应用被划分为多个功能阶段,各个阶段以相互衔接的并行方式工作,并通过各个阶段间的共享缓冲区交互中间结果。输入数据流经各个阶段并逐个被处理。在具体流水线并行化多阶段的设计过程中,为了实现并行高效率,主要存在两个问题:
第一个问题是,如何得到均衡的工作负载,从而避免各个阶段之间不必要的等待。一般地说,流水线各个阶段是按照各个阶段的执行时间划分的。然而,由于算法各个阶段对于不同输入存在执行时间不确定的问题,静态的流水线设计会造成流水线不同阶段之间的等待,从而导致较低的性能。
另一个问题是,相邻的流水线阶段之间如何高效地相互传递数据。由于输入数据及生成的中间结果依次被并行后的不同的功能阶段并行处理,各个并行功能阶段间需要频繁的交互数据,因此,数据交互高效性这个问题同样会严重地限制流水线并行的执行效率。
为有效解决流水线并行中各个阶段间执行时间不确定的问题,本发明提出自适应的流水线并行方法。一般地,算法被划分为多个并行执行的阶段,分别是阶段1、阶段2、…、阶段n;相邻的阶段之间,阶段k-1和阶段k之间,设置了一个缓冲区Buffer k用来通信。缓冲区Buffer k是阶段k-1的输出缓冲区,用来存放输出结果;同时,作为阶段k的输入缓冲区。
本发明提出自适应的流水线并行方法,各流水线阶段的线程数不是静态分配,而是根据各个阶段现有的工作负载情况进行动态地调整。如果某一个流水线阶段的工作负载比较重,为了达到最优的处理效果,此阶段的线程分配数量就会上升,从而保证处于该阶段的负载能被及时的处理。反之,如果某一阶段的工作负载较低,此阶段分配的线程数就应该下调,从而避免负载不足导致的线程空闲,保证计算资源的利用率。
两阶段算法的自适应的流水线并行基本架构如图1所示,当阶段1检测到输出缓冲区满,则分配的工作线程数会减少;对应地,如果阶段2检测到输入缓冲区空,则相应的减少本阶段的工作线程。
为了适应不同类型输入,本发明对流水线进行了划分,根据负载任务分为细粒度和粗粒度:
(1)细粒度的划分:把整个算法划分成多个细粒度的功能单元,并利用这些划分过的细粒度功能单元进行并行处理。细粒度划分把具体算法划分成多个流水线功能阶段,需要对算法模块进行深入细致分析。如果负载比较复杂,细分的流水线可以获得更好的性能。但如果流水线划分的阶段数量过多、粒度过细,在动态调度过程中,流水线之间的同步会特别频繁,同步开销会特别大;
(2)粗粒度的划分:把整个算法划分成少数的粗粒度的功能单元,并利用这些划分的粗粒度功能单元进行并行处理。如果负载比较小,单一线程的处理方式简化了流水线的处理过程,有效地降低了***的代价。
采用流水并行的方法,如何提高不同阶段之间的衔接效率,是并行化的另一个重要问题。本发明采用了一种全局化的多生产者多消费者的共享缓冲区,缓冲区中存储从流水线并行前一阶段产生的中间结果。该缓冲区是环形缓冲区(Circular Buffer),前一阶段新生成的中间结果被存储在缓冲区的尾部,后一阶段则从当前缓冲区的头部读取传递的中间结果。我们利用信号量(semaphore)来检测缓冲区状态,是空或者满,并通过细粒度的锁机制保证每一个缓冲区元素存取的原子性。进一步地,为避免不必要的数据传输,减小同步开销,只有存储中间结果数据的指针会被存储在缓冲区中,因此缓冲区的存取开销比较小。
线程在流水线各阶段间频繁移动会造成线程颠簸(Thrashing),为此,本发明提出线程节流策略(Throttling Mechanism)。线程节流策略,就是通过调节缓冲区大小和调节线程间隔时间(两次线程移动之间的时间)这两个参数,来控制线程调节频率。
缓冲区过大,自适应流水线对动态工作负载不敏感,不能及时分配和调整计算资源;缓冲区过小,流水线对动态工作负载太敏感,导致线程频繁调度,造成较大工作开销。线程间隔时间过短,各阶段的线程会过于频繁地调动而造成额外开销;线程间隔时间过长,会造成线程等待时间过长,也影响整体的执行效率。
缓冲区的大小和线程间隔时间会综合影响***的工作效率,其具体配置由应用和典型的输入决定,最优值可通过实验来确定。
本发明方法能够有效克服流水线并行化中存在的各种固有限制,并充分利用底层多核硬件的计算资源,提高计算效率。AD-PIPE针对流水线不同阶段时间分布不确定的特点,引入动态调度策略实现负载均衡。同时,通过调节并行处理任务的粒度,克服流水线并行可扩展性差的不足。从而在保证高效处理的基础上使算法具有较好的并行可扩展性。
附图说明
图1为自适应流水并行算法的基本架构。
图2为SIFT和SURF算法的流程。
图3为基于层级的VocTree架构划分。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚,以下结合附图及实施例,详细说明本发明的优选实施方式。需要说明的是,本说明书中所使用的术语或词语不能限定解释为通常的含义或辞典中的含义,而应当立足于为了以最佳方式说明其发明人可以对术语的概念进行适当定义的原则解释为符合本发明技术思想的含义和概念。随之,本说明书所记载的实施例和附图中表示的结构只是本发明最佳实施例之一,并不能完全代表本发明的技术思想,因此应该理解到对于本发明而言可能会存在能够进行替换的各种等同物和变形例。
多媒体检索应用算法在大数据时代有广泛的应用前景,是众多多媒体相关数据服务的基础。然而,由于多媒体检索应用需要对大量图片进行分析和处理,因此已有多媒体算法都面临十分严重的实时处理的性能挑战。我们以多媒体检索算法的特征提取和特征匹配为例来说明运用本发明来并行化算法。
一、特征提取
典型的特征提取算法,如SIFT和SURF,粗粒度可划分为特征检测阶段(DetectionStage)和特征描述阶段(DescriptionStage)两个阶段;每个阶段进一步可以再细分为多个阶段(即细粒度划分),例如,特征检测阶段可以进一步划分为建立图像金字塔、特征点定位;特征描述阶段可以进一步划分为计算特征点方向、计算特征窗口。如图2所示。
粗粒度流水线划分由于阶段数较少,存在并行可扩展的限制。为了克服这个限制,我们在粗粒度流水线的基础上,结合图像级别并行,实现并行设计更好的并行性。即当底层计算资源可用时,根据资源实际情况,配置多个粗粒度流水线,每个粗粒度流水线独立执行多媒体检索算法,并完成分配给它的输入图像的处理。而通过动态调度克服负载不均衡和阶段比例不确定的问题。在多阶段流水线并行中,所有的线程首先按照一个基础的比例划分,比如1:1或者1:3,随着计算资源的不同,将按实际资源情况按初始分配比例配置多条流水线。
以SIFT算法为例,在这样的流水线设计中,一些线程执行特征检测而另一些线程执行特征描述。特征检测阶段,线程构建一个尺寸空间的金字塔,并发地检测不同输入图像的特征点,并且将它们写入一个共享的缓冲区;特征描述阶段,线程则从这个缓冲区中读取特征点,并且并发地描述为特征向量。为使得各个阶段的负载均衡,周期性地检查这些缓冲区,如果两阶段间的缓冲区在一段时间内处于满的状态,这就意味着前一阶段的处理速率大于后一阶段的处理速率。这种情况下,由于前后阶段处理速度不匹配,前一阶段的线程处于空闲状态的时间会增长,从而造成资源浪费。因此为了提升效率,应当减小前一阶段的线程数量,将这些线程调度给后面一个阶段,提升后一阶段的处理速度,从而平衡前后两阶段的负载均衡度。相应地,如果两阶段间的缓冲区长期处于空的状态,就意味着后一阶段的处理速率大于前一阶段的处理速率,后一个阶段的线程会处于工作负荷不足状态。因此,一些线程应当从后一阶段调度到前一阶段,从而平衡两阶段的负载均衡度。
SIFT和SURF动态流水线并行算法的伪代码见附录。共享变量detnum用来将线程资源划分成特征检测阶段和特种钢描述阶段两部分。thread_id小于detnum的线程为检测阶段线程,大于detnum的为描述阶段线程。信号量empty_sem和full_sem用来检测缓存的状态并帮助调节线程资源的分配。empty_sem和full_sem分别初始化为缓存的大小和0。当检测阶段线程要写入缓存时,需先检测缓存中是否有空位。当empty_sem不为0时则说明有空位,并执行empty_sem--(P操作)。相应地,描述阶段线程在取出线程并计算完毕后,会释放缓存资源,执行empty_sem++(V操作)。如果检测阶段线程工作量过大的话,缓存可能会被放满,此时empty_sem会为零0,它的P操作会一直等在那里直到有描述阶段线程释放缓存资源为止。一旦当检测线阶段程获得资源时,算法就会发现它曾长时间处于满置状态,于是算法会调整检测阶段线程的个数(detnum--),来达到平衡线程资源分配的作用。同样地,full_sem用来检测缓存中是否有特征点。检测线程工作完成后会full_sem++(V操作),描述工作前会检测full_sem是否为0,并占用资源(P操作)。当描述线程发现缓存长时间处于空置状态时,线程资源也将重新划分(detnum++)。为了避免过于频繁的来回切换,每次我们调节detnum粒度为1。
另外,在缓存的读写过程中,算法用互斥量buffer_mutex来保证操作的原子性。由于特征检测和特征描述两个阶段都是从缓存的头部开始循环,且信号量控制着读取线程访问的缓存编号不会超过写入线程,因此维护两个整数in和out,就可简单获取需要写入/读出的缓存位置。
二、特征匹配
对于特征匹配应用,图3给出了基于VocTree算法的匹配过程的阶段划分。针对算法的特点,我们采用粗粒度的划分标准,将顶端树形架构的特征匹配过程划分为分布阶段(DistributionStage),下方的树形结构划分为另一个查询阶段(SearchStage),最后是汇总搜索结果的阶段。
一个请求的处理过程如图3所示,请求由分布阶段在区域B1进行特征匹配,确定请求分别进入查询阶段的区域:B2,B3,…,B5。在查询阶段,每个请求可在独立的区域Bi进行匹配,并输出结果。汇总阶段则把一个请求在每个区域查询到的结果进行汇总,给出最终结果。
由于分布阶段是每个请求必经的阶段,因此调度策略可以分配多个线程,加快该阶段的处理。对于第二步的查询阶段,可以根据分布阶段的输出结果来确定线程的数量。汇总阶段,工作任务比较小,可以少点。对于图3所示的情况,分布阶段和搜索阶段在初始时按照1:1的比例来设定线程数,例如都是4个;而汇总阶段则只需要1个。在实际执行时,每个Bi分配的线程数,可以根据输入缓冲区的状态动态调节,如果满则增加线程,如果空则减少线程。
三、线程节流策略
线程节流策略通过调节两个参数:缓冲区大小和调节间隔时间(两次线程移动之间的时间)来控制线程调节频率。如何设定缓冲区的大小和线程的间隔时间,需要根据具体的算法和不同的配置来尝试。本发明以SIFT算法为例来说明,本发明衡量了算法的不同缓冲区和间隔时间的组合结果,并根据结果进行最优配置的选取,在不同等待时间和不同缓冲区大小下的性能数据如下表所示。
表1 SIFT算法不同等待时间和不同缓冲区对应的加速比
从表中可以看到,在缓冲区大小为12,等待时间为5.0E+7时,SIFT算法的AD-PIPE得到最大的加速比。因此,我们选取了这一配置作为默认值。
附录:
empty_sem和full_sem是PV操作的信号量. empty_sem被初始化为bufSize,full_sem初始值为0.
int in=0,out=0;
while(1) {
lock(&detnum_mutex);
isDet=(thread_id<detnum);
unlock(&detnum_mutex);
//检测线程
if(isDet) {
Dynamically read once image from image set;
Build scale-space pyramid;
features = detect_localization();
P(&empty_sem);
if(P waits & ticks from last change exceeds a threshold) {
lock(&detnum_mutex);
detnum—;
unlock(&detnum_mutex);
}
lock(&buffer_mutex);
buffer[in].features = features;
in = (in+1)%bufSize;
unlock(&buffer_mutex);
V(&full_sem);
}
//描述线程
if(!isDet) {
P(&full_sem);
if(P waits & ticks from last change exceeds a threshold) {
lock(&detnum_mutex);
detnum++;
unlock(&detnum_mutex);
}
lock(&buffer_mutex);
features = buffer[out].features;
out = (out+1)%bufSie;
unlock(&buffer_mutex);
V(&empty_sem);
calc_feature_orientation(features);
calc_feature_descriptor(features);
}
}

Claims (6)

1.一种自适应的动态流水线并行方法,其特征在于,在流水线并行机制中,将一个完整的应用划分为多个功能阶段,各个阶段以相互衔接的并行方式工作,并通过各个阶段间的共享缓冲区交互中间结果;输入数据流经过各个阶段并逐个被处理;
其中,各流水线阶段的线程数不作静态分配,而是根据各个阶段现有的工作负载情况进行动态地调整:如果某一个流水线阶段的工作负载比较重,此阶段的线程分配数量上升,从而保证处于该阶段的负载能被及时的处理;反之,如果某一阶段的工作负载较低,此阶段分配的线程数就下调,从而避免负载不足导致的线程空闲。
2.根据权利要求1所述的自适应的动态流水线并行方法,其特征在于,为了适应不同类型输入,对流水线进行划分:根据负载任务分为细粒度和粗粒度:
(1)细粒度的划分:把整个算法划分成多个细粒度的功能单元,并利用这些划分的细粒度功能单元进行并行处理;
(2)粗粒度的划分:把整个算法划分成少数的粗粒度的功能单元,并利用这些划分的粗粒度功能单元进行并行处理。
3.根据权利要求2所述的自适应的流水线并行方法,其特征在于,设置一种全局化的多生产者多消费者的共享缓冲区,缓冲区中存储从流水线并行前一阶段产生的中间结果;该缓冲区是环形缓冲区,前一阶段新生成的中间结果被存储在缓冲区的尾部,后一阶段则从当前缓冲区的头部读取传递的中间结果;利用信号量来检测缓冲区状态:是空或者满,并通过细粒度的锁机制保证每一个缓冲区元素存取的原子性。
4.根据权利要求3所述的自适应的动态流水线并行方法,其特征在于,进一步使用线程节流策略,即通过调节缓冲区大小和调节线程间隔时间这两个参数,来控制线程调节频率;
缓冲区的大小和线程间隔时间的具体配置由应用和典型的输入决定,最优值通过实验来确定。
5.根据权利要求4所述的自适应的动态流水线并行方法,其特征在于,对于多媒体检索算法,其包括特征提取算法和特征匹配算法,其并行算法的方式为:
(一)特征提取算法,采用SIFT或SURF,粗粒度划分为特征检测阶段和特征描述阶段两个阶段;
由于粗粒度流水线划分阶段数较少,存在并行可扩展的限制;为了克服这个限制,在粗粒度流水线的基础上,结合图像级别并行,实现更好的并行性;即当底层计算资源可用时,根据资源实际情况,配置多个粗粒度流水线,每个粗粒度流水线独立执行多媒体检索算法,并完成分配给它的输入图像的处理;通过动态调度克服负载不均衡和阶段比例不确定的问题;
在SIFT算法中,在流水线设计中,一些线程执行特征检测而另一些线程执行特征描述;特征检测阶段,线程构建一个尺寸空间的金字塔,并发地检测不同输入图像的特征点,并且将它们写入一个共享的缓冲区;特征描述阶段,线程则从这个缓冲区中读取特征点,并且并发地描述为特征向量;为使得各个阶段的负载均衡,周期性地检查这些缓冲区,如果两阶段间的缓冲区在一段时间内处于满的状态,这就意味着前一阶段的处理速率大于后一阶段的处理速率;这种情况下,减小前一阶段的线程数量,将这些线程调度给后面一个阶段,提升后一阶段的处理速度,从而平衡前后两阶段的负载均衡度;相应地,如果两阶段间的缓冲区长期处于空的状态,就意味着后一阶段的处理速率大于前一阶段的处理速率,后一个阶段的线程会处于工作负荷不足状态,这种情况下,将一些线程从后一阶段调度到前一阶段,从而平衡两阶段的负载均衡度;
(二)特征匹配
采用VocTree算法,其匹配过程的阶段划分采用粗粒度的划分标准,即将顶端树形架构的特征匹配过程划分为分布阶段,下方的树形结构划分为另一个查询阶段,最后是汇总搜索结果的阶段;
由于分布阶段是每个查询必经的阶段,因此调度策略分配多个线程,加快该阶段的处理;针对分布阶段的输出结果,根据结果的分布来确定线程的分布。
6.根据权利要求5所述的自适应的动态流水线并行方法,其特征在于,对于特征提取算法中的SIFT或SURF,其中,共享变量detnum用来将线程资源划分成特征检测阶段和特种钢描述阶段两部分;thread_id小于detnum的线程为检测阶段线程,大于detnum的为描述阶段线程;信号量empty_sem和full_sem用来检测缓存的状态并帮助调节线程资源的分配;empty_sem和full_sem分别初始化为缓存的大小和0;当检测阶段线程要写入缓存时,先检测缓存中是否有空位;当empty_sem不为0时则说明有空位,并执行empty_sem--,即P操作;相应地,描述阶段线程在取出线程并计算完毕后,释放缓存资源,执行empty_sem++,即V操作;如果检测阶段线程工作量过大,缓存可能会被放满,此时empty_sem会为零0,它的P操作一直等在那里直到有描述阶段线程释放缓存资源为止;一旦当检测线阶段程获得资源时,会发现它曾长时间处于满置状态,于是会调整检测阶段线程的个数detnum--,来达到平衡线程资源分配的作用;同样地,full_sem用来检测缓存中是否有特征点;检测线程工作完成后会full_sem++(V操作),描述工作前检测full_sem是否为0,并占用资源(P操作);当描述线程发现缓存长时间处于空置状态时,线程资源也将重新划分(detnum++);为了避免过于频繁的来回切换,每次调节detnum粒度为1;
另外,在缓存的读写过程中,用互斥量buffer_mutex来保证操作的原子性;由于特征检测和特征描述两个阶段都是从缓存的头部开始循环,且信号量控制着读取线程访问的缓存编号不会超过写入线程,因此维护两个整数in和out,就可获取需要写入/读出的缓存位置。
CN201810659163.9A 2018-06-25 2018-06-25 一种自适应的动态流水线并行方法 Pending CN108984283A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810659163.9A CN108984283A (zh) 2018-06-25 2018-06-25 一种自适应的动态流水线并行方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810659163.9A CN108984283A (zh) 2018-06-25 2018-06-25 一种自适应的动态流水线并行方法

Publications (1)

Publication Number Publication Date
CN108984283A true CN108984283A (zh) 2018-12-11

Family

ID=64538582

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810659163.9A Pending CN108984283A (zh) 2018-06-25 2018-06-25 一种自适应的动态流水线并行方法

Country Status (1)

Country Link
CN (1) CN108984283A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109992411A (zh) * 2019-02-18 2019-07-09 华夏芯(北京)通用处理器技术有限公司 一种实现可快速释放的vlv访存阵列的方法
CN110287023A (zh) * 2019-06-11 2019-09-27 广州海格通信集团股份有限公司 消息处理方法、装置、计算机设备和可读存储介质
CN110619595A (zh) * 2019-09-17 2019-12-27 华中科技大学 一种基于多fpga加速器互联的图计算优化方法
CN112612585A (zh) * 2020-12-16 2021-04-06 海光信息技术股份有限公司 线程调度方法、配置方法、微处理器、装置及存储介质
WO2021097962A1 (zh) * 2019-11-20 2021-05-27 深圳先进技术研究院 一种异构芯片的任务处理方法、任务处理装置及电子设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9361523B1 (en) * 2010-07-21 2016-06-07 Hrl Laboratories, Llc Video content-based retrieval
CN106991011A (zh) * 2017-03-30 2017-07-28 武汉大学 一种针对大数据任务处理的基于cpu多线程与gpu多粒度并行及协同优化的方法
CN107203984A (zh) * 2017-02-21 2017-09-26 合肥安达创展科技股份有限公司 针对第三方软件的投影融合矫正***
CN107391243A (zh) * 2017-06-30 2017-11-24 广东神马搜索科技有限公司 线程任务处理设备、装置及方法
CN107643944A (zh) * 2016-07-21 2018-01-30 阿里巴巴集团控股有限公司 一种处理任务的方法和设备

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9361523B1 (en) * 2010-07-21 2016-06-07 Hrl Laboratories, Llc Video content-based retrieval
CN107643944A (zh) * 2016-07-21 2018-01-30 阿里巴巴集团控股有限公司 一种处理任务的方法和设备
CN107203984A (zh) * 2017-02-21 2017-09-26 合肥安达创展科技股份有限公司 针对第三方软件的投影融合矫正***
CN106991011A (zh) * 2017-03-30 2017-07-28 武汉大学 一种针对大数据任务处理的基于cpu多线程与gpu多粒度并行及协同优化的方法
CN107391243A (zh) * 2017-06-30 2017-11-24 广东神马搜索科技有限公司 线程任务处理设备、装置及方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
YUNPING LU: "Parallelizing image feature extraction algorithms on multi-core platforms", 《JOURNAL OF PARALLEL AND DISTRIBUTED COMPUTING》 *

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109992411A (zh) * 2019-02-18 2019-07-09 华夏芯(北京)通用处理器技术有限公司 一种实现可快速释放的vlv访存阵列的方法
CN109992411B (zh) * 2019-02-18 2021-05-18 华夏芯(北京)通用处理器技术有限公司 一种实现可快速释放的vlv访存阵列的方法
CN110287023A (zh) * 2019-06-11 2019-09-27 广州海格通信集团股份有限公司 消息处理方法、装置、计算机设备和可读存储介质
CN110287023B (zh) * 2019-06-11 2021-12-10 广州海格通信集团股份有限公司 消息处理方法、装置、计算机设备和可读存储介质
CN110619595A (zh) * 2019-09-17 2019-12-27 华中科技大学 一种基于多fpga加速器互联的图计算优化方法
CN110619595B (zh) * 2019-09-17 2021-04-13 华中科技大学 一种基于多fpga加速器互联的图计算优化方法
WO2021097962A1 (zh) * 2019-11-20 2021-05-27 深圳先进技术研究院 一种异构芯片的任务处理方法、任务处理装置及电子设备
CN112612585A (zh) * 2020-12-16 2021-04-06 海光信息技术股份有限公司 线程调度方法、配置方法、微处理器、装置及存储介质
CN112612585B (zh) * 2020-12-16 2022-07-29 海光信息技术股份有限公司 线程调度方法、配置方法、微处理器、装置及存储介质

Similar Documents

Publication Publication Date Title
CN108984283A (zh) 一种自适应的动态流水线并行方法
CN110619595B (zh) 一种基于多fpga加速器互联的图计算优化方法
Das et al. Distributed deep learning using synchronous stochastic gradient descent
EP2466460B1 (en) Compiling apparatus and method for a multicore device
US10963300B2 (en) Accelerating dataflow signal processing applications across heterogeneous CPU/GPU systems
US11699210B2 (en) Multistage collector for outputs in multiprocessor systems
US20070143759A1 (en) Scheduling and partitioning tasks via architecture-aware feedback information
Navarro et al. Heterogeneous parallel_for template for CPU–GPU chips
CN102902512A (zh) 一种基于多线程编程及消息队列的多线程并行处理方法
CN101593202A (zh) 基于共享Cache多核处理器的数据库哈希连接方法
CN109739833A (zh) 一种基于fpga的国产平台数据库加速***及方法
WO2023179415A1 (zh) 机器学***台
US20150026698A1 (en) Method and system for work partitioning between processors with work demand feedback
CN102253919A (zh) 基于gpu和cpu协同运算的并行数值模拟方法和***
CN107329822B (zh) 面向多源多核***的基于超任务网的多核调度方法
Oden et al. Energy-efficient collective reduce and allreduce operations on distributed GPUs
CN110990154A (zh) 一种大数据应用优化方法、装置及存储介质
WO2016041126A1 (zh) 基于gpu的数据流处理方法和装置
Xie et al. Adaptive preshuffling in Hadoop clusters
Zhang et al. To co-run, or not to co-run: A performance study on integrated architectures
Lal et al. GPGPU workload characteristics and performance analysis
Jiang et al. A distributed dynamic parallel algorithm for SIFT feature extraction
Schall et al. Energy and Performance-Can a Wimpy-Node Cluster Challenge a Brawny Server?
Fang et al. Scheduling resources to multiple pipelines of one query in a main memory database cluster
Xiangwu et al. Optimizing parallel join of column-stores on heterogeneous computing platforms

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20181211