首页 / 一种同步资源分配方法、设备、存储介质及程序产品

一种同步资源分配方法、设备、存储介质及程序产品有效专利 发明

技术领域

[0001] 本申请实施例涉及人工智能技术领域,尤其涉及一种同步资源分配方法、设备、存储介质及程序产品。

相关背景技术

[0002] 人工智能模型通常指被训练用来进行推理预测的神经网络模型,例如图像推理模型、语音推理模型等。人工智能模型的运算可以由计算图(computation graph)中的算子(operator)来实现。算子指的是对人工智能模型中各层的张量所做的各种运算,例如人工智能模型的卷积层对人工智能模型的输入数据所做的卷积运算即为卷积算子。
[0003] 在算子执行过程中,用于执行算子的多个线程之间需要进行同步以保证数据的产生和消费在正确的时序上,所以物理同步资源于此之中显得尤为重要。但是,物理同步资源的数量是有限的,并不能无限使用,因此,在算子编译阶段,需要对算子进行物理同步资源分配。
[0004] 然而,当算子的核函数过大时,核函数中的同步点相应过多,因此经常出现物理同步资源不足的情况,从而导致同步资源分配耗时较长,进而影响算子编译和执行的效率。

具体实施方式

[0022] 为了使本发明的目的、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0023] 参考图1,其为本申请实施例适用的一种人工智能芯片的结构图,该人工智能芯片100至少包括:张量核心101、计算单元102、共享内存103、寄存器堆104。
[0024] 人工智能芯片100中包括多个计算单元102,每个计算单元102用于执行标量和矢量运算。
[0025] 在一些实施例中,每个计算单元102包括:多个单指令多数据(Single Instruction Multiple Data ,简称SIMD)算术逻辑单元,或者多个单指令多线程(Single Instruction Multiple Thread,简称SIMT)算术逻辑单元。
[0026] 在一些实施例中,每个计算单元102包括:多个SIMD算术逻辑单元和多个SIMT算术逻辑单元。
[0027] 张量核心101用于执行卷积运算或者矩阵乘法。人工智能芯片100可用于执行各种类型的算子,算子的类型包括但不限于:卷积算子、注意力机制算子、矩阵乘法算子。
[0028] 张量核心101与计算单元102之间可以通过存取速度快但容量相对有限的寄存器堆104进行小块数据交互,同时也可以通过访存速度相对较慢但容量较大的共享内存103来实现大块数据传递。
[0029] 张量核心101与计算单元102之间不论是通过寄存器堆104传递数据,还是通过共享内存103传递数据,张量核心101与计算单元102之间都需要进行同步以保证数据的产生和消费在正确的时序上,所以物理同步资源于此之中显得尤为重要,其中,物理同步资源可以是物理栅栏资源(Barrier Resource)。需要说明的是,计算单元102内部的多个线程或张量核心101内部的多个线程也需要通过物理同步资源进行同步,以保证数据的产生和消费在正确的时序上。
[0030] 按照物理同步资源的作用范围,可以将物理同步资源划分为以下两类资源:线程组栅栏(Thread Group barrier,简称TG barrier)和宽线程组栅栏(Wide Thread Group barrier,简称WTG barrier),其中,线程组栅栏用于计算单元102内部的线程组的同步;宽线程组栅栏用于张量核心101的线程组与所有计算单元102的线程组之间的同步。
[0031] 本申请中的人工智能芯片100除了包含上述结构之外,还可以包括其他结构,对此,本申请不做具体限定。
[0032] 人工智能芯片100可以是:图形处理器(Graphics Processing Unit,简称GPU)、通用图形处理器(General‑purpose computing on graphics processing units,简称GPGPU)、特定领域架构(Domain Specific Architecture,简称DSA)等。
[0033] 在算子执行过程中,用于执行算子的多个线程之间需要进行同步以保证数据的产生和消费在正确的时序上,所以物理同步资源于此之中显得尤为重要。但是,物理同步资源的数量是有限的,并不能无限使用,因此,在算子编译阶段,需要对算子进行物理同步资源分配。
[0034] 然而,当算子的核函数过大时,核函数中的同步点相应过多,因此经常出现物理同步资源不足的情况,从而导致同步资源分配耗时较长,进而影响算子编译和执行的效率。
[0035] 鉴于此,本申请提供了一种同步资源分配方法的流程,如图2所示,该方法的流程由计算机设备执行,包括以下步骤:步骤201,按照算子的核函数中的强同步指令,将核函数拆分成多个指令片段。
[0036] 具体地,算子的核函数指:算子在人工智能芯片上执行的程序代码。本申请中的算子可以由图1所示的人工智能芯片100执行。在人工智能芯片执行算子之前,先由计算机设备对算子的核函数进行编译,并且,在算子编译过程中执行本申请中的同步资源分配方法。
[0037] 在本申请中,算子的核函数中包括一个或多个强同步指令,以核函数中的强同步指令为分割点将核函数拆分成多个指令片段,每个指令片段包括至少一条指令。需要说明的是,强同步指令可以是某个指令片段(位于强同步指令之前的一个指令片段,或者位于强同步指令之后的一个指令片段)中的一条指令,也可以独立于每个指令片段,对此,本申请不做具体限定。
[0038] 举例来说,假设核函数中包括一个强同步指令,则以该强同步指令为分割点将核函数拆分成两个指令片段,每个指令片段包括多条指令。
[0039] 在一些实施例中,强同步指令关联一个强同步标识,强同步标识用于表征执行核函数的多个线程之间的同步点。
[0040] 具体地,在算子的核函数中,强同步指令关联一个强同步标识,该强同步标识可以是一个逻辑同步资源编号。比如,强同步标识为逻辑栅栏资源编号(即逻辑bar id)。
[0041] 同步点指:算子执行过程中的一个执行位置,且多个线程在该执行位置实现同步。在本申请中,强同步标识表征的同步点指:在算子执行过程中强同步指令的执行位置,且执行核函数的所有线程在该执行位置实现线程同步。也就是说,执行核函数的所有线程都执行到强同步指令时,所有线程才能继续向后执行。
[0042] 为每个强同步标识表征的同步点分配相应的物理同步资源,其中,物理同步资源可以是物理栅栏资源。
[0043] 具体实施中,物理栅栏资源内部维护一个计数器和一个同步点,其中,计数器记录的数值等于执行核函数的线程数量。当执行核函数的一个线程执行到强同步指令(即强同步指令关联的强同步标识表征的同步点)时,物理栅栏资源会阻塞该线程以等待其他线程到达,同时,物理栅栏资源中的计算器减1。当所有线程都执行到强同步指令时,此时,计算器为0,栅栏打开,所有线程继续向后执行,以保证执行核函数的多个线程同步到强同步标识表征的同步点。
[0044] 在一些实施例中,当执行核函数的多个线程,同步到强同步标识表征的同步点时,核函数中位于强同步指令之前的多个指令均已执行完,且已分配的物理同步资源均已回收。因此,每个指令片段可独立分配物理同步资源,且物理资源完全隔离。
[0045] 步骤202,针对多个指令片段,分别执行以下步骤2021和步骤2022:具体地,针对每个指令片段,在该指令片段执行时,位于该指令片段之前的多个指令均已执行完,且已分配的物理同步资源均已回收。因此,每个指令片段可以独立地进行物理同步资源分配,在物理同步资源分配过程中与其他指令片段并不会出现资源冲突问题。
[0046] 在实际应用中,也可以并行地对多个指令片段进行物理同步资源分配,由于多个指令片段可以并行且独立地进行物理同步资源分配,因此,进一步降低了同步资源分配耗时,进而提高算子编译和执行的效率。
[0047] 步骤2021,构建一个指令片段对应的有向无环子图。
[0048] 具体地,有向无环图是一个无回路的有向图。由于采用强同步指令将核函数拆分成多个指令片段,因此,针对每个指令片段构建有向无环子图后,多个指令片段对应有向无环子图,可组成核函数的有向无环图。
[0049] 在一些实施例中,遍历指令片段包含的多个逻辑同步标识,每个逻辑同步标识与指令片段中的一组数据生产指令和数据消费指令关联,一组数据生产指令和数据消费指令由不同线程执行,逻辑同步标识用于表征不同线程之间的同步点。基于多个逻辑同步标识以及该指令片段的执行逻辑,构建该指令片段的有向无环子图。
[0050] 具体地,逻辑同步标识可以是一个逻辑同步资源编号。比如,逻辑同步标识为逻辑栅栏资源编号(即逻辑bar id)。在每组数据生产指令和数据消费指令中,数据生产指令和数据消费指令对应同一个逻辑同步标识。数据生产指令和数据消费指令由不同线程执行,并且,数据消费指令需要等数据生产指令执行完之后才可以开始执行。
[0051] 执行数据生产指令和数据消费指令的不同线程之间的同步点指:第一线程(用于执行数据生产指令)执行数据生产指令之后,以及第二线程(用于执行数据消费指令)执行数据消费指令之前的这一执行位置;第一线程和第二线程在该执行位置实现同步。
[0052] 指令片段的执行逻辑包括但不限于:顺序执行、分支执行、循环执行。
[0053] 需要说明的是,在一组数据生产指令和数据消费指令中:数据生产指令的数量和数据消费指令的数量并不限于一个,也可以是多个。相应地,执行一组数据生产指令和数据消费指令的不同线程也不限于:第一线程和第二线程这两个线程,还可以是更多的线程,对此,本申请不做具体限定。
[0054] 举例来说,参见图3,指令片段中包括:线程1执行的数据生产指令P0、数据生产指令P1、数据消费指令C2、数据生产指令P3、数据消费指令C4;以及,线程2执行的数据消费指令C0、数据生产指令P2、数据消费指令C1、数据生产指令P4、数据消费指令C3。
[0055] 在指令片段中,数据生产指令P0和数据消费指令C0关联逻辑同步标识L0;数据生产指令P1和数据消费指令C1关联逻辑同步标识L1;数据生产指令P2和数据消费指令C2关联逻辑同步标识L2;数据生产指令P3和数据消费指令C3关联逻辑同步标识L3;数据生产指令P4和数据消费指令C4关联逻辑同步标识L4。
[0056] 基于指令片段中上述4个逻辑同步标识以及指令片段的执行逻辑(顺序执行),构建指令片段的有向无环子图,具体如图3所示,有向无环子图中的节点为数据生产指令或者数据消费指令,有向无环子图中的方向表示指令执行顺序。
[0057] 逻辑同步标识L0指定了执行数据生产指令P0的线程1和执行数据消费指令C0的线程2之间的同步点;即线程2需要等待线程1执行完数据生产指令P0之后,才开始执行数据消费指令C0,因此,在有向无环子图中,数据生产指令P0指向数据消费指令C0。
[0058] 采用同样的方式可获得数据生产指令P1指向数据消费指令C1,数据生产指令P2指向数据消费指令C2,数据生产指令P3指向数据消费指令C3,数据生产指令P4指向数据消费指令C4。
[0059] 另外,在有向无环子图中,线程1或线程2上的多个指令按照顺序依次执行。
[0060] 需要说明的是,本申请中执行指令片段的线程并不限于两个线程,因此,有向无环子图中线程的数量也不限于两个,还可以是其他数量的线程,对此,本申请不做具体限定。
[0061] 另外,当指令片段中包含强同步指令时,指令片段还包含强同步标识,此时,可基于强同步标识、多个逻辑同步标识以及该指令片段的执行逻辑,构建该指令片段的有向无环子图,具体构建过程与前文相同,此处不再赘述。
[0062] 步骤2022,按照该指令片段的有向无环子图,为该指令片段分配物理同步资源。
[0063] 具体地,当算子的核函数过大时,核函数对应的有向无环图相应会过大。当遍历整个核函数的有向无环图,为核函数分配物理同步资源时,遍历耗时较长。比如,设定核函数的有向无环图包含n个节点,对该有向无环图进行分析遍历时,时间复杂度为 ,n越大越耗时。
[0064] 鉴于此,本申请中为每个指令片段构建有向无环子图,大大减小有向无环子图的节点数量。然后遍历每个指令片段的有向无环子图,为每个指令片段分配物理同步资源,从而减少对有向无环图分析遍历的耗时。
[0065] 比如,核函数的有向无环图中包括n个节点。将核函数划分为x个指令片段并为每个指令片段构建相应的有向无环子图,获得有向无环子图1、有向无环子图2、…、有向无环子图x,其中,有向无环子图1包括n1个节点,有向无环子图2包括n2个节点,…,有向无环子图x包括nx个节点,其中,(n1 + n2+…+nx)=n。此时,对x个有向无环子图进行分析遍历时,时间复杂度为 。
[0066] 相较于复杂度 来说,本申请中对x个有向无环子图进行分析遍历时,时间复杂度大大较低。
[0067] 在一些实施例中,遍历指令片段的有向无环子图,为多个逻辑同步标识表征的同步点依次分配相应的物理同步资源。
[0068] 具体地,对有向无环子图进行遍历的方式包括:深度优先遍历和广度优先遍历等。通过遍历指令片段的有向无环子图,依次为每个逻辑同步标识表征的同步点分配物理同步资源。在资源分配过程中,记录逻辑同步标识与分配的物理同步资源之间的映射关系。为每个逻辑同步标识表征的同步点分配相应的物理同步资源之后,在核函数中将多个逻辑同步标识分别修改为相应的物理同步资源的标识信息。
[0069] 在一些实施例中,当指令片段中包含强同步指令时,遍历指令片段的有向无环子图,不仅可以为多个逻辑同步标识表征的同步点依次分配相应的物理同步资源,还可以为强同步标识表征的同步点分配相应的物理同步资源。
[0070] 另外,本申请不仅将多个逻辑同步标识分别修改为相应的物理同步资源的标识信息,同时,在核函数中将每个强同步标识分别修改为相应的物理同步资源的标识信息。
[0071] 这样,在算子执行阶段,当算子执行到逻辑同步标识指定的同步点或者强同步标识指定的同步点时,可基于相应的物理同步资源的标识信息,调用物理同步资源实现线程同步。
[0072] 在一些实施例中,遍历指令片段的有向无环子图,基于总同步资源为多个逻辑同步标识表征的同步点依次分配相应的物理同步资源。
[0073] 具体地,总同步资源指:人工智能芯片中分配给算子的所有物理同步资源。由于以核函数中的强同步指令为分割点,将核函数拆分成多个指令片段,因此,在每个指令片段执行时,位于该指令片段之前的多个指令均已执行完,且已分配的物理同步资源均已回收。因此,每个指令片段可以独立地基于总同步资源进行物理同步资源分配,在物理同步资源分配过程中与其他指令片段并不会出现资源冲突问题。
[0074] 在资源分配过程中,不仅记录逻辑同步标识与分配的物理同步资源之间的映射关系,同时记录剩余可用的物理同步资源,其中,剩余可用的物理同步资源包括:总同步资源中从未分配的物理同步资源和总同步资源中复用的物理同步资源。
[0075] 在一些实施例中,为每个逻辑同步标识表征的同步点分配相应的物理同步资源之后,判断剩余可用的物理同步资源是否大于等于零。如果大于等于零,说明物理同步资源是充足的,因此,在核函数中将多个逻辑同步标识分别修改为相应的物理同步资源的标识信息。如果小于零,说明物理同步资源不足,故程序报错并退出。
[0076] 在一些实施例中,由于以核函数中的强同步指令为分割点,将核函数拆分成多个指令片段,因此,每个指令片段(除了最后一个指令片段)执行完之后,会接着执行一个强同步指令(对应强同步标识)。那么,针对每个指令片段,可以先从总同步资源中为指令片段进行物理同步资源分配,然后从剩余可用的物理同步资源中,为接着执行的强同步指令进行物理同步资源分配。之后再判断物理同步资源是否充足;如果充足,则在核函数中将指令片段包含的多个逻辑同步标识和强同步指令对应的强同步标识,分别修改为相应的物理同步资源的标识信息;如果不充足,则程序报错并退出。
[0077] 在一些实施例中,当指令片段中包含强同步指令时,遍历指令片段的有向无环子图,基于总同步资源为多个逻辑同步标识表征的同步点依次分配相应的物理同步资源,以及为强同步标识表征的同步点分配相应的物理同步资源。具体分配物理同步资源过程的方式在前文已有介绍,此处不再赘述。
[0078] 举例来说,参见图4,为本申请实施例提供的一种同步资源分配方法的流程,包括以下步骤:步骤401,以强同步指令为分割点将算子的核函数划分为指令片段1和指令片段2。
[0079] 步骤402,遍历指令片段1包含的多个逻辑同步标识,并基于多个逻辑同步标识和指令片段1的执行逻辑构建有向无环子图1。
[0080] 步骤403,遍历有向无环子图1,为指令片段1中的多个逻辑同步标识表征的同步点依次分配相应的物理栅栏资源。
[0081] 具体地,参见图5,有向无环子图1包括:线程1依次执行的数据生产指令P0、数据生产指令P1、数据消费指令C2;以及,线程2依次执行的数据消费指令C0、数据生产指令P2、数据消费指令C1。
[0082] 另外,在有向无环子图1中,数据生产指令P0指向数据消费指令C0,数据生产指令P1指向数据消费指令C1,数据生产指令P2指向数据消费指令C2。
[0083] 以数据生产指令P0为起点对有向无环子图1进行遍历。当遍历到数据生产指令P0指向数据消费指令C0时,由于数据生产指令P0和数据消费指令C0都对应逻辑同步标识L0,因此,为逻辑同步标识L0表征的同步点分配一个物理栅栏资源,该物理栅栏资源用于:控制线程1执行完数据生产指令P0后,线程2才开始执行数据消费指令C0。
[0084] 当遍历到数据生产指令P1指向数据消费指令C1时,由于数据生产指令P1和数据消费指令C1都对应逻辑同步标识L1,因此,为逻辑同步标识L1表征的同步点分配一个物理栅栏资源,该物理栅栏资源用于:控制线程1执行完数据生产指令P1后,线程2才开始执行数据消费指令C1。
[0085] 当遍历到数据生产指令P2指向数据消费指令C2时,由于数据生产指令P2和数据消费指令C2都对应逻辑同步标识L2,因此,为逻辑同步标识L2表征的同步点分配一个物理栅栏资源,该物理栅栏资源用于:控制线程2执行完数据生产指令P2后,线程1才开始执行数据消费指令C2。
[0086] 接着为强同步指令(即关联的强同步标识表征的同步点)分配一个物理栅栏资源,该物理栅栏资源用于:控制线程1和线程2都执行到强同步指令时,才开始执行指令片段2。
[0087] 步骤404,遍历指令片段2包含的多个逻辑同步标识,并基于多个逻辑同步标识和指令片段2的执行逻辑构建有向无环子图2。
[0088] 步骤405,遍历有向无环子图2,为指令片段2中的多个逻辑同步标识表征的同步点依次分配相应的物理栅栏资源。
[0089] 具体地,参见图5,线程1和线程2先执行指令片段1,线程1和线程2都执行到强同步指令时,才会开始执行指令片段2。
[0090] 指令片段2对应的有向无环子图2包括:线程1依次执行的数据生产指令P3、数据消费指令C4;以及线程2依次执行的数据生产指令P4、数据消费指令C3。
[0091] 另外,在有向无环子图2中,数据生产指令P3指向数据消费指令C3,数据生产指令P4指向数据消费指令C4。
[0092] 以数据生产指令P3为起点对有向无环子图2进行遍历。当遍历到数据生产指令P3指向数据消费指令C3时,由于数据生产指令P3和数据消费指令C3都对应逻辑同步标识L3,因此,为逻辑同步标识L3表征的同步点分配一个物理栅栏资源,该物理栅栏资源用于:控制线程1执行完数据生产指令P3后,线程2才开始执行数据消费指令C3。
[0093] 当遍历到数据生产指令P4指向数据消费指令C4时,由于数据生产指令P4和数据消费指令C4都对应逻辑同步标识L4,因此,为逻辑同步标识L4表征的同步点分配一个物理栅栏资源,该物理栅栏资源用于:控制线程2执行完数据生产指令P4后,线程1才开始执行数据消费指令C4。
[0094] 步骤406,为指令片段1和指令片段2分配完物理栅栏资源之后,程序退出。
[0095] 本申请实施例中,按照算子的核函数中的强同步指令,将核函数拆分成多个指令片段,然后为多个指令片段分别构建相应的有向无环子图,其中,构建的多个有向无环子图相互独立,互不影响。因此,按照每个指令片段的有向无环子图,为每个指令片段分配物理同步资源时,大大减少了同步点的数量,这样有效减少了出现物理同步资源不足的情况,从而降低同步资源分配的耗时,提高算子编译和执行的效率。
[0096] 其次,本申请通过遍历每个指令片段对应的有向无环子图,为每个指令片段分配物理同步资源,相较于对整个核函数的有向无环图进行遍历分析来说,大大减少了遍历的时间复杂度,从而减少了同步资源分配的耗时。
[0097] 基于相同的技术构思,本申请实施例提供了一种同步资源分配装置的结构示意图,如图6所示,该同步资源分配装置600包括:拆分模块601,用于按照算子的核函数中的强同步指令,将所述核函数拆分成多个指令片段;
处理模块602,用于针对所述多个指令片段,分别执行以下操作:
构建一个指令片段对应的有向无环子图;
按照所述一个指令片段对应的有向无环子图,为所述一个指令片段分配物理同步资源。
[0098] 可选地,所述强同步指令关联一个强同步标识,所述强同步标识用于表征执行所述核函数的多个线程之间的同步点。
[0099] 可选地,当执行所述核函数的多个线程,同步到所述强同步标识表征的同步点时,所述核函数中位于所述强同步指令之前的多个指令均已执行完,且已分配的物理同步资源均已回收。
[0100] 可选地,所述处理模块602具体用于:遍历所述一个指令片段包含的多个逻辑同步标识,每个逻辑同步标识与所述一个指令片段中的一组数据生产指令和数据消费指令关联,所述一组数据生产指令和数据消费指令由不同线程执行,所述逻辑同步标识用于表征所述不同线程之间的同步点;
基于所述多个逻辑同步标识以及所述一个指令片段的执行逻辑,构建所述一个指令片段的有向无环子图。
[0101] 可选地,所述处理模块602具体用于:遍历所述一个指令片段的有向无环子图,为所述多个逻辑同步标识表征的同步点依次分配相应的物理同步资源。
[0102] 可选地,所述处理模块602具体用于:遍历所述一个指令片段的有向无环子图,基于总同步资源为所述多个逻辑同步标识表征的同步点依次分配相应的物理同步资源。
[0103] 可选地,所述处理模块602还用于:在所述核函数中,将所述多个逻辑同步标识分别修改为相应的物理同步资源的标识信息。
[0104] 可选地,所述处理模块602还用于:为所述强同步标识表征的同步点分配相应的物理同步资源。
[0105] 本申请实施例中,按照算子的核函数中的强同步指令,将核函数拆分成多个指令片段,然后为多个指令片段分别构建相应的有向无环子图,其中,构建的多个有向无环子图相互独立,互不影响。因此,按照每个指令片段的有向无环子图,为每个指令片段分配物理同步资源时,大大减少了同步点的数量,这样有效减少了出现物理同步资源不足的情况,从而降低同步资源分配的耗时,提高算子编译和执行的效率。
[0106] 其次,本申请通过遍历每个指令片段对应的有向无环子图,为每个指令片段分配物理同步资源,相较于对整个核函数的有向无环图进行遍历分析来说,大大减少了遍历的时间复杂度,从而减少了同步资源分配的耗时。
[0107] 基于相同的技术构思,本申请实施例提供了一种计算机设备,如图7所示,包括至少一个处理器701,以及与至少一个处理器701连接的存储器702,本申请实施例中不限定处理器701与存储器702之间的具体连接介质,图7中处理器701和存储器702之间通过总线连接为例。总线可以分为地址总线、数据总线、控制总线等。
[0108] 在本申请实施例中,存储器702存储有可被至少一个处理器701执行的指令,至少一个处理器701通过执行存储器702存储的指令,可以执行上述同步资源分配方法的步骤。
[0109] 其中,处理器701是计算机设备的控制中心,可以利用各种接口和线路连接计算机设备的各个部分,通过运行或执行存储在存储器702内的指令以及调用存储在存储器702内的数据,从而实现同步资源分配。可选的,处理器701可包括一个或多个处理单元,处理器701可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器701中。在一些实施例中,处理器701和存储器702可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。
[0110] 处理器701可以是通用处理器,例如中央处理器(CPU)、数字信号处理器、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
[0111] 存储器702作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器702可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(Random Access Memory,RAM)、静态随机访问存储器(Static Random Access Memory,SRAM)、可编程只读存储器(Programmable Read Only Memory,PROM)、只读存储器(Read Only Memory,ROM)、带电可擦除可编程只读存储器(Electrically Erasable Programmable Read‑Only Memory,EEPROM)、磁性存储器、磁盘、光盘等等。存储器702是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机设备存取的任何其他介质,但不限于此。本申请实施例中的存储器702还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
[0112] 基于同一发明构思,本申请实施例提供了一种计算机可读存储介质,其存储有可由计算机设备执行的计算机程序,当计算机程序在计算机设备上运行时,使得计算机设备执行上述同步资源分配方法的步骤。
[0113] 基于同一发明构思,本申请实施例提供了一种计算机程序产品,所述计算机程序产品包括存储在计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机设备执行时,使所述计算机设备执行上述同步资源分配方法的步骤。
[0114] 本领域内的技术人员应明白,本发明的实施例可提供为方法、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD‑ROM、光学存储器等)上实施的计算机程序产品的形式。
[0115] 本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机设备或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0116] 这些计算机程序指令也可存储在能引导计算机设备或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0117] 这些计算机程序指令也可装载到计算机设备或其他可编程数据处理设备上,使得在计算机设备或其他可编程设备上执行一系列操作步骤以产生计算机设备实现的处理,从而在计算机设备或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0118] 尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
[0119] 显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页 第1页 第2页 第3页
相关技术
分配方法相关技术
同步资源相关技术
请求不公布姓名发明人的其他相关专利技术