用于确定并行处理器内核的调度大小的并发因子的系统和方法与流程

文档序号:13451317阅读:243来源:国知局
用于确定并行处理器内核的调度大小的并发因子的系统和方法与流程

相关申请的交叉引用

本申请要求2015年5月13日提交的美国非临时专利申请号14/710,879的权益,所述申请的内容特此以引用的方式并入本文。

本发明总体上涉及并行处理器,并且具体地说,涉及应用程序在并行处理器上的执行。



背景技术:

诸如图形处理器或图形处理单元(gpu)的并行处理器是高度并行的计算设备。顾名思义,gpu最初被开发用于快速且高效地处理诸如视频的视觉信息。然而,最近它们已经被设计成更通用的大规模并行设备。当前的gpu可并发执行成千上万次计算,并且这个数量必然会随时间而增加。此类并行计算被称为线程。为了降低硬件复杂性(并且因此在芯片中允许更多的并行计算单元),gpu将多个线程捆绑在一起并且要求它们以单指令多数据(simd)方式执行。也就是说,在许多不同的数据片段上同时执行相同的指令。这样的一束线程被称为波前、线程束或其他名称。

内核是在计算设备上执行的包含多个线程的程序或程序的一部分。多个线程可捆绑成一个或多个工作组,所述工作组也被称为线程块和其他名称。



技术实现要素:

本发明公开了一种确定在并行处理器上运行的应用程序中的内核的并发因子的方法。本发明还公开了一种用于实现所述方法的系统。

在实施方案中,所述方法包括:将所述内核的至少一部分作为微型内核序列运行,每个微型内核包括一定数量的并发执行的工作组,所述数量被定义为所述微型内核的并发因子;确定每个微型内核序列的性能量度;基于所述性能量度从所述序列中选择实现所述内核的期望性能的特定序列;以及用所述特定序列执行所述内核。

附图说明

可从结合附图以举例的方式给出的以下描述中获得更详细的了解,在所述附图中:

图1示出确定在并行处理器上运行的应用程序的并发因子的方法的综述;

图2示出图1的方法的实施方案的细节;

图3a和3b分别示出两个不同应用程序的观察结果;并且

图4是可在其中实现一个或多个所公开实施方案的示例性系统的框图。

具体实施方式

在诸如图形处理单元(gpu)的并行处理器中执行的内核包括一定数量的工作组。工作组是内核的软件元素,并且可并发和/或串行执行。在执行内核时,常常以预定顺序执行这些工作组。并发调度的工作组的最大数量可取决于寄存器文件资源限制以及每个计算单元(cu)的最大波前数量限制。然而,这并没有考虑到应用程序的特性和要求,诸如存储器存取速率和分支发散。并发执行由系统资源允许的尽可能多的工作组可能由于争用有限的资源(诸如存储器和控制流发散)而无法产生最佳性能或最佳能量效率。

本文公开了一种用于选择并发调度和执行的工作组的数量以实现执行内核的期望性能的方法和系统。应用程序执行中的当前内核的至少一部分作为微型内核序列运行。序列中的每个微型内核包括一定数量的并发执行的工作组。微型内核中并发执行的工作组的数量被定义为微型内核的并发因子。在微型内核序列中的每一个中循序执行微型内核。作为一个实例,而不应被视为限制,假设一个内核具有总共128个工作组。内核可作为128个顺序微型内核运行,其中每个微型内核包含一个工作组。可选地,内核可作为64个顺序微型内核运行,其中每个微型内核包含两个并发执行的工作组。可选地,内核可作为32个顺序微型内核运行,其中每个微型内核包含四个并发执行的工作组。可选地,内核可作为一个包含128个并发执行的工作组的微型内核运行。后一种替代方案与内核本身的执行相同。

如上文所定义,微型内核中并发执行的工作组的数量可被称为所述微型内核的并发因子。因此,例如在总共128个工作组被分割成128个循序执行的微型内核的内核中,其中每个微型内核包含一个工作组,则每个微型内核的并发因子是1。在总共128个工作组被分割成32个循序执行的微型内核的内核中,其中每个微型内核包含四个工作组,则每个微型内核的并发因子是4。以此类推。因此,在实施方案中,内核或内核的一部分可作为微型内核序列运行,其中给定序列中的每个微型内核具有共同并发因子。此外,内核或内核的一部分可重复运行,其中每个重复作为具有共同并发因子的微型内核序列运行,共同并发因子随每个重复而变化。作为一个实例,而不应被视为限制,每个重复中的共同并发因子可以是2的幂。因此,例如具有128个工作组的内核可作为微型内核序列运行,使得共同并发因子在一个序列中是1、在另一个序列中是2、在另一个序列中是4,以此类推,而其他序列的相应共同并发因子是8、16、32、64和128。

在前述实例中的每一个中,每个微型内核包含相同数量的工作组,即,所有微型内核具有共同并发因子,但这并不是必要的,并且不应被视为限制。可选地,内核可被分割成具有不同数量的工作组的微型内核序列,工作组的数量的总和是内核中的工作组的总数。例如,具有总共128个工作组的内核可作为三个循序执行的微型内核运行,所述微型内核分别包含50个工作组、40个工作组和38个工作组。换句话说,内核可作为具有相应并发因子50、40和38的三个微型内核序列运行。可选地,相同的内核可作为两个循序执行的微型内核运行,所述微型内核分别包含92个工作组和36个工作组。因此,在实施方案中,内核或内核的一部分可重复运行,其中每个重复作为具有各种并发因子的微型内核序列运行。在给定了内核中的工作组总数和微型内核序列中的每个微型内核的并发因子的情况下,如上所述,仍然可存在许多方式来构建这种微型内核。例如,而不应被视为限制,在128个工作组的内核作为32个各自具有并发因子4的顺序微型内核运行的情况下,存在大量不同的方式来将128个工作组分割成32个各自具有4个工作组的微型内核。在实施方案中,可尝试所有此类可能性。可选地,可尝试可能的分割的总数的子集,所述子集基于一个或多个附加准则来选择。作为此类准则的一个实例,而不应被视为限制,可以想象,内核中的全部工作组分布在一维、二维、三维或更多个维度的抽象数学空间中。每个工作组可通过沿着空间的轴线的一组坐标来指定或编索引。为了减少要尝试的所有可能性的微型内核分割的数量,可能强加以下附加准则或限制:每个微型内核仅可包含空间中连续的或相邻的工作组。作为一个实例,而不应被视为限制,考虑包含布置在一维空间中的15个工作组的内核。工作组可用数字1、2、3、...15编索引,并且形象化为沿着直线(即,单条轴线)布置。假设期望将这个内核分割成分别包含三个、六个、两个和四个工作组的四个微型内核。根据附加准则,三个工作组的微型内核可包含索引为1、2和3的工作组。所述微型内核可包含索引为7、8和9的工作组。然而,所述微型内核不可包含索引为1、2和7的工作组,因为这些工作组并不都是连续的。类似地,所述微型内核不可包含工作组7、8和11或者7、9和11。作为另一个实例,如果强加的附加准则是所有微型内核必须具有相同数量的工作组,则要尝试的可能分割的数量可能会变得非常小。例如,考虑将具有15个工作组的一维内核分割成各自具有五个工作组的三个微型内核,并且此外每个微型内核中的工作组必须是连续的。在这种情况下,仅有一种分割满足所有准则:一个微型内核包含工作组1(含)-5(含),另一个微型内核包含工作组6(含)-10(含),并且第三个微型内核包含工作组11(含)-15(含)。这些准则可容易地推广到具有布置在更高维度的抽象空间中的工作组的内核。

因此,用于选择在并行处理器上运行的应用程序中的内核的一个或多个并发因子以实现期望性能的方法可如下进行。内核或内核的至少一部分可重复运行。每个重复可作为不同的微型内核序列运行,每个微型内核具有指示并发执行的工作组的数量的并发因子。对于每个这种微型内核序列,可确定性能量度。基于性能量度,选择实现内核的期望性能的特定序列。用特定微型内核序列执行内核。在下文中借助于图1至4详细描述这些方法要素。

图1是确定在并行处理器(诸如gpu)上运行的应用程序的并发因子的方法的实施方案的综述。方法在110处开始。例如,当执行应用程序的每个内核时,对于所述当前内核确定特定微型内核序列120,如下所述。用确定的特定微型内核序列执行所述当前内核130。一旦这个当前内核的执行完成,就进行检查以确定是否存在剩余内核要执行以完成应用程序的执行140。如果存在剩余内核要执行,则调用新的应用程序内核,并且所述新的应用程序内核的执行开始150。方法返回到120,并且对于所述下一个内核确定新的特定微型内核序列。

120-130-140-150-120之间的循环重复,直到140处的检查显示没有剩余内核要执行。在这种情况下,应用程序的执行结束160。应用程序执行的结果可由输出设备提供给用户,所述输出设备可包括例如视觉显示设备。

图2示出对于一个内核确定特定微型内核序列的方法的实施方案的细节。应用程序执行中的当前内核或内核的至少一部分作为微型内核序列运行,其中每个微型内核具有并发因子210。一般来说,每个微型内核的并发因子可与所有其他微型内核的并发因子无关。

对于每个序列,确定性能量度(所述性能量度在一些实现方式中可基于性能量度的组合)220。性能量度的非限制性实例包括以下各项中的至少一项:执行时间,诸如内核执行时间或应用程序执行时间;温度;能量耗散速率;功率效率;能量效率;通过例如软错误率测量的可靠性;资源(诸如存储器)争用的量度;或计算单元灵敏度。计算单元灵敏度可被定义为性能量度的变化除以执行的计算单元的数量的对应变化。计算单元灵敏度可基于以下各项中的至少一项来确定:计算行为、存储器行为、一个或多个运行时统计数据,或执行的工作组的数量。作为一个非限制性实例,计算单元灵敏度可被建模为以下各项中的至少一项的线性函数:计算行为、存储器行为、一个或多个运行时统计数据,或执行的工作组的数量。这个线性函数中的系数可以是通过已知内核的性能统计数据和计算单元灵敏度的回归模型来确定的常数。可将预测的计算单元灵敏度与阈值进行比较,以确定并发性是高、中还是低。根据这种分类,可确定要并发执行的工作组的最大数量。在变型中,其他并发性类别是可能的。

继续参照图2,一旦运行所有期望的微型内核序列并且获得其性能量度,就基于所有尝试的序列的性能量度来选择实现内核的期望性能的特定序列230。用特定序列执行内核240。实现期望性能的实例不应被解释为限制,其包括以下各项中的一项或多项:使执行时间(诸如内核执行时间或应用程序执行时间)最小化;使处理器或包含处理器的系统保持在热极限内,诸如限制温度或能量耗散速率;使处理器或包含处理器的系统的可靠性最大化;使能源效率最大化和使功率效率最大化。使可靠性最大化可包括使软错误的发生率最小化。实现期望性能的另一个实例包括使工作组之间对使用存储器(诸如高速缓存存储器)的争用最小化。作为一个另外的实例,可选择同时实现的前述实例的任何子集来实现期望性能。

图3a和3b分别示出确定在并行处理器上运行的应用程序的内核的并发因子的两个实例,其不应被解释为限制。这里示出的结果是通过在gpu上运行两个不同的应用程序所获得的实际实验结果。图3a示出标记为应用程序1的一个应用程序的结果,而图3b示出标记为应用程序2的不同应用程序的类似结果。在图3a和3b中,相应应用程序的内核的至少一部分作为微型内核序列运行,其中每个序列中的微型内核都具有相同数量的工作组,即,相同的并发因子。每个垂直条沿着垂直轴线的高度指示用具有共同并发因子的序列所获得的性能量度(在这个实例中是内核执行时间),所述共同并发因子由水平轴线上的对应数字指示。在这些实例中,实现期望性能包括使内核执行时间最小化。

性能量度在不同的共同并发因子下的变化对于图3a和3b所示的两个应用程序是不同的。在图3a的实例中,当共同并发因子处于最大测得值(即128)时,获得最小内核执行时间(期望性能),如305处所指示。相比之下,在图3b中,在并发因子为64时获得期望性能,如310处所指示。在这种情况下,在并发因子小于最大测得并发因子512时获得期望性能。对此的可能解释(不应被解释为限制)如下。随着并发因子从1增加,执行时间由于并发运行的工作组的数量增加而减少。同时,随着并发运行的工作组的数量增加,这些工作组之间对资源(诸如存储器)的争用增加。这种争用往往会增加执行时间。一旦并发执行的工作组的数量大于某个数量,诸如在这个实例中为64,争用的影响就会超越并发性的影响,并且执行时间随着并发因子的增加而增加。

返回到图2,在图2中所示的实例中,可在应用程序运行期间的每次内核调用时确定实现期望性能的特定微型内核序列,因为应用程序的并行性需求随时间而变化。这可通过进行以下各项来实现:运行内核的至少一部分210、确定性能量度220、选择实现期望性能的特定序列230,以及用特定序列执行内核240,所有这些是在应用程序运行期间每当调用新的应用程序内核时进行的。作为非限制性实例,对于图形算法或不规则的应用程序,便是这种情况。

所选择的特定序列在内核执行期间可保持不变。替代实施方案可包括进行以下各项:内核的至少一部分的运行210、确定220、选择230和执行240,所有这些是在内核执行期间响应于变化的计算环境而动态地进行的。作为非限制性实例,所选择的用作内核执行的特定微型内核序列可在内核执行期间基于性能统计数据和内核相变而变化。

图4是可在其中实现一个或多个所公开实施方案的示例性设备或系统400的框图。系统400可包括例如计算机、游戏设备、手持设备、机顶盒、电视、移动电话或平板计算机。系统400包括处理器402;存储器404;存储装置406;一个或多个输入设备408;以及被配置来提供应用程序的执行结果的一个或多个输出设备410。输出设备410可包括视觉显示器。系统400还可任选地包括输入驱动器412和输出驱动器414。应理解,系统400可包括图4中未示出的附加部件。

处理器402可包括中央处理单元(cpu)、图形处理单元(gpu)、位于同一裸片上的cpu和gpu,或一个或多个处理器核心,其中每个处理器核心可以是cpu或gpu。存储器404与处理器402可位于相同的裸片上,或者可与处理器402分开定位。存储器404可包括易失性存储器或非易失性存储器,例如随机存取存储器(ram)、动态ram或高速缓存。

存储装置406可包括固定存储装置或可移除存储装置,例如硬盘驱动器、固态驱动器、光盘或闪存驱动器。输入设备108可包括键盘、小键盘、触摸屏、触摸板、检测器、麦克风、加速计、陀螺仪、生物识别扫描器或网络连接件(例如,用于发射和/或接收无线ieee802信号的无线局域网卡)。输出设备410可包括显示器、扬声器、打印机、触觉反馈设备、一个或多个灯、天线或网络连接件(例如,用于发射和/或接收无线ieee802信号的无线局域网卡)。

输入驱动器412与处理器402和输入设备408通信,并且容许处理器402接收来自输入设备408的输入。输出驱动器414与处理器402和输出设备410通信,并且容许处理器402向输出设备410发送输出。应注意的是,输入驱动器412和输出驱动器414是任选部件,并且在输入驱动器412和输出驱动器414不存在的情况下设备400将以相同的方式操作。

系统400可被配置来通过实现上述方法的一个或多个实施方案来确定应用程序中内核的并发因子。并行处理器402可被配置来将应用程序作为一个或多个内核执行。存储器404或存储装置406可被配置来:与并行处理器402交换信息,存储应用程序,并且将应用程序加载到并行处理器402中。并行处理器402可被配置来:将内核的至少一部分作为微型内核序列运行,其中每个微型内核包括一定数量的并发执行的工作组,所述数量被定义为微型内核的并发因子;确定每个微型内核序列的性能量度;基于性能量度从序列中选择实现内核的期望性能的特定序列;并且用特定序列执行内核。

并行处理器402可被配置来在应用程序运行期间每当调用新的应用程序内核时进行前述的以下各项:内核的至少一部分的运行、确定、选择和执行。并行处理器402可被配置来在应用程序运行期间动态地进行以下各项:内核的至少一部分的运行、确定、选择和执行。

并行处理器402可被配置来选择特定序列,所述序列通过以下各项中的至少一项来实现内核的期望性能:使执行时间最小化,使系统保持在热极限内,使功率效率或能量效率中的至少一项最大化,使系统的可靠性最大化,以及使工作组之间对使用第一存储器或使用第二存储器或使用两个存储器的争用最小化。

并行处理器402可被配置来将计算单元灵敏度确定为性能量度。并行处理器402可被配置来基于以下各项中的一项或多项来确定计算单元灵敏度:计算行为、存储器行为、一个或多个运行时统计数据,或执行的工作组的数量。并行处理器402可被配置来将计算单元灵敏度确定为以下各项中的一项或多项的线性函数:计算行为、存储器行为、一个或多个运行时统计数据,或执行的工作组的数量。

并行处理器402可被配置来将内核的至少一部分作为微型内核的序列运行,所述微型内核包括并发执行的工作组,所述工作组是连续的。并行处理器402可被配置来将内核的至少一部分作为微型内核序列运行,其中所述序列中的至少一个中的所有微型内核具有共同并发因子。共同并发因子可以是2的幂。

应理解,基于本文的公开内容,许多变型是可能的。尽管上文以特定组合描述了特征和元件,但是每个特征或元件可在没有其他特征和元件的情况下单独使用,或者可在具有或没有其他特征和元件的情况下以各种组合使用。

可在通用计算机、处理器或处理器核心中实现所提供的方法。合适的处理器包括例如通用处理器、专用处理器、常规处理器、数字信号处理器(dsp)、多个微处理器、与dsp核心相关联的一个或多个微处理器、控制器、微控制器、专用集成电路(asic)、现场可编程门阵列(fpga)电路、其他任何类型的集成电路(ic)和/或状态机。此类处理器可通过使用经处理的硬件描述语言(hdl)指令和包括网表的其他中间数据(此类指令能够存储在计算机可读介质上)的结果对制造过程进行配置来制造。这种处理的结果可以是掩模作品,然后在半导体制造过程中使用所述掩模作品以制造实现本发明的各方面的处理器。

本文提供的方法或流程图可在计算机程序、软件或固件中实现,所述计算机程序、软件或固件并入计算机可读存储介质中以由通用计算机或处理器执行。计算机可读存储介质的实例包括只读存储器(rom)、随机存取存储器(ram)、寄存器、高速缓存存储器、半导体存储设备、诸如内部硬盘和可移除磁盘的磁性介质、磁光介质,以及诸如cd-rom盘和数字多功能盘(dvd)的光学介质。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1