CN108491261A - 基于众核并行处理器的多路帧序列排序方法 - Google Patents
基于众核并行处理器的多路帧序列排序方法 Download PDFInfo
- Publication number
- CN108491261A CN108491261A CN201810051613.6A CN201810051613A CN108491261A CN 108491261 A CN108491261 A CN 108491261A CN 201810051613 A CN201810051613 A CN 201810051613A CN 108491261 A CN108491261 A CN 108491261A
- Authority
- CN
- China
- Prior art keywords
- processor
- chained list
- image
- code stream
- sequence
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Image Processing (AREA)
- Compression Of Band Width Or Redundancy In Fax (AREA)
Abstract
本发明公开了一种基于众核并行处理器的多路帧序列排序方法,解决了传统并行处理系统多路帧序列排序中时间和空间复杂度高的问题。实现步骤如下:各个处理器开辟所需的链表空间;第一个处理器开辟N个线程同时接收N路码流,头信息中设置通道号,依处理器个数平均分配码流;各个处理器接收码流时设置新帧号,分配多个内核解码,通过帧号匹配实现不同内核解码后恢复图像的排序;最后一个处理器设计N条通道链表,匹配通道号将恢复图像存储至对应通道链表,再由N个线程将数据发送至外部设备。本发明的排序方法实现复杂度低,节省了内存空间和排序时间,可靠性和适应性强,可用于图像和视频并行处理系统中的多路帧序列排序。
Description
技术领域
本发明涉及图像和视频处理技术领域,更进一步涉及帧序列排序,具体是一种在众核并行处理架构下的多路帧序列排序方法,可用于在众核并行处理器数字设备下的图像和视频编解码。
背景技术
如今数据传输需求不断增长,所需的传输带宽也随之变大。针对新一代数据传输通道码率高、数据处理复杂、运算速度快等特点,普通的单核处理系统已经不能满足数据实时处理的需求,人们通过引入并行运算的概念来研制高速数据处理设备,众核并行处理器正是在这样的背景下产生的。本发明采取的众核并行策略是基于粗粒度并行机制设计的,利用众核并行处理器的硬件优势,通过内核间通信、处理器间通信和存储方案等软件技术的结合实现高速实时并行处理系统,另一个优势是本发明设计的并行框架扩展性高,适用于其它相似的并行处理任务。
在并行架构下的图像和视频处理中,保证输出帧序列的顺序是评估并行处理系统正确性和可靠性的关键因素,而且随着处理器和内核数量的增加,如何高效地完成并行系统中帧序列的排序,影响着整个系统能否满足高速实时和正确处理的需求。传统的并行处理系统考虑到输入数据有序且系统接收时也是按顺序接收,其假设所有参与计算的内核能力一致和输入数据的复杂度是均衡的,即经过系统处理后的数据与接收到的数据保持相同顺序,因而没有针对性地设计排序方案。实际系统中的处理任务并不满足假设中的条件,由于各个核的计算能力都有差异,计算能力强的内核相比弱的所需解码时间较短,另外每个内核所处理的数据也都不同,复杂图像和简单图像的解码时间差异较大。综上原因,同个处理器中不同内核间的处理时间都有所差异,因此会造成数据乱序的情况,导致系统无法正确执行任务。
发明内容
本发明的目的在于针对上述已有技术的不足,提出一种可以完成快速排序和避免网络传输阻塞的基于众核并行处理器的多路帧序列排序方法,节省了占用的内存空间和排序时间。
本发明是一种基于众核并行处理器的多路帧序列排序方法,其特征在于,包括如下步骤:
(1)开辟链表空间:在各个处理器内存中开辟码流链表空间和图像链表空间,码流链表空间包含码流空闲链表、待解码码流链表和待发送码流链表,图像链表空间包含图像空闲链表、恢复图像链表,最后一个处理器在图像链表空间中新增N条通道链表,N为系统输入通道数;
(2)多路码流数据的接收和分配:在第一个处理器中开辟N个接收线程,使用不同端口对应接收N路输入码流,并在每路输入码流的头信息中增加通道号,用于标记数据来源,再根据处理器个数M平均分配码流,在本地处理器中解码的码流数据存储于待解码码流链表,在后续处理器中解码的码流数据存储于待发送码流链表,保证每个处理器独立处理N/M路码流,N>=M,且N/M为整数;
(3)各个处理器进行解码及排序:每个处理器对接收到的码流设置新帧号,开辟多个内核进行解码工作,每个内核处理完整单帧码流数据,设置一个全局变量global_frame_number用来匹配恢复图像的帧号,用于保证同个处理器不同内核间的帧序列顺序,匹配成功则将图像块挂载至恢复图像链表,匹配失败则等待一个时间间隔再重新进行匹配;
(4)最后一个处理器进行数据组织、排序和发送:最后一个处理器新增N条通道链表,用于存储对应通道号的恢复图像块,处理器将本地解码后的恢复图像和接收的上一个处理器发送的恢复图像根据通道号进行匹配,将恢复图像块挂载至相应的N条通道链表,保证N条通道链表中的恢复图像数据都是有序的,然后开辟N个发送线程,从对应的N条通道链表中提取恢复图像数据并使用不同端口发送至外部设备,完成基于众核并行处理器的多路帧序列排序。
本发明利用帧号匹配机制实现每个处理器中不同内核间的帧序列的快速排序,有效地避免了网络数据传输阻塞,并结合通道号匹配和分块存储的技术方案实现了各路帧序列的排序。本发明不需要开辟多余内存空间先缓存数据再进行排序,有效地节省了内存空间,整个方案易于实现,有效地解决了众核并行处理系统中多路帧序列的排序。
本发明与现有技术相比较,具有如下优点:
第一,本发明在第一个处理器中分配N个内核运行N个接收线程,使用不同端口同时接收N路输入数据,简化调度机制,增强适应能力,保证了接口的接收速率。
第二,本发明对接收码流设置新帧号,并在每个处理器中设置全局变量,利用帧号匹配完成对每个处理器中不同内核间的恢复图像进行快速排序,有效地避免了网络数据传输阻塞。
第三,本发明采用分块存储的机制,保证了每个处理器中的恢复图像都是相对有序的,即各路的恢复图像有序,最后结合通道匹配的方式将各路恢复图像有序地挂载至对应的通道链表空间,从而实现系统中各路帧序列的排序功能,解决多路数据的快速排序问题。
第四,本发明采用全局变量和分块存储相结合的技术方案,通过多个变量的匹配实现并行处理系统中多路帧序列的排序,不需要多余的缓存空间,节省了内存空间和排序时间,实践也证明本发明是高效可行的。
附图说明
图1为本发明系统实现流程示意图;
图2为本发明第一个处理器的处理流程示意图;
图3为本发明中间处理器的处理流程示意图;
图4为本发明最后一个处理器的处理流程示意图;
图5为本发明各个处理器中不同内核间恢复图像序列排序示意图。
具体实施方式
下面结合附图对本发明的实现步骤做详细的描述
实施例1
传统的JPEG_LS并行解码系统中没有针对性地设计排序方案,因其假设所有参与计算的内核能力一致和输入数据的复杂度是均衡的,但是实际中由于各个内核计算能力的差异和所处理的数据也都不同,导致不同内核所需的处理时间都有所差异,因此会造成数据乱序的情况。针对上述问题,本发明展开了研究,提出了一种基于众核并行处理器架构下的多路帧序列排序方法,参见图1~图5,包括如下步骤:
(1)开辟链表空间:参见图1的第一步,图1是系统实现流程示意图,在各个处理器内存中开辟码流链表空间和图像链表空间,码流链表空间包含码流空闲链表、待解码码流链表和待发送码流链表,图像链表空间包含图像空闲链表、恢复图像链表,特别地,最后一个处理器在图像链表空间中新增N条通道链表,N为输入数据的通道数。本例中N=4,即输入数据为4路均衡的CCD码流数据,在第一个处理器中接收4路码流,将1~2路码流数据存储在待解码码流链表并在解码完成后将恢复图像存储在恢复图像链表,将3~4路码流数据存储在待发送码流链表,将1~2路恢复图像和3~4路码流数据都发送至后续处理器,链表空间中的不同链表存储不同数据,内存空间是可以循环利用的,目的是保证各处理器间高效通信且有利于完成排序。
(2)多路码流数据的接收和分配:参见图2,图2是第一个处理器的处理流程示意图,在第一个处理器中开辟N个接收线程,使用不同端口对应接收N路输入码流,并在图2所示的数据缓存时在码流头信息中设置通道号和码流标志,通道号用于指示数据来源,码流标志用于指示数据是码流还是图像,再根据处理器个数M和通道号平均分配码流,在第一个处理器中解码的1~N/M路码流数据存储于待解码码流链表,需要发送至下一个处理器解码的码流数据存储于待发送码流链表,保证每个处理器独立处理N/M路码流,N>=M,且N/M为整数。本例中N=4,M=2,每个处理器独立处理2路码流,第一个处理器中开辟4个接收线程分别接收对应的4路码流,在每个独立码流的头信息中设置区分数据来源的变量ccd_number,值为1~4的整数,代表1~4路码流数据,1~2路码流分配给第一个处理器,3~4路码流分配给第二个处理器。
(3)各个处理器进行解码及排序:参见图3和图5,图3是各个处理器的处理流程示意图,图5是各个处理器中不同内核间恢复图像序列排序示意图,如图3所示每个处理器对接收到的码流设置新帧号,开辟多个内核进行解码工作,每个内核处理完整单帧码流数据,在处理器中设置一个全局变量global_frame_number用来匹配恢复图像的帧号,保证同个处理器不同内核间的帧序列顺序,如图5右上角所示匹配成功则将图像块挂载至恢复图像链表,匹配失败则等待一个时间间隔再重新进行匹配,直至匹配成功再挂载至恢复图像链表,图5中所示的发送线程会不断的读取恢复图像链表中的数据,并将数据发送至下一个处理器,即第二个处理器。本例中每个处理器分配20个内核负责解码工作,每个内核在解码完成后将恢复图像的帧号与全局变量进行匹配,利用单个全局变量和帧号的匹配实现多个内核间的帧序列的快速排序,提高了空间利用率。
(4)最后一个处理器进行数据组织、排序和发送:参见图4,图4是最后一个处理器的处理流程示意图,最后一个处理器新增N条通道链表,用于存储对应通道号的恢复图像块,根据通道号匹配将本地解码后的恢复图像挂载至3~4条通道链表中,图4左下角为将接收上一个处理器发送的1~2路恢复图像挂载至1~2条通道链表,保证4条通道链表中的恢复图像数据都是有序的,如图4右下角所示在处理器中开辟4个发送线程,从对应的4条通道链表中提取恢复图像数据并使用不同端口发送至外部设备,完成基于众核并行处理器的多路帧序列排序。本例中N=4,最后一个处理器接收上个处理器发送来的1~2路恢复图像数据和3~4路码流数据,对3~4路码流进行解码,并在链表空间中新增4条通道链表,根据通道号匹配将1~4路的恢复图像挂载至相应的4个通道链表中,实现数据有序,再由4个发送线程将各路恢复图像发送至外部设备。
本发明对存储空间进行分块,利用通道号匹配对恢复图像数据重新组织,存储至对应通道链表,实现了各路帧序列的快速排序,并采用全局变量和分块存储相结合的技术方案实现并行处理中多路帧序列的排序,在排序过程中不需要多余的缓存空间,节省了内存空间和排序时间,实践也证明本发明是高效可行的。
实施例2
基于众核并行处理器的多路帧序列排序方法同实施例1,步骤(1)中所述的开辟链表空间,包括各个处理器中开辟所需的链表空间:
1a).各个处理器均需开辟码流链表空间和图像链表空间,码流链表空间包含码流空闲链表、待解码码流链表和待发送码流链表;图像链表空间包含图像空闲链表、恢复图像链表,所有链表中节点大小按照单帧码流或图像大小进行分块,并包含头信息;
1b)特别地,本发明在最后一个处理器的图像链表空间中的新增N条通道链表,用于存储对应通道号的恢复图像块,利用分块存储和通道号匹配的方法实现各个通道的恢复图像是有序的。
本例中码流链表空间和图像链表空间分别开辟900M内存空间,其中900M码流链表空间用于码流空闲链表、待解码码流链表和待发送码流链表之间循环利用,900M图像链表空间用于图像空闲链表、恢复图像链表之间循环利用,所有链表中的节点大小按照单帧码流3M或图像大小5M进行分块,并包含头信息。特别地,本发明在最后一个处理器的图像链表空间中新增了N条通道链表,N的大小取决于输入的通道数量,本例中N=6,新增的通道链表是用于存储对应通道号的恢复图像块,本发明采用分块存储和通道号匹配相结合的技术方案实现所有通道链表中恢复图像的排序,方案简单且易于实现,有效地解决了各通道恢复图像的排序问题。
实施例3
基于众核并行处理器的多路帧序列排序方法同实施例1-2,步骤(2)中所述的码流数据接收和分配,具体包括有如下步骤:
2a).在第一个处理器中开辟N个接收线程,用于接收N路输入的码流数据。本例中,N取值为6,即开辟6个线程用于接收6路输入的CCD码流数据,每个线程工作时将接收到的码流数据按照完整单帧码流2M大小进行分块,并在头信息中设置码流数据通道号,值为1~6,用于标识实际数据来源,该变量的作用主要是用于在最后一个处理器中进行数据组织和排序。
2b).根据系统中处理器个数M平均分配待解码的码流,通过匹配通道号,将对应的N/M路码流按接收顺序将单帧独立码流数据挂载至本地处理器中待解码码流链表的空闲节点,并从0开始设置新的接收帧号,用于后续帧号匹配。本例中有3个处理器,为了均衡各个处理器的任务,每个处理器应处理两路独立码流,根据2a)中设置的通道号,将1~2路码流按接收顺序将单帧独立码流数据挂载至第一个处理器中待解码码流链表,并从0开始设置新的接收帧号,目的是在解码完成后和处理器中设置的全局变量进行帧号匹配,解决不同内核间恢复图像的排序问题,同时解决了实际系统传输过程中的丢帧问题。
2c)将剩余的N*(M-1)/M路码流按接收顺序将单帧独立码流数据挂载至本地处理器中待发送码流链表的空闲节点,用于发送至后续处理器进行解码。本例中,需要将3~6路码流发送至第二个处理器,再由第二个处理器进行码流分配,即3~4路码流存储在待解码链表用于本地解码,5~6路码流数据存储在待发送码流链表用于发送给第三个处理器进行解码。
本发明首先对接收码流设置新帧号和通道号,通过单个变量即可识别不同码流所在的数据通道及在对应数据通道中的序列顺序,并通过码流数据分配使得每个处理器的处理任务量较为均衡,有效地避免了木桶效应的影响,保证了整个系统处理效率处于较高状态。
实施例4
基于众核并行处理器的多路帧序列排序方法同实施例1-3,步骤(3)所述的设置一个全局变量用来匹配恢复图像的帧号,用于保证同个处理器不同内核间的帧序列顺序,具体包括:
3a).设置全局变量gobal_frame_number,初始化为0,用来指示恢复图像块在多个内核间的顺序,内核解码完成后将新帧号和全局变量进行匹配。本例中每个处理器的解码内核各有5个,由于处理数据的复杂度和内核能力都有差异,该5个内核并行解码过程中完成解码的先后顺序不一定等同于不同码流在待解码链表中的顺序,因而设置该全局变量的目的是用于匹配处理器在接收码流时设置的新帧号。
3b)帧号匹配相等时将恢复图像挂载至恢复图像链表,并且gobal_frame_number=gobal_frame_number+1。本例中处理器中分配的5个内核解码完成后恢复图像的帧号为0,1,2,3,4,即解码完成的顺序和接收码流的顺序一致,在该情况下,5次帧号匹配过程完全相等,每次匹配相等时将恢复图像存储在恢复图像链表,所以恢复图像链表中的帧序列是有序的。
3c)帧号匹配不相等时等待一个时间间隔,当匹配相等时返回执行(3b)中的操作,进行链表挂载和全局变量的自增操作;匹配不相等时继续等待,直至匹配成功。本例中5个内核解码完成后恢复图像的帧号为1,2,0,3,4,即解码完成的顺序和接收码流的顺序不一致,帧号匹配过程时前两帧帧号1和2不等与全局变量的初始值0,该两个内核进行等待,第三帧帧号0匹配成功时将该帧挂载至恢复图像链表,同时全局变量gobal_frame_number值更新为1,匹配帧号1,以此类推,直至所有帧号匹配成功。
本发明在接收码流时从0开始设置新帧号,同时在处理器中设置初始值为0的全局变量,在多个内核解码完成后将帧号与全局变量进行匹配,实现处理器中不同内核间的恢复图像的快速排序,有效地避免了网络数据传输阻塞。
实施例5
基于众核并行处理器的多路帧序列排序方法同实施例1-4,步骤(4)中所述的在最后一个处理器对恢复图像进行组织、排序和发送,具体包括:
4a).在最后一个处理器中开辟N条通道链表,根据通道号匹配,将接收到的前M-1个处理器中解码恢复图像挂载至对应的N*(M-1)/M条通道链表中,将本地处理器中解码后的恢复图像挂载至对应的N/M条通道链表中。本例中N=10,M=2,即第一个处理器处理1~5路码流数据,第二个处理器即最后一个处理器处理6~10路码流数据,接收来自第一个处理器的1~5路恢复图像,每个处理器经过排序后的恢复图像数据是相对有序的,以N3F2代表第3路数据的第3帧图像,帧号从0开始,以序列N1F0-N2F0-N2F1-N1F1-N1F2-N2F2-N1F3-N2F3-N1F4-N2F4为例,第1路和第2路数据的帧号都是按01234排列,两路数据互相交叉在但各自有序。第二个处理器在链表空间中新增10条通道链表image_list_ccd1~image_list_ccd10,根据头信息中的通道号将10路交叉有序的恢复图像数据存储至对应的通道链表,保证了通道链表中的图像数据都是严格有序的。
4b).在最后一个处理器中开辟N个发送线程,从步骤4a)中得到对应的N条通道链表中提取恢复图像数据发送至外部设备,进而完成众核并行解码的排序工作。本例中在第二个处理器开辟10个发送线程pthread_send_ccd1~pthread_send_ccd10,pthread_send_ccdi代表该线程负责发送第i路恢复图像数据,从通道链表image_list_ccdi中提取恢复图像数据并发出。
本发明使用分块存储的技术方案,在最后一个处理器中使用N条通道链表中存储不同通道的恢复图像数据,不需要开辟多余空间先缓存数据再进行排序,而是使用链表空间对内存空间进行分块,有效地节省了内存空间,在重新组织数据时即完成各通道数据的排序,提高排序效率,实践也证明本发明是高效可行的。
下面给出一个更加详尽的例子,结合附图对本发明的实现步骤做进一步详细描述。
实施例6
基于众核并行处理器的多路帧序列排序方法同实施例1-5,外部输入数据为8路均衡的CCD码流数据,基于TileGX36实现的JPEG_LS高速解码系统,处理器个数为4,每个处理器含有36个内核,图像宽为2048,图像高为1024,图像深度为10bit。
步骤1.各个处理器中开辟所需的链表空间
(1.1)开辟码流链表空间。
1.1a).开辟900M内存空间,包含码流空闲链表、待解码码流链表和待发送码流链表,链表中节点大小按照单帧独立码流大小3M进行分块,头信息中包好帧号和通道号。
1.1b).码流空闲链表用于指示当前码流的存储空间大小。初始化时链表中的节点数为码流空间所有码块数,用于存储接收到的外部输入码流;当码流空间中的所有码块均未完成解码时,链表中的节点数为0,无法存储新码流。
1.1c).待解码码流链表用于存储将被本地内核解码的码块。当链表不为空时处理器的解码内核从中提取码块进行解码;当链表为空时表示没有待解码的码块,此时处理器中的解码内核会等待并不断访问该链表直到有新的节点产生。
1.1d).待发送码流链表用于存储待发送至下一个处理器的码块。当链表不为空时处理器中发送线程从该链表中提取码块,发送至下一处理器中进行解码;当链表为空时表示没有待发送码块,此时通信内核等待上一处理器或者外部设备发送新的码块。
(1.2)开辟图像链表空间。
1.2a).开辟900M内存空间,包含图像空闲链表、恢复图像链表,链表中节点大小按照单帧图像大小5M进行分块,头信息中包含帧号和通道号。
1.2b).图像空闲链表用于指示当前恢复图像的存储空间大小。初始化时链表中的节点数为图像空间所有块数,用于存储处理器解码后的恢复图像;当图像空间中的所有图像块均未被发送时,链表中的节点数为0,无法存入新的图像块,解码内核进行等待。
1.2c).恢复图像链表用于存储解码完成的恢复图像块,当链表不为空时处理器中的发送内核从该链表中提取节点进行发送,当链表为空时表示图像空间的恢复图像块均未发送,发送线程会等待并不停的访问该链表直到有新的节点产生。
(1.3)特别地,本发明最后一个处理器在图像链表空间中新增8条通道链表,用于存储对应通道号的恢复图像块。
步骤2.第一个处理器的处理流程,参见图2
(2.1)所有处理器均有36个内核,第一个处理器的内核也为36个,其中1个内核运行本地操作系统,8个内核用于接收8路输入的码流数据,1个内核用于发送码流数据和恢复图像数据,另外26个内核运行核心解码程序。
(2.2)根据处理器个数平均分配待解码的码流。
2.2a).本例中处理器个数为4,分别为第一个处理器,两个中间处理器和最后一个处理器,匹配码流头信息中的通道号,将1~2路码流按接收顺序将单帧独立码流数据挂载至本地处理器中待解码码流链表,从0开始设置新的接收帧号,用于解码完成后的帧号匹配,并在头信息中增加恢复图像标志flag=1。
2.2b).将剩余3~8路码流按接收顺序将单帧独立码流数据挂载至本地处理器中待发送码流链表,并在头信息中增加码流标志flag=0,本地处理器即第一个处理器。
(2.3)分配的26解码内核分别从待解码码流链表中提取码流数据进行解码工作。
(2.4)对解码内核间的恢复图像进行排序,保证该处理器中解码恢复图像链表中的1~2路恢复图像是交叉有序的。
2.4a).设置全局变量gobal_frame_number,初始化为0,用来指示恢复图像块在多个内核间的顺序。
2.4b).内核解码完成后将新帧号和全局变量进行匹配,相等则将恢复图像挂载至恢复图像链表,并且gobal_frame_number=gobal_frame_number+1。
2.4c).新帧号和全局变量不相等则等待一个时间间隔,相等时再进行1b)中的节点挂载和全局变量自增操作。
(2.5)发送内核从待发送码流链表和恢复图像链表中按顺序提取节点发送至下一个处理器,下一个处理器即第二个处理器。
步骤3.中间两个处理器的处理流程,参见图3
(3.1)每个处理器共36个内核,其中1个内核运行本地操作系统,1个内核用于接收上个处理器发送的恢复图像数据和码流数据,1个内核用于发送码流数据和恢复图像数据,另外33个内核运行核心解码程序。
3.1a).根据接收数据头信息中的区分变量flag,识别收到数据是码流还是图像;
3.1b).flag为0时指示数据为码流,接收时存储至待解码码流链表;
3.1c).flag为1时指示数据为恢复图像,接收存储至恢复图像链表。
(3.2)处理接收到的待解码码流数据和恢复图像数据。
3.2a).分配码流数据,通过通道号匹配,将对应的两路码流按接收顺序将单帧独立码流数据挂载至本地处理器中待解码码流链表,从0开始设置新的接收帧号,用于后续帧号匹配,并在头信息中增加恢复图像标志flag=1。
3.2b).将剩余的待解码码流数据按接收顺序将单帧独立码流挂载至本地处理器中待发送码流链表,,并在头信息中增加码流数据标志flag=0。
3.2c).将接收到的恢复图像数据按接收顺序挂载至恢复图像链表。
(3.3)分配的33解码内核分别从待解码码流链表中提取码流数据进行解码工作。
(3.4)内核间恢复图像的排序,与第一个处理器中的逻辑相同,用于保证该处理器中解码恢复图像链表上的两路恢复图像是相对有序的。
(3.5)发送内核从待发送码流链表和恢复图像链表中按顺序提取节点发送至下一个处理器,即最后一个处理器。
中间两个处理器的处理流程是一致的。
步骤4.最后一个处理器的流程策略,参见图4
(4.1)处理器共36个内核,其中1个内核运行本地操作系统,1个内核用于接收上个处理器发送的恢复图像数据和码流数据,8个内核用于发送所有恢复图像数据,另外26个内核运行核心解码程序,在图像链表空间中新增8条通道链表。
(4.2)分配的26解码内核分别从待解码码流链表中提取码流数据进行解码工作。
(4.3)内核间恢复图像的排序,与第一个处理器中的逻辑相同,用于保证该处理器中解码恢复图像链表上的两路恢复图像是相对有序的。
(4.4)分块存储恢复图像数据,保证各路数据严格有序。
4.4a).根据通道号匹配,将接收到的前3个处理器中6路解码恢复图像挂载至对应的6条通道链表中;
4.4b).同样,将本地处理器中恢复图像链表中的图像数据挂载至对应的两条通道链表中。
(4.4)8个发送内核从对应的8条通道链表中提取恢复图像数据发送至外部设备,进而完成众核并行解码的排序工作。
最终,最后一个处理器向外部设备发送的8路帧序列是严格有序的,完成基于众核并行处理器的多路帧序列排序。
本发明的效果说明
本发明的实现方法,包括设置码流图像区分标记,接收帧号,帧号匹配,通道号匹配和分块存储,结合众核并行处理器设计了一套高速实时的多路帧序列排序方法。经过TileGX36平台的验证证明,本发明在众核并行处理架构下能对多路帧序列进行有效排序。
1.占用内存空间:只需要设置几个整型变量做为标记,如通道号、新帧号、码流和图像区分变量,实现各个处理器中不同内核间恢复图像的顺序,大大减少了传统排序算法中所需的缓冲空间,有效的提高了内存空间利用率。
2.排序时间:利用设置的全局变量和接收帧号进行匹配,匹配成功时直接将对应帧号的恢复图像存储至图像链表空间,简化传统排序的复杂度,降低了排序过程所需的时间,保证整个系统的高速实时性。
综上所述,本发明公开了一种基于众核并行处理器的多路帧序列排序方法,解决了传统并行处理系统多路帧序列排序中时间和空间复杂度高的问题。实现步骤如下:各个处理器开辟所需的链表空间;第一个处理器开辟N个线程同时接收N路码流,头信息中设置通道号,依处理器个数平均分配码流;各个处理器接收码流时设置新帧号,分配多个内核解码,通过帧号匹配实现不同内核解码后恢复图像的排序;最后一个处理器设计N条通道链表,匹配通道号将恢复图像存储至对应通道链表,再由N个线程将数据发送至外部设备。本发明的排序方法实现复杂度低,节省了内存空间和排序时间,可靠性和适应性强,可用于图像和视频并行处理系统中的多路帧序列排序。
Claims (5)
1.一种基于众核并行处理器的多路帧序列排序方法,其特征在于,包括有如下步骤:
(1)开辟链表空间:在各个处理器内存中开辟码流链表空间和图像链表空间,码流链表空间包含码流空闲链表、待解码码流链表和待发送码流链表,图像链表空间包含图像空闲链表、恢复图像链表,最后一个处理器在图像链表空间中新增N条通道链表,N为系统输入通道数;
(2)多路码流数据的接收和分配:在第一个处理器中开辟N个接收线程,使用不同端口对应接收N路输入码流,并在每路输入码流的头信息中增加通道号,用于标记数据来源,再根据处理器个数M平均分配码流,在本地处理器中解码的码流数据存储于待解码码流链表,在后续处理器中解码的码流数据存储于待发送码流链表,保证每个处理器独立处理N/M路码流,N>=M,且N/M为整数;
(3)各个处理器进行解码及排序:每个处理器对接收到的码流设置新帧号,开辟多个内核进行解码工作,每个内核处理完整单帧码流数据,设置一个全局变量global_frame_number用来匹配恢复图像的帧号,用于保证同个处理器不同内核间的帧序列顺序,匹配成功则将图像块挂载至恢复图像链表,匹配失败则等待一个时间间隔再重新进行匹配;
(4)最后一个处理器进行数据组织、排序和发送:最后一个处理器新增N条通道链表,用于存储对应通道号的恢复图像块,处理器将本地解码后的恢复图像和接收的上一个处理器发送的恢复图像根据通道号进行匹配,将恢复图像块挂载至相应的N条通道链表,保证N条通道链表中的恢复图像数据都是有序的,然后开辟N个发送线程,从对应的N条通道链表中提取恢复图像数据并使用不同端口发送至外部设备,完成基于众核并行处理器的多路帧序列排序。
2.根据权利要求1所述的基于众核并行处理器的多路帧序列排序方法,其特征在于,步骤(1)中所述的开辟链表空间,包括各个处理器中开辟所需的链表空间:
1a).各个处理器均需开辟码流链表空间和图像链表空间,码流链表空间包含码流空闲链表、待解码码流链表和待发送码流链表;图像链表空间包含图像空闲链表、恢复图像链表,所有链表中节点大小按照单帧码流或图像大小进行分块,并包含头信息;
1b)最后一个处理器的图像链表空间中的新增N条通道链表,用于存储对应通道号的恢复图像块,利用分块存储和通道号匹配的方法实现各个通道的恢复图像是有序的。
3.根据权利要求1所述的基于众核并行处理器的多路帧序列排序方法,其特征在于,步骤(2)中所述的码流数据接收和分配,具体包括有如下步骤:
2a).在第一个处理器中开辟N个接收线程,用于接收N路输入的码流数据;
2b).根据处理器个数M平均分配待解码的码流,通过匹配通道号,将对应的N/M路码流按接收顺序将单帧独立码流数据挂载至本地处理器中待解码码流链表的头节点,并从0开始设置新的接收帧号,用于后续帧号匹配;
2c)将剩余的N*(M-1)/M路码流按接收顺序将单帧独立码流数据挂载至本地处理器中待发送码流链表的空闲节点,用于发送至后续处理器进行解码。
4.根据权利要求1所述的基于众核并行处理器的多路帧序列排序方法,其特征在于,步骤(3)所述的设置一个全局变量用来匹配恢复图像的帧号,用于保证同个处理器不同内核间的帧序列顺序,具体包括:
3a).设置全局变量gobal_frame_number,初始化为0,用来指示恢复图像块在多个内核间的顺序,内核解码完成后将新帧号和全局变量进行匹配;
3b)帧号匹配相等时将恢复图像挂载至恢复图像链表,并且gobal_frame_number=gobal_frame_number+1;
3c)帧号匹配不相等时等待一个时间间隔,当匹配相等时返回执行(3b)中的操作,进行链表挂载和全局变量的自增操作;匹配不相等时继续等待,直至匹配成功。
5.根据权利要求1所述的基于众核并行处理器的多路帧序列排序方法,其特征在于,步骤(4)中所述的在最后一个处理器对恢复图像进行组织、排序和发送,具体包括:
4a).在最后一个处理器中开辟N条通道链表,根据通道号匹配,将接收到的前M-1个处理器中解码恢复图像挂载至对应的N*(M-1)/M条通道链表中,将本地处理器中解码后的恢复图像挂载至对应的N/M条通道链表中;
4b).在最后一个处理器中开辟N个发送线程,从对应的N条通道链表中提取恢复图像数据发送至外部设备,完成众核并行解码的排序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810051613.6A CN108491261A (zh) | 2018-01-19 | 2018-01-19 | 基于众核并行处理器的多路帧序列排序方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810051613.6A CN108491261A (zh) | 2018-01-19 | 2018-01-19 | 基于众核并行处理器的多路帧序列排序方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108491261A true CN108491261A (zh) | 2018-09-04 |
Family
ID=63343627
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810051613.6A Pending CN108491261A (zh) | 2018-01-19 | 2018-01-19 | 基于众核并行处理器的多路帧序列排序方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108491261A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109829542A (zh) * | 2019-01-29 | 2019-05-31 | 武汉星巡智能科技有限公司 | 基于多核处理器的多元深度网络模型重构方法及装置 |
CN110446046A (zh) * | 2019-08-19 | 2019-11-12 | 杭州图谱光电科技有限公司 | 一种基于嵌入式平台的批量图像快速解码方法 |
CN112835651A (zh) * | 2021-04-01 | 2021-05-25 | 中国空空导弹研究院 | 一种多路图像并行解码处理方法 |
CN114612287A (zh) * | 2022-03-18 | 2022-06-10 | 北京小米移动软件有限公司 | 图像处理方法、装置及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20110071204A (ko) * | 2009-12-21 | 2011-06-29 | 한국전자통신연구원 | 웨이블릿 변환 기반의 jpeg2000에서의 병렬 처리 방법 |
CN105263023A (zh) * | 2015-10-26 | 2016-01-20 | 西安电子科技大学 | 基于高速解码平台的网络码流实时接收方法 |
CN105376583A (zh) * | 2015-04-07 | 2016-03-02 | 佛山世寰智能科技有限公司 | 一种按行交错划分任务和数据的多核并行视频解码方法 |
CN105407356A (zh) * | 2015-11-27 | 2016-03-16 | 西安电子科技大学 | 高速实时jpeg2000解码方法 |
CN107483964A (zh) * | 2017-08-07 | 2017-12-15 | 山东交通学院 | 一种利用gpu实现jpeg2000解压缩算法中逆小波变换的加速方法 |
-
2018
- 2018-01-19 CN CN201810051613.6A patent/CN108491261A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20110071204A (ko) * | 2009-12-21 | 2011-06-29 | 한국전자통신연구원 | 웨이블릿 변환 기반의 jpeg2000에서의 병렬 처리 방법 |
CN105376583A (zh) * | 2015-04-07 | 2016-03-02 | 佛山世寰智能科技有限公司 | 一种按行交错划分任务和数据的多核并行视频解码方法 |
CN105263023A (zh) * | 2015-10-26 | 2016-01-20 | 西安电子科技大学 | 基于高速解码平台的网络码流实时接收方法 |
CN105407356A (zh) * | 2015-11-27 | 2016-03-16 | 西安电子科技大学 | 高速实时jpeg2000解码方法 |
CN107483964A (zh) * | 2017-08-07 | 2017-12-15 | 山东交通学院 | 一种利用gpu实现jpeg2000解压缩算法中逆小波变换的加速方法 |
Non-Patent Citations (2)
Title |
---|
LIU KAI等: "A HIGH-PERFORMANCE VLSI ARCHITECTURE OF EBCOT BLOCK CODING IN JPEG2000", 《JOURNAL OF ELECTRONICS (CHINA)》 * |
程如飞: "基于Tilera多核处理器的图像并行处理平台设计", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109829542A (zh) * | 2019-01-29 | 2019-05-31 | 武汉星巡智能科技有限公司 | 基于多核处理器的多元深度网络模型重构方法及装置 |
CN109829542B (zh) * | 2019-01-29 | 2021-04-16 | 武汉星巡智能科技有限公司 | 基于多核处理器的多元深度网络模型重构方法及装置 |
CN110446046A (zh) * | 2019-08-19 | 2019-11-12 | 杭州图谱光电科技有限公司 | 一种基于嵌入式平台的批量图像快速解码方法 |
CN110446046B (zh) * | 2019-08-19 | 2021-04-27 | 杭州图谱光电科技有限公司 | 一种基于嵌入式平台的批量图像快速解码方法 |
CN112835651A (zh) * | 2021-04-01 | 2021-05-25 | 中国空空导弹研究院 | 一种多路图像并行解码处理方法 |
CN112835651B (zh) * | 2021-04-01 | 2023-10-20 | 中国空空导弹研究院 | 一种多路图像并行解码处理方法 |
CN114612287A (zh) * | 2022-03-18 | 2022-06-10 | 北京小米移动软件有限公司 | 图像处理方法、装置及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108491261A (zh) | 基于众核并行处理器的多路帧序列排序方法 | |
US10606787B2 (en) | Methods and apparatuses for providing data received by a state machine engine | |
CN103262030B (zh) | 经由动态聚合操作的快速且线性化并发优先级队列 | |
DE3751514T2 (de) | Adressieranordnung für RAM-Puffer-Steuereinrichtung. | |
CN109997154A (zh) | 信息处理方法及终端设备 | |
CN105407356B (zh) | 高速实时jpeg2000解码方法 | |
KR100538727B1 (ko) | 멀티 프로세서 시스템 | |
CN103988212A (zh) | 用于在状态机中路由的方法及系统 | |
CN111694643B (zh) | 一种面向图神经网络应用的任务调度执行系统及方法 | |
CN106407463A (zh) | 一种基于Hadoop的图像处理方法及系统 | |
CN107193539A (zh) | 多线程并发处理方法和多线程并发处理系统 | |
CN111338695A (zh) | 基于流水线技术的数据处理方法及相关产品 | |
US20230214338A1 (en) | Data moving method, direct memory access apparatus and computer system | |
CN102158694A (zh) | 一种基于gpu的遥感图像解压缩方法 | |
CN106454354A (zh) | 一种avs2并行编码处理系统及方法 | |
CN105874436A (zh) | 用于自主存储器的方法及系统 | |
CN111860807B (zh) | 分形计算装置、方法、集成电路及板卡 | |
CN111783933A (zh) | 一种对深度卷积神经网络计算加速的、结合主存储器的数据载入装置的硬件电路设计及方法 | |
CN103209328A (zh) | 多源卫星图像实时在线处理技术方法及装置 | |
CN110324204A (zh) | 一种在fpga中实现的高速正则表达式匹配引擎及方法 | |
Merigot et al. | A pyramidal system for image processing | |
CN108881917B (zh) | 基于高速实时解码平台的并行解码快速排序方法 | |
CN114691566A (zh) | Ai模型的运行方法、加载方法、装置及ic芯片 | |
US20230214339A1 (en) | Data moving method for direct memory access apparatus | |
US20230214340A1 (en) | Data moving method for direct memory access apparatus |
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: 20180904 |