CN110958183A - 一种异构系统的带宽利用率提升方法及系统 - Google Patents
一种异构系统的带宽利用率提升方法及系统 Download PDFInfo
- Publication number
- CN110958183A CN110958183A CN201911018027.2A CN201911018027A CN110958183A CN 110958183 A CN110958183 A CN 110958183A CN 201911018027 A CN201911018027 A CN 201911018027A CN 110958183 A CN110958183 A CN 110958183A
- Authority
- CN
- China
- Prior art keywords
- data packet
- threshold
- task
- splitting
- bandwidth
- 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
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/36—Flow control; Congestion control by determining packet size, e.g. maximum transfer unit [MTU]
- H04L47/365—Dynamic adaptation of the packet size
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/29—Flow control; Congestion control using a combination of thresholds
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9057—Arrangements for supporting packet reassembly or resequencing
Abstract
本发明提出一种异构系统的带宽利用率提升方法及系统,包括:获取包含CPU和加速器核心的异构系统,其中CPU通过高速互联接口与加速器相连;获取带宽资源利用率的性能,根据性能确定带宽充分利用时数据包大小的阈值;按序从任务缓存池中获取待执行任务作为当前任务,判断当前任务的数据量是否小于阈值,若是,则将当前任务作为小数据包,按照任务缓存池中任务顺序依次提取待执行任务,并通过带宽累加器和小数据包累加,得到累加数据包,直到累加数据包大小大于等于阈值,将当前累加数据包打包发送至加速器核心,否则将当前任务作为大数据包,大数据包通过与阈值的比较,进行任务拆分,得到多个拆分结果,将多个拆分结果依次打包,发送至加速器核心。
Description
技术领域
本发明涉及异构系统领域和高速互联领域,具体地说,本发明涉及一种提升异构系统高速互联带宽利用率的方法和系统。
背景技术
随着领域专用加速器的广泛应用,例如:专用于处理图像和视频数据的GPU,加速数据库查询的FPGA,加速深度学习算法的专用芯片TPU等,基于CPU-加速器架构的异构系统提供了强大的计算能力,在越来越多的应用领域中发挥着重要作用。为提升这一类加速器的可移植性,扩大其应用场景,加速器与CPU之间的互联主要是依靠标准高速互联接口,如PCIe(PCI-Express,peripheral component interconnect express)。PCIe是一种高速串行计算机扩展总线标准,主要优势就是数据传输速率高。从PCIe1.0(x1)版本到PCIe4.0(x1)版本,带宽实现了从250MB/s到1.969GB/s的提升,其带宽大约每一代版本会翻一番。另一方面,多通道插槽的扩展,使得PCIe带宽进一步取得相比于单通道的提升,如多通道x4、x8和x16的PCIe4.0版本峰值带宽分别可达到7.877GB/s、15.754GB/s和31.508GB/s。
通过PCIe总线对异构系统中的从设备进行数据读写主要是通过直接存储器存取(direct memory access,DMA)进行的,此方法效率高,控制简单,传输速率快。为了提升对异构系统的整体利用效率,往往会对大数据量的数据包进行划分,以最大化利用传输带宽和加速器从设备的计算能力。优化的方法是将一个大数据包拆分成几个小数据包,依次通过PCIe传输到加速器。这样的方法能够划分数据传输和任务执行以两级或多级流水线的方式在异构系统上并行执行,提高系统的吞吐量。然而在实际的应用中,虽然看起来小数据包的传输充分利用了现有的带宽资源,但小数据包在PCIe传输时会带来带宽利用率降低的问题。
此外,实际应用中的计算任务的组成是复杂的,即由每一个计算任务所需的数据包大小是不同的。对一组差异大的数据量的任务集合进行调度和划分是复杂的。静态的任务调度和划分,即按照某一个固定数据量大小对任务集合进行划分时,往往会在最后冗余很小的一个数据块,导致计算分配不均衡。在任务集合执行的最后,对这一小块数据的传输和执行过程,依然需要调动全部的带宽和从设备的开销,显著降低系统效率。另一种方法是动态划分,该方法可以一定程度上优化任务的划分,解决分配不均衡的问题。现有的划分方法主要是依据加速器本身的负载能力和计算能力对任务集合进行划分和分配,划分的目标是满足异构系统的负载平衡,这一类方法没有考虑对PCIe的利用率的影响。
无论是静态的划分调度策略还是动态的划分调度策略,这些方法都忽略了对于异构系统带宽资源的利用和评估。特别是针对小数据量传输时的带宽利用率低的问题。这些方法都是构建在一个假设之上,即PCIe的带宽足够高,且资源始终充足足以满足数据传输的需求。然而事实上,通过实验验证,实测的数据传输过程表明,当数据量小于1GB时,数据通过PCIe3.0版本的互联在CPU和加速器之间传输时,PCIe的带宽无法被异构系统充分利用。其中的原因主要是PCIe的控制信号和传输启动开销。这一事实与调度方案的假设相违背。
发明内容
本发明的目的是解决上述现有技术中对PCIe带宽资源的低利用率问题。本发明所要解决的技术问题是根据实际异构系统的数据传输的带宽利用率的变化,提出了一种优化的调度装置和调度策略以充分利用有限的互联带宽。
针对现有技术的不足,本发明提出一种异构系统的带宽利用率提升方法,其中包括:
步骤1、获取包含中央处理器和多个加速器核心的异构系统,其中该中央处理器通过高速互联接口与每一个加速器相连;
步骤2、通过对高速互联接口的测试,得到该高速互联接口的带宽资源利用率的性能,再根据该性能确定带宽充分利用时数据包大小的阈值;
步骤3、并按序从任务缓存池中获取待执行任务作为当前任务,判断该当前任务的数据量是否小于该阈值,若是,则将该当前任务作为小数据包,执行步骤4,否则将该当前任务作为大数据包,执行步骤5;
步骤4、按照该任务缓存池中任务顺序依次提取待执行任务,并通过带宽累加器和该小数据包累加,得到累加数据包,直到累加数据包大小大于等于该阈值,将当前该累加数据包打包发送至该加速器核心;
步骤5、该大数据包通过与该阈值的比较,进行任务拆分,得到多个拆分结果,将该多个拆分结果依次打包,发送至该加速器核心。
所述的异构系统的带宽利用率提升方法,其中该步骤5中任务拆分采用严格阈值拆分,具体包括:按照“子数据包=大数据包/阈值”拆分数据包,拆分后得到由多个拆分结果组成的集合{n个大小相同的子数据包,第n+1个残差数据包};其中,大小相同的n个数据包直接发送到加速器核心,第n+1个残差数据包按照该步骤4中小数据包的方式进行处理。
所述的异构系统的带宽利用率提升方法,其中该步骤5中任务拆分采用放松阈值拆分,具体包括:
步骤3b1、依次增加放松阈值64MB;
步骤3b2、判断增加的放松阈值是否小于512MB,若小于,则执行计算拆分数据包大小“子数据包=大数据包/放松阈值”并执行步骤3b3,若增加的放松阈值大于512MB,则执行步骤3b5;
步骤3b3,判定拆分后的子数据包大小是否满足判定准则:对于第n+1个残差数据包的大小低于阈值的一半,若满足执行步骤3b4,否则返回执行步骤3b1;
步骤3b4,若满足判定准则,则拆分后,将大小相同的数据包直接发送到加速器核心;最后的残差数据包直接与第n个数据包合并发送到加速器核心;
骤3b5,按照严格阈值拆分方法,此时的严格阈值设定为当前最大放松阈值。
所述的异构系统的带宽利用率提升方法,其中步骤2包括:
在基于PCIe互联的异构系统中,通过数据传输测试PCIe在数据传输过程中的实际带宽,得到数据包大小和带宽利用率之间的对应关系,并根据该对应关系得到带宽利用率曲线,以确定带宽充分利用时的数据包大小的阈值。
本发明还提出了一种异构系统的带宽利用率提升系统,其中包括:
模块1、获取包含中央处理器和多个加速器核心的异构系统,其中该中央处理器通过高速互联接口与每一个加速器相连;
模块2、通过对高速互联接口的测试,得到该高速互联接口的带宽资源利用率的性能,再根据该性能确定带宽充分利用时数据包大小的阈值;
模块3、并按序从任务缓存池中获取待执行任务作为当前任务,判断该当前任务的数据量是否小于该阈值,若是,则将该当前任务作为小数据包,执行模块4,否则将该当前任务作为大数据包,执行模块5;
模块4、按照该任务缓存池中任务顺序依次提取待执行任务,并通过带宽累加器和该小数据包累加,得到累加数据包,直到累加数据包大小大于等于该阈值,将当前该累加数据包打包发送至该加速器核心;
模块5、该大数据包通过与该阈值的比较,进行任务拆分,得到多个拆分结果,将该多个拆分结果依次打包,发送至该加速器核心。
所述的异构系统的带宽利用率提升系统,其中该模块5中任务拆分采用严格阈值拆分,具体包括:按照“子数据包=大数据包/阈值”拆分数据包,拆分后得到由多个拆分结果组成的集合{n个大小相同的子数据包,第n+1个残差数据包};其中,大小相同的n个数据包直接发送到加速器核心,第n+1个残差数据包按照该模块4中小数据包的方式进行处理。
所述的异构系统的带宽利用率提升系统,其中该模块5中任务拆分采用放松阈值拆分,具体包括:
模块3b1、依次增加放松阈值64MB;
模块3b2、判断增加的放松阈值是否小于512MB,若小于,则执行计算拆分数据包大小“子数据包=大数据包/放松阈值”并执行模块3b3,若增加的放松阈值大于512MB,则执行模块3b5;
模块3b3,判定拆分后的子数据包大小是否满足判定准则:对于第n+1个残差数据包的大小低于阈值的一半,若满足执行模块3b4,否则返回执行模块3b1;
模块3b4,若满足判定准则,则拆分后,将大小相同的数据包直接发送到加速器核心;最后的残差数据包直接与第n个数据包合并发送到加速器核心;
骤3b5,按照严格阈值拆分系统,此时的严格阈值设定为当前最大放松阈值。
所述的异构系统的带宽利用率提升系统,其中模块2包括:
在基于PCIe互联的异构系统中,通过数据传输测试PCIe在数据传输过程中的实际带宽,得到数据包大小和带宽利用率之间的对应关系,并根据该对应关系得到带宽利用率曲线,以确定带宽充分利用时的数据包大小的阈值。
由以上方案可知,本发明的优点在于:
本发明考虑了在任务拆分和组合时,由于数据量大小对带宽的利用率的差别,与其他提升带宽利用率的方法相比,没有引入额外的硬件开销,且无需新的数据传输规则。本发明支持大数据包的拆分,从而有效的提升数据传输和计算任务的流水线操作,最大化加速器计算资源的利用率。与现有对计算任务的拆分和打包技术相比,本发明充分考虑了传输的数据包大小对传输带宽的利用效率的差异,能够通过简单的打包分组的方法,使得数据包传输能够充分利用高速互联的有效带宽,提升系统的整体性能。
附图说明
图1为本发明的系统结构示意图;
图2为本发明调度装置的框图;
图3为本发明实施例对小数据包任务分组打包的方法流程图;
图4为本发明实施例对大数据包任务拆分的一种方法流程图;
图5为本发明实施例对大数据包任务拆分的另一种方法流程图;
图6为本发明实施例提供的一种调度策略流程图;
图7为本发明实施例提供的离线系统分析的方法流程图;
图8为本发明实施例提供的几种可能的量化关系拟合示意图;
图9为本发明实施例提供的在线任务调度的方法流程图;
图10为本发明实施例提供的一种调度策略流程图;
图11为本发明实施例提供的另一种调度策略流程图;
图12为本发明实施例提供的另一种调度策略流程图。
具体实施方式
现有技术中的缺陷是仅考虑了计算任务和加速器从设备本身特性,而没有考虑实际异构系统中高速互联带宽的资源不足的问题,以及忽略了实际数据在PCIe传输时存在带宽利用率不足的现象而导致的。这是由于在设计任务调度和划分策略时,为抽象问题而进行了一定的化简和假设而忽略的。发明人经过对实际数据传输的实测实验发现,解决该项缺陷可以通过一种更合理的动态或静态的划分调度方法来实现。即在基于PCIe互联的异构系统中,通过数据传输实验,测试PCIe在数据传输过程中的实际带宽,再根据该性能评估确定带宽充分利用时的数据包大小的阈值,例如根据实际带宽性能,得到传输不同大小的数据包时实际的带宽利用率,根据所得到的带宽利用率曲线,确定带宽充分利用时的数据包大小的阈值。依照该系统实测阈值进行任务的合离调度和划分,从而提升异构系统带宽利用率。
为实现上述目的,本发明基于一种任务调度装置,包括:
任务缓存池,用于缓存一组计算任务的信息,包括计算任务的优先级、传输数据量、计算时间等信息。任务属性的数据结构是一组结构体。任务缓存池的组织形式可能是一个链表,或一个查找表,或一个队列,或其他数据结构。
带宽累加器,用于统计计算任务的带宽累加情况。带宽累加器的组织形式是一个两输入的加法器。
阈值比较器,与带宽累加器共同作用,用于比较小数据包带宽累加值与阈值的大小关系。一个单独的阈值比较器,用于比较大数据包拆分后的最后一个残差数据包的带宽与严格阈值的大小关系。阈值比较器的组织形式是一个比较器。
其中任务缓存池1是包含一组由CPU主机产生的计算任务集合。任务缓存池1直接与一个带宽累加器2和一个阈值比较器4相连。其中带宽累加器2主要是用于对小数据包的累加;其中阈值比较器4主要处理对大数据包划分时的阈值比较。此外,阈值比较器4由于可能会在划分时拆分得到一个残差数据包,因此该比较器的输出还需要与带宽累加器2相连。带宽累加器2后序链接一个阈值比较器3,其中阈值比较器3是用于对累加的数据包大小与数据包阈值进行判断比较。阈值比较器3和阈值比较器4后序直接输出任务调度和划分结果。
本发明提出一种可以提升异构系统带宽利用率的方法,包括以下步骤:
步骤1,对于到来的一批计算任务进行排序,排序的依据是任务的执行优先级,其中,优先级的定义方式是计算任务自身属性。若无优先级需求,则不进行此步骤。计算任务的优先级可以认为是计算任务按照请求到来的先后次序排序,依次顺序执行。优先级还可以通过计算任务的响应需求时间排序,或其他优先级的定义方式。计算任务的属性信息包括计算任务的优先级、传输数据量、计算时间等,在任务缓存池中暂存。
其中,对计算任务的排序方法,依照任务缓存池的数据结构而定,例如对链表的插入和删除,查找表的插入和删除,或队列的操作。
步骤2,对于小数据包的数据,按照排好序的任务顺序依次在带宽累加器2中累加,直到阈值比较器3判断累加的数据包大小恰好达到或者超过严格阈值,得到调度结果,将这一批数据打包发送到加速器从设备。其中小数据包是指,其大小小于阈值的数据包。
步骤3,对于大数据包的数据拆分和调度。按照排好序的任务顺序依次在阈值比较器4中通过与给定阈值进行比较和分析,按照拆分规则得到对大数据包进行拆分,将这一批拆分后的子数据包按照原任务排序的顺序,发送到加速器从设备。
拆分和调度可以按照步骤3a严格阈值拆分,子数据包=大数据包/严格阈值。还可以按照步骤3b放松阈值对大数据包拆分拆分,子数据包=大数据包/放松阈值。
步骤3a严格阈值拆分过程包括如下子步骤:
按照“子数据包=大数据包/严格阈值”拆分数据包。拆分后,可以得到一组子任务集合{n个大小相同的子数据包,第n+1个残差数据包}。大小相同的n个数据包直接发送到加速器从设备;第n+1个残差数据包按照小数据包的方式进行处理。
步骤3b放松阈值的拆分过程包括如下子步骤:
步骤3b1,依次增加放松阈值64MB。
步骤3b2,判断增加的放松阈值是否小于512MB。若小于,则执行计算拆分数据包大小“子数据包=大数据包/放松阈值”。若增加的放松阈值大于512MB,则执行步骤3b5。
步骤3b3,判定拆分后的子数据包大小是否满足判定准则:对于第n+1个残差数据包有如下要求,使得拆分后的残差数据包,即mod(大数据包/放松阈值)的大小低于阈值的一半。
步骤3b4,满足判定准则,则拆分后,将大小相同的数据包直接发送到加速器从设备;最后的残差数据包直接与第n个数据包合并发送到加速器从设备。不满足判定准则,则返回执行步骤3b1。
步骤3b5,始终不满足判定准则,则按照严格阈值拆分方法,此时的严格阈值设定为当前最大放松阈值。
上述步骤可以按照实际应用场景的不同需求进行组合。在一个实施例中,即实际应用中存在计算优先级的需求时,则执行步骤1,步骤2和步骤3。在另一个实施例中,即无计算优先级的需求,可以仅执行步骤2和步骤3。在另一个实施例中,即无计算优先级的需求,且计算任务的组合中含有小数据包,可以仅执行步骤2。在另一个实施例中,即无计算优先级的需求,且计算任务的组合中含有大数据包,可以仅执行步骤3,是否执行步骤2需要根据拆分后残差数据包的大小结果判定。
其中,所述的小数据量指大小低于带宽满负载的数据包大小阈值的数据包,所述的大数据量指大小高于带宽满负载的数据包大小阈值的数据包。所述的阈值,即通过实际系统实测所得的带宽资源被充分利用的数据包大小的最小值,根据其中一个具体的实施例,PCIe带宽充分利用的数据包大小阈值实测为1024MB。在其他实施例中,PCIe带宽充分利用的数据包大小阈值与实际系统中的实验测试所得结果一致。所述的阈值拆分标准,是指按照严格阈值,或者可以按照稍大于阈值的某一个值的拆分标准对数据包进行拆分,例如根据其中一个具体的实施例,放松阈值标准可以设定为1024MB+64MB。根据其它的具体实施例,放松阈值标准还可以设定为1024MB+128MB或累加直至1024MB+512MB。以上实例解决方法取决于应用场景的实际需求。
本发明所要解决的技术问题是根据实际测量数据传输的带宽利用率的变化,提出一种优化调度策略以充分利用有限的互联带宽资源。面向的平台是基于PCIe高速互联接口的异构计算系统,如图1所示。
本发明包括一种充分利用有限的互联带宽资源的优化调度策略的装置,如图2所示。包括1计算任务资源池,用于缓存一组计算任务的信息,包括计算任务的优先级、传输数据量、计算时间等;带宽累加器2,用于小数据包的带宽需求的累加,统计带宽累加情况。阈值比较器3,与带宽累加器2共同作用,用于比较小数据包带宽累加值与阈值的大小关系,当累加带宽超过阈值,则将这一组小数据包打包发送到加速器从设备。一个单独的阈值比较器4,用于比较大数据包放松阈值拆分后的最后一个残差数据包的带宽与严格阈值的大小关系。输出的结果可直接按照拆分规则获得数据包拆分和发送的调度结果,也可以按照拆分规则将残差数据包发送到小数据包的带宽累加器中进行累加。
其中,任务的数据结构是一个结构体。缓存池的组织形式可能是一个链表,或一个查找表,或一个队列,或其他数据结构。带宽累加器的组织形式是一个两输入的加法器。阈值比较器的组织形式是一个比较器。
其中,任务缓存池1是包含一组由CPU主机产生的计算任务集合。任务缓存池1直接与一个带宽累加器2和一个阈值比较器4相连。其中带宽累加器2主要是用于对小数据包的累加;其中阈值比较器4主要处理对大数据包划分时的阈值比较。此外,阈值比较器4由于可能会在划分时拆分得到一个残差数据包,因此该比较器的输出还需要与带宽累加器2相连。带宽累加器2后序链接一个阈值比较器3,其中阈值比较器3是用于对累加的数据包大小与数据包阈值进行判断比较。阈值比较器3和阈值比较器4后序直接输出任务调度和划分结果。
本发明的一种实施例是针对仅包含小数据包的计算任务的调度方法,如图3所示。步骤2,对于小数据包的数据,按照排好序的任务顺序依次在带宽累加器2中累加,直到阈值比较器3判断累加的数据包大小恰好达到或者超过严格阈值,得到调度结果,将这一批数据打包发送到加速器从设备。
本发明的另一种实施例是针对仅包含大数据包的计算任务的调度方法,一种方法是对于大数据包的数据可以按照步骤3a严格阈值拆分,如图4所示。得到的子数据包大小为:子数据包=大数据包/严格阈值,拆分后得到一组子任务集合{n个大小相同的子数据包,第n+1个残差数据包}。其中,大小相同的n个数据包直接发送到加速器从设备;第n+1个残差数据包重新统计信息,放入任务缓存池中按照小数据包的方式进行处理。
本发明的另一种实施例是针对仅包含大数据包的计算任务的调度方法,另一种方法是对于大数据包的数据可以按照步骤3b放松阈值拆分,如图5所示。得到的子数据包大小为:子数据包=大数据包/放松阈值,放松阈值的拆分过程包括如下子步骤:
步骤3b1,依次增加放松阈值64MB。
步骤3b2,判断增加的放松阈值是否小于512MB。若小于,则执行步骤3b3。若增加的放松阈值大于512MB,则执行步骤3b5。
步骤3b3,判定拆分后的子数据包大小是否满足判定准则:对于第n+1个残差数据包有如下要求,使得拆分后的残差数据包,即mod(大数据包/放松阈值)的大小低于阈值的一半。
步骤3b4,满足判定准则,则拆分后,将大小相同的数据包直接发送到加速器从设备;最后的残差数据包直接与第n个数据包合并发送到加速器从设备。不满足判定准则,则返回执行步骤3b1。
步骤3b5,始终不满足判定准则,则按照严格阈值拆分方法,此时的严格阈值设定为当前最大放松阈值。
本发明的一种实施例可参照图6。对所有计算缓存池中的计算任务进行排序,排序的原则按照计算任务的优先级特征为依据。计算任务的优先级可以认为是计算任务按照请求到来的先后次序排序,依次顺序执行。优先级还可以通过计算任务的响应需求时间排序,或其他依据任务属性计算组合而得到的用户自定义的计算任务的优先级。其中,对计算任务的排序方法,依照任务缓存池的数据结构而定,例如对链表的插入和删除,查找表的插入和删除,或队列的操作。若计算任务本身没有优先级的属性需求,则按照任务请求时的先后顺序,依次调度。
在一个实施例中,即实际应用中存在计算优先级的需求时,则执行步骤1,步骤2和步骤3。在另一个实施例中,即无计算优先级的需求,可以仅执行步骤2和步骤3。在另一个实施例中,即无计算优先级的需求,且计算任务的组合中含有小数据包,可以仅执行步骤2。在另一个实施例中,即无计算优先级的需求,且计算任务的组合中含有大数据包,可以仅执行步骤3,是否执行步骤2需要根据拆分后残差数据包的大小结果判定。
其中,所述的小数据量指大小低于带宽满负载的数据包大小阈值的数据包,所述的大数据量指大小高于带宽满负载的数据包大小阈值的数据包。所述的阈值,即通过实际系统实测所得的带宽资源被充分利用的数据包大小的最小值,根据其中一个具体的实施例,PCIe带宽充分利用的数据包大小阈值实测为1024MB。在其他实施例中,PCIe带宽充分利用的数据包大小阈值与实际系统中的实验测试所得结果一致。所述的阈值拆分标准,是指按照严格阈值,或者可以按照稍大于阈值的某一个值的拆分标准对数据包进行拆分,例如根据其中一个具体的实施例,放松阈值标准可以设定为1024MB+64MB。根据其它的具体实施例,放松阈值标准还可以设定为1024MB+128MB或累加直至1024MB+512MB。
其中,上述步骤1中对到来的一批计算任务进行排序的具体过程如下:
排序的过程中考虑到计算任务通过PCIe进行顺序传输过程,从而达到提升系统吞吐率,提高系统利用效率的的技术效果。
本发明提供了一种任务调度方法,包括:
步骤S1,异构系统的离线建模分析。测量数据通过PCIe接口传输的时间和数据量大小,计算得到异构系统的带宽特征。通过编写软件实现的加速器模拟器,手动注入不同规模的计算任务,利用模拟器的模拟实验得到异构处理核心的计算执行能力。
其中,所述的异构系统是基于高速互联接口的CPU-加速器架构的异构系统。所述的高速互联接口是异构系统中通用的PCIe接口。所述的加速器可以是GPU、FPGA,也可以是其他专用的加速芯片。所述的加速器模拟器是通过C语言或其他高层语言编程实现的,具体的模拟器参数配置根据加速器的实际结构决定。
进一步的,所述步骤S1包含的子操作如下:
步骤S11,设置不同数据量的不同操作任务,作为离线测试的任务样本。
步骤S12,按照加速器的实际功能结构,通过C语言或其他高层编程语言实现加速器的模拟器。
步骤S13,将离线的测试样本依次加载到加速器模拟器,记录不同数据量下不同计算任务的执行时间。执行时间通常以时钟周期数统计。
步骤S14,将离线的测试样本通过高速互联接口按照直接存储器存取(directmemory access,DMA)的方式依次发送到加速器端,实测在实际异构系统的传输过程,记录不同数据量的带宽需求。
步骤S15,分别拟合得到的数据量与计算任务之间的定量关系,以及数据量与带宽需求之间的定量关系。该定量关系可能是线性关系、二次曲线、阶梯函数或者常熟关系等。
步骤S2,在线任务调度决策。根据获取的计算任务的特征,按照的原则对任务传输进行重排序,通过高速互联接口传输到加速器。
其中,所述的任务特征是指通过异构系统编程语言的数据传输指令获取计算任务的数据量大小特征,以及根据步骤S1中模拟器得到的计算执行时间和数据量之间的关系,得到相应的执行时间特征。所述的异构系统编程语言可以是异构系统通用的OpenCL,或者面向GPU的CUDA等异构编程语言。
进一步的,所述步骤S2具体操作如下:
步骤S21,获取一批待调度的任务,在代码中进行插桩,获取数据传输和计算任务部署的语句中的传输数据量大小。
步骤S22,根据离线系统分析所得的量化关系,得到某数据量下特定计算任务的执行时间和带宽需求。
步骤S23,对给定的一组任务,判定其中是否有实时性要求严格的计算任务,对于这部分任务赋予其高的执行和传输的优先级。
步骤S24,剩下的一部分计算任务,即没有实时性要求的计算任务,按照计算任务执行时间与带宽需求之间的关系,对这一批计算任务进行重排序。排序的依据可以是,带宽需求的升序,也可以是总执行时间降序,或者可以是带宽需求和执行时间之间的比例关系,即平均单位执行时间内的带宽需求,或其他与带宽需求相关的排序标准。
为让本发明的上述特征和效果能阐述的更明确易懂,下文特举实施例,并配合说明书附图作详细说明如下。
本发明所要解决的技术问题是根据实际测量数据传输的带宽利用率的变化,提出一种优化调度策略以充分利用有限的互联带宽资源。面向的平台是基于PCIe高速互联接口的异构计算系统,如图1所示。异构系统是基于高速互联接口的CPU-加速器架构的异构系统。所述的高速互联接口是异构系统中通用的PCIe接口。所述的加速器可以是GPU、FPGA,也可以是其他专用的加速芯片。
本发明提供了一种离线的任务分析方法,如图7所示,包括以下步骤S:
步骤S11,设置不同数据量的不同操作任务,作为离线测试的任务样本。
步骤S12,按照加速器的实际功能结构,通过C语言或其他高层编程语言实现加速器的模拟器。
步骤S13,将离线的测试样本依次加载到加速器模拟器,记录不同数据量下不同计算任务的执行时间。执行时间通常以时钟周期数统计。
步骤S14,将离线的测试样本通过高速互联接口按照成组数据传送方式(directmemory access,DMA)依次发送到加速器端,实测在实际异构系统的传输过程,记录不同数据量的带宽需求。
步骤S15,分别拟合得到的数据量与计算任务之间的定量关系,以及数据量与带宽需求之间的定量关系。该定量关系可能是线性关系、二次曲线、阶梯函数或者常熟关系,如图8所示。
本发明在一个实施例中,提供了一种在线的任务调度方法,如图9所示,包括以下步骤S:
步骤S21,获取一批待调度的任务,这一批任务时通过异构系统编程语言编写的,可以是异构系统通用的OpenCL,或者面向GPU的CUDA等异构编程语言。在该代码中进行插桩,获取数据传输和计算任务部署的语句中的传输数据量大小。
步骤S22,按照离线系统分析所得的量化关系,用获取数据传输和计算任务部署的语句中的传输数据量大小,计算得到某数据量下特定计算任务的执行时间和带宽需求。
步骤S23,对给定的一组任务,判定其中是否有实时性要求严格的计算任务,对于这部分任务赋予其高的执行和传输的优先级。
步骤S24,对于剩下的一部分计算任务,即没有实时性要求的计算任务,按照计算任务执行时间与带宽需求之间的关系,对这一批计算任务进行重排序。
本发明的一种实施例的计算任务调度方法的排序的依据是按照计算任务的带宽需求升序排列,如图10所示。计算任务的带宽需求是通过步骤S23中获取的计算任务的数据量大小计算所得。
本发明的一种实施例的计算任务调度方法的排序的依据是按照计算任务的执行时间降序排列,如图11所示。计算任务的执行时间是通过步骤S23中获取的计算任务的执行时间与数据传输时间的求和。其中,数据的传输时间可以通过数据传输的带宽需求与实际带宽之间的比值计算所得。
本发明的一种实施例的计算任务调度方法的排序的依据是按照计算任务的带宽需求与执行时间之间的比值升序排列,如图12所示。计算任务的执行时间是通过步骤S23中获取的计算任务的执行时间与数据传输时间的求和。其中,数据的传输时间可以通过数据传输的带宽需求与实际带宽之间的比值计算所得。
以下为与上述方法实施例对应的系统实施例,本实施方式可与上述实施方式互相配合实施。上述实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在上述实施方式中。
本发明还提出了一种异构系统的带宽利用率提升系统,其中包括:
模块1、获取包含中央处理器和多个加速器核心的异构系统,其中该中央处理器通过高速互联接口与每一个加速器核心相连;
模块2、通过对高速互联接口的测试,得到该高速互联接口的带宽资源利用率的性能,再根据该性能确定带宽充分利用时数据包大小的阈值;
模块3、并按序从任务缓存池中获取待执行任务作为当前任务,判断该当前任务的数据量是否小于该阈值,若是,则将该当前任务作为小数据包,执行模块4,否则将该当前任务作为大数据包,执行模块5;
模块4、按照该任务缓存池中任务顺序依次提取待执行任务,并通过带宽累加器和该小数据包累加,得到累加数据包,直到累加数据包大小大于等于该阈值,将当前该累加数据包打包发送至该加速器核心;
模块5、该大数据包通过与该阈值的比较,进行任务拆分,得到多个拆分结果,将该多个拆分结果依次打包,发送至该加速器核心。
所述的异构系统的带宽利用率提升系统,其中该模块5中任务拆分采用严格阈值拆分,具体包括:按照“子数据包=大数据包/阈值”拆分数据包,拆分后得到由多个拆分结果组成的集合{n个大小相同的子数据包,第n+1个残差数据包};其中,大小相同的n个数据包直接发送到加速器核心,第n+1个残差数据包按照该模块4中小数据包的方式进行处理。
所述的异构系统的带宽利用率提升系统,其中该模块5中任务拆分采用放松阈值拆分,具体包括:
模块3b1、依次增加放松阈值64MB;
模块3b2、判断增加的放松阈值是否小于512MB,若小于,则执行计算拆分数据包大小“子数据包=大数据包/放松阈值”并执行模块3b3,若增加的放松阈值大于512MB,则执行模块3b5;
模块3b3,判定拆分后的子数据包大小是否满足判定准则:对于第n+1个残差数据包的大小低于阈值的一半,若满足执行模块3b4,否则返回执行模块3b1;
模块3b4,若满足判定准则,则拆分后,将大小相同的数据包直接发送到加速器核心;最后的残差数据包直接与第n个数据包合并发送到加速器核心;
骤3b5,按照严格阈值拆分系统,此时的严格阈值设定为当前最大放松阈值。
所述的异构系统的带宽利用率提升系统,其中模块2包括:
在基于PCIe互联的异构系统中,通过数据传输测试PCIe在数据传输过程中的实际带宽,得到数据包大小和带宽利用率之间的对应关系,并根据该对应关系得到带宽利用率曲线,以确定带宽充分利用时的数据包大小的阈值。
Claims (8)
1.一种异构系统的带宽利用率提升方法,其特征在于,包括:
步骤1、获取包含中央处理器和多个加速器核心的异构系统,其中该中央处理器通过高速互联接口与每一个加速器核心相连;
步骤2、通过对高速互联接口的测试,得到该高速互联接口的带宽资源利用率的性能,再根据该性能确定带宽充分利用时数据包大小的阈值;
步骤3、并按序从任务缓存池中获取待执行任务作为当前任务,判断该当前任务的数据量是否小于该阈值,若是,则将该当前任务作为小数据包,执行步骤4,否则将该当前任务作为大数据包,执行步骤5;
步骤4、按照该任务缓存池中任务顺序依次提取待执行任务,并通过带宽累加器和该小数据包累加,得到累加数据包,直到累加数据包大小大于等于该阈值,将当前该累加数据包打包发送至该加速器核心;
步骤5、该大数据包通过与该阈值的比较,进行任务拆分,得到多个拆分结果,将该多个拆分结果依次打包,发送至该加速器核心。
2.如权利要求1所述的异构系统的带宽利用率提升方法,其特征在于,该步骤5中任务拆分采用严格阈值拆分,具体包括:按照“子数据包=大数据包/阈值”拆分数据包,拆分后得到由多个拆分结果组成的集合{n个大小相同的子数据包,第n+1个残差数据包};其中,大小相同的n个数据包直接发送到加速器核心,第n+1个残差数据包按照该步骤4中小数据包的方式进行处理。
3.如权利要求1所述的异构系统的带宽利用率提升方法,其特征在于,该步骤5中任务拆分采用放松阈值拆分,具体包括:
步骤3b1、依次增加放松阈值64MB;
步骤3b2、判断增加的放松阈值是否小于512MB,若小于,则执行计算拆分数据包大小“子数据包=大数据包/放松阈值”并执行步骤3b3,若增加的放松阈值大于512MB,则执行步骤3b5;
步骤3b3,判定拆分后的子数据包大小是否满足判定准则:对于第n+1个残差数据包的大小低于阈值的一半,若满足执行步骤3b4,否则返回执行步骤3b1;
步骤3b4,若满足判定准则,则拆分后,将大小相同的数据包直接发送到加速器核心;最后的残差数据包直接与第n个数据包合并发送到加速器核心;
骤3b5,按照严格阈值拆分方法,此时的严格阈值设定为当前最大放松阈值。
4.如权利要求1所述的异构系统的带宽利用率提升方法,其特征在于,步骤2包括:
在基于PCIe互联的异构系统中,通过数据传输测试PCIe在数据传输过程中的实际带宽,得到数据包大小和带宽利用率之间的对应关系,并根据该对应关系得到带宽利用率曲线,以确定带宽充分利用时的数据包大小的阈值。
5.一种异构系统的带宽利用率提升系统,其特征在于,包括:
模块1、获取包含中央处理器和多个加速器核心的异构系统,其中该中央处理器通过高速互联接口与每一个加速器核心相连;
模块2、通过对高速互联接口的测试,得到该高速互联接口的带宽资源利用率的性能,再根据该性能确定带宽充分利用时数据包大小的阈值;
模块3、并按序从任务缓存池中获取待执行任务作为当前任务,判断该当前任务的数据量是否小于该阈值,若是,则将该当前任务作为小数据包,执行模块4,否则将该当前任务作为大数据包,执行模块5;
模块4、按照该任务缓存池中任务顺序依次提取待执行任务,并通过带宽累加器和该小数据包累加,得到累加数据包,直到累加数据包大小大于等于该阈值,将当前该累加数据包打包发送至该加速器核心;
模块5、该大数据包通过与该阈值的比较,进行任务拆分,得到多个拆分结果,将该多个拆分结果依次打包,发送至该加速器核心。
6.如权利要求5所述的异构系统的带宽利用率提升系统,其特征在于,该模块5中任务拆分采用严格阈值拆分,具体包括:按照“子数据包=大数据包/阈值”拆分数据包,拆分后得到由多个拆分结果组成的集合{n个大小相同的子数据包,第n+1个残差数据包};其中,大小相同的n个数据包直接发送到加速器核心,第n+1个残差数据包按照该模块4中小数据包的方式进行处理。
7.如权利要求5所述的异构系统的带宽利用率提升系统,其特征在于,该模块5中任务拆分采用放松阈值拆分,具体包括:
模块3b1、依次增加放松阈值64MB;
模块3b2、判断增加的放松阈值是否小于512MB,若小于,则执行计算拆分数据包大小“子数据包=大数据包/放松阈值”并执行模块3b3,若增加的放松阈值大于512MB,则执行模块3b5;
模块3b3,判定拆分后的子数据包大小是否满足判定准则:对于第n+1个残差数据包的大小低于阈值的一半,若满足执行模块3b4,否则返回执行模块3b1;
模块3b4,若满足判定准则,则拆分后,将大小相同的数据包直接发送到加速器核心;最后的残差数据包直接与第n个数据包合并发送到加速器核心;
骤3b5,按照严格阈值拆分系统,此时的严格阈值设定为当前最大放松阈值。
8.如权利要求5所述的异构系统的带宽利用率提升系统,其特征在于,模块2包括:
在基于PCIe互联的异构系统中,通过数据传输测试PCIe在数据传输过程中的实际带宽,得到数据包大小和带宽利用率之间的对应关系,并根据该对应关系得到带宽利用率曲线,以确定带宽充分利用时的数据包大小的阈值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911018027.2A CN110958183B (zh) | 2019-10-24 | 2019-10-24 | 一种异构系统的带宽利用率提升方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911018027.2A CN110958183B (zh) | 2019-10-24 | 2019-10-24 | 一种异构系统的带宽利用率提升方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110958183A true CN110958183A (zh) | 2020-04-03 |
CN110958183B CN110958183B (zh) | 2022-02-25 |
Family
ID=69976373
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911018027.2A Active CN110958183B (zh) | 2019-10-24 | 2019-10-24 | 一种异构系统的带宽利用率提升方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110958183B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI777481B (zh) * | 2021-04-08 | 2022-09-11 | 鴻海精密工業股份有限公司 | 數據控制方法、數據處理方法、電子設備及儲存介質 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101471937A (zh) * | 2007-12-27 | 2009-07-01 | 华为技术有限公司 | 以太报文复用、解复用方法及设备 |
CN101626384A (zh) * | 2009-08-05 | 2010-01-13 | 腾讯科技(深圳)有限公司 | 一种基于tcp协议传输数据包的方法和系统 |
CN102541628A (zh) * | 2010-12-17 | 2012-07-04 | 三星电子株式会社 | 多核系统的编译装置和方法 |
US20130208731A1 (en) * | 2012-02-10 | 2013-08-15 | Derek Alan Sherlock | Posted and unencumbered queues |
CN103729167A (zh) * | 2012-10-12 | 2014-04-16 | 辉达公司 | 用于改进多线程处理单元中的性能的技术 |
CN107094103A (zh) * | 2017-02-09 | 2017-08-25 | 北京小度信息科技有限公司 | 数据采集方法和装置 |
-
2019
- 2019-10-24 CN CN201911018027.2A patent/CN110958183B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101471937A (zh) * | 2007-12-27 | 2009-07-01 | 华为技术有限公司 | 以太报文复用、解复用方法及设备 |
CN101626384A (zh) * | 2009-08-05 | 2010-01-13 | 腾讯科技(深圳)有限公司 | 一种基于tcp协议传输数据包的方法和系统 |
CN102541628A (zh) * | 2010-12-17 | 2012-07-04 | 三星电子株式会社 | 多核系统的编译装置和方法 |
US20130208731A1 (en) * | 2012-02-10 | 2013-08-15 | Derek Alan Sherlock | Posted and unencumbered queues |
CN103729167A (zh) * | 2012-10-12 | 2014-04-16 | 辉达公司 | 用于改进多线程处理单元中的性能的技术 |
CN107094103A (zh) * | 2017-02-09 | 2017-08-25 | 北京小度信息科技有限公司 | 数据采集方法和装置 |
Non-Patent Citations (1)
Title |
---|
刘阳国: "面向异构多核系统芯片的高效动态带宽划分方法", 《计算机辅助设计与图形学学报》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI777481B (zh) * | 2021-04-08 | 2022-09-11 | 鴻海精密工業股份有限公司 | 數據控制方法、數據處理方法、電子設備及儲存介質 |
Also Published As
Publication number | Publication date |
---|---|
CN110958183B (zh) | 2022-02-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8812639B2 (en) | Job managing device, job managing method and job managing program | |
CN109981744B (zh) | 数据的分发方法、装置、存储介质及电子设备 | |
CN111061547B (zh) | 一种异构系统的任务调度方法及系统 | |
CN109918182A (zh) | 虚拟化技术下的多gpu任务调度方法 | |
KR20130097973A (ko) | 작업 부하를 고려한 하드웨어 가속화 기반의 대규모 데이터의 분산 처리 장치 및 방법 | |
CN115269108A (zh) | 一种数据处理方法、装置及设备 | |
US9471387B2 (en) | Scheduling in job execution | |
CN110958183B (zh) | 一种异构系统的带宽利用率提升方法及系统 | |
EP2884398A1 (en) | Data forwarding device, data forwarding method, and program | |
CN115827250A (zh) | 一种数据存储方法、装置及设备 | |
CN115237568A (zh) | 一种面向边缘异构设备的混合权重任务调度方法及系统 | |
CN114519006A (zh) | 测试方法、装置、设备以及存储介质 | |
US8423975B1 (en) | System performance simulator | |
CN109347982A (zh) | 一种数据中心的调度方法及装置 | |
CN117097679A (zh) | 一种网络中断的聚合方法、装置及网络通信设备 | |
CN112468414B (zh) | 一种云计算多级调度方法、系统及存储介质 | |
JP2023544911A (ja) | 並列量子コンピューティングのための方法及び装置 | |
CN113760989A (zh) | 一种无界流数据处理方法、装置、设备及存储介质 | |
US10983837B2 (en) | Method and apparatus for load estimation | |
CN112948229A (zh) | 调度集群的性能确定方法、装置、计算机设备及存储介质 | |
CN103460183B (zh) | 控制vles处理器架构内的提前提取的方法和装置 | |
Sokolsky et al. | Analysis of AADL models using real-time calculus with applications to wireless architectures | |
US11966310B1 (en) | Analysis of events in an integrated circuit using cause tree and buffer | |
RU2801737C1 (ru) | Способ и устройство организации памяти сетевого оборудования для управления его очередями | |
US20230195536A1 (en) | Data offloading processes and systems |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |