在多线程数据处理装置上对线程调度进行配置的制作方法

文档序号:8380724阅读:254来源:国知局
在多线程数据处理装置上对线程调度进行配置的制作方法
【技术领域】
[0001]本发明涉及数据处理。更具体地,本发明涉及在多线程数据处理装置上执行的多个线程的调度。
【背景技术】
[0002]以单程序多数据(SPMD)方式进行编程、然后执行多个线程来执行所需的数据处理的数据处理装置,特别是图形处理单元(GPU),在性能上有所增长,并且确实成为了非图形计算的通用平台。通过编程模型(例如,OpenCL、Renderscript和CUDA),程序员能够将这些大规模并行架构用于计算域,例如,线性代数、图像处理和分子科学。这种设备越来越普及,使得可编程性、可维护性和可移植性问题变得非常重要。
[0003]SPMD编程模型(例如上面提到的那些)具有有利的灵活性,它们允许程序员指定线程的独立性,从而消除了排序约束。然而,正是这一灵活性也给程序员带来了负担,由于线程被编程的具体方式可对架构性能产生影响。正因如此,程序员仍然需要手动执行数据局部性优化(例如,存储器合并或循环分块),并且考虑GPU架构特征(例如,核心计数和片上存储器分级结构)。此外,从纯编程的角度来看,程序员确定线程到工作组(在OpenCL中)/块(在CUDA中)的分配的自由可能是可取的,但会负面地影响GPU的调度自由和缓存性能。
[0004]仍然存在提高多线程数据处理装置(例如,GPU)的性能的可能性。

【发明内容】

[0005]从第一方面来看,本发明提供了一种用于以单程序多数据的方式对目标数据集执行数据处理的装置,该装置包括:
[0006]执行电路,该执行电路被配置为执行多个线程以执行数据处理;
[0007]线程调度配置存储设备,该线程调度配置存储设备被配置为存储定义多个线程调度配置的信息,每个线程调度配置定义多个线程将由所述执行电路执行的顺序;以及
[0008]线程调度电路,该线程调度电路被配置为响应于线程调度选择信号使得所述执行电路按照选定顺序执行所述多个线程,该选定顺序由多个线程调度配置中的选定线程调度配置来定义。
[0009]从第二方面来看,本发明提供了一种以单程序多数据的方式对目标数据集执行数据处理的方法,该方法包括以下步骤:
[0010]执行多个线程以执行数据处理;
[0011]存储定义多个线程调度配置的信息,每个线程调度配置定义多个线程将在执行步骤中执行的顺序;以及
[0012]响应于线程调度选择信号控制多个线程按照由所述多个线程调度配置中的选定线程调度配置定义的选定顺序来执行。
[0013]从第三方面来看,本发明提供了一种用于以单程序多数据的方式对目标数据集执行数据处理的装置,该装置包括:
[0014]用于执行多个线程以执行数据处理的装置;
[0015]用于存储定义多个线程调度配置的信息的装置,每个线程调度配置定义多个线程将由用于执行多个线程的装置执行的顺序;以及
[0016]用于响应于线程调度选择信号控制所述多个线程按照由所述多个线程调度配置中的选定线程调度配置定义的选定顺序来执行的装置。
【附图说明】
[0017]本发明将参考附图中所示出的本发明的实施例,仅以举例的方式来进一步说明,其中:
[0018]图1示意性地示出了根据一个实施例的数据处理系统,在该数据处理系统中,编译器根据源程序生成可执行程序以在装置上执行;
[0019]图2示出了由程序员作出的算法选择能够对缓存访问效率产生影响,以及本技术能够如何解决这一问题;
[0020]图3示意性地示出了在一个实施例中,可由装置执行的六个不同的数据处理类型;
[0021]图4示意性地示出了五个不同的线程调度配置风格;
[0022]图5A示意性地示出了在一个实施例中,在使用不同配置跨步值的“跨步”风格中配置的一些线程调度;
[0023]图5B示意性地示出了在一个实施例中,“分片式”风格线程调度配置的不同片大小;
[0024]图6A示意性地示出了在一个实施例中的二维目标数据集;
[0025]图6B示意性地示出了对应于图6A所示的目标数据集的、要被执行的线程的全集,以及这些线程的子集可被如何分配给处理器核以供执行;
[0026]图6C示意性地示出了两种用于将四个线程块分配到两个并行多线程处理器核上的调度技术;
[0027]图7示意性地示出了在一个实施例中的、具有两个并行处理器核的装置;
[0028]图8示意性地示出了在一个实施例中,在性能分析过程中可被执行的步骤序列;
[0029]图9示意性地示出了在一个实施例的方法中可被采取的一系列步骤;
[0030]图10示意性地、更详细地示出了在一个实施例中的编译器;
[0031 ] 图1IA示意性地示出了在一个实施例中,对于若干线程的存储器访问序列的相似性度量的计算;
[0032]图1lB示意性地示出了在一个实施例中,考虑到对于若干线程的存储器访问序列的两个存储器访问之间的存储器空间距离的相似性度量的计算;
[0033]图12示意性地示出了在一个实施例中,可由编译器采取的一系列步骤;
[0034]图13示意性地、更详细地示出了在一个实施例中的编译器;
[0035]图14示意性地示出了在一个实施例中,可由编译器采取的一系列步骤;以及
[0036]图15示意性地生成了通用计算设备,在一些实施例中,本技术可在该通用计算设备上执行。
【具体实施方式】
[0037]本发明的发明人发现,(例如,根据每周期指令(IPC)进行测量的)以单程序多数据(SPMD)的方式进行编程以同时执行多个线程来执行数据处理的多线程数据处理装置的性能能够根据该装置被配置为按照其进行操作的线程调度策略而各不相同。该数据处理例如可以是但不限于图形处理任务,并且能够是(如上面所提到的GPU现在发现的各种应用)比如与线性代数或分子科学相关的非图形任务。对于图形处理的示例,当考虑五个不同的线程调度风格(即,简单顺序、“跨步”(具有可配置的跨步长度和粒度)、“之字形(zigzag) ” (在线程的2D网格中,将奇数行的排序反转)、“分片式(tiled) ” (在线程的2D网格中的2D子分片)、以及“希尔伯特(Hilbert)曲线”(用于穿过2D网格的空间填充分形(fractal))),并且使用六个不同的基准处理任务(S卩,积分图像(按行)计算、积分图像(按列)计算、11乘11卷积,矩阵乘法、矩阵复制(每行)和矩阵复制(每列))来测试这些风格中的每一个的若干配置时,发明人的研宄显示,产生了各种不同的性能。本发明通过提供具有线程调度配置存储设备的装置来解决这一问题,该线程调度配置存储设备被配置为存储定义多个线程调度配置的信息,这些线程调度配置定义多个线程要被执行电路执行的顺序。定义很多不同的线程调度配置的信息可被存储在线程调度配置存储设备中,从而允许该装置以其调度它的线程用于执行的方式进行有利地重新配置。该重新配置例如可以根据该装置需要执行的具体种类的数据处理、在其上执行该数据处理的目标数据集的性质和/或该装置的具体架构布局。为了实现所存储的线程调度配置之一,提供了线程调度电路,该线程调度电路响应于线程调度选择信号来使得执行电路根据相应的选定线程调度来执行多个线程(即,按照由该选定线程调度定义的特定顺序来执行多个线程)。线程调度选择信号本身可来自若干不同的源,这些源或在该装置的内部或在该装置的外部,并且这进一步提供了该装置适应不同处理需求的有利的灵活度。
[0038]在一些实施例中,该装置可进一步包括性能控制电路,该性能控制电路被配置为收集与由执行电路执行的数据处理相关的性能数据,并且根据该性能数据生成线程调度选择信号。因此,线程调度选择信号可在该装置自身中生成,特别是由监测执行电路在执行数据处理中的性能,以及然后根据该性能观测而生成线程调度选择信号的电路来生成。性能控制电路例如可以改变线程调度选择电路以使得执行电路切换到新的线程调度配置,该新的线程调度配置预期可改变由性能数据表示的一个或多个性能度量。通常,期望的性能改进是增加指令吞吐量(即,IPC)或降低能量消耗。
[0039]在一些实施例中,性能控制电路被配置为控制性能分析过程,该性能分析过程包括以下步骤:
[0040]选择要被执行的多个线程的少数子集;
[0041]控制执行电路按照由第一线程调度配置定义的第一选定顺序来执行多个线程的少数子集中的第一子集;
[0042]改变线程调度选择信号以使得执行电路按照由下一线程调度配置定义的下一选定顺序来执行多个线程的少数子集中的下一子集;以及
[0043]重复该改变步骤,直到线程的少数子集中的所有线程均已被执行电路执行,
[0044]其中,性能控制电路被配置为设置线程选择信号以使得执行电路执行多个线程的多数剩余子集,该多个线程的多数剩余子集要被执行以按照由在性能分析过程中进行测试的选定线程调度定义的顺序对目标数据集执行数据处理。
[0045]因此,性能控制电路可被配置为参与选择适当的线程调度配置来定义执行电路调度多个线程的顺序的基本实证方法。这可能是有利的,因为不同可能的线程调度配置的数量和该装置可能被要求执行数据处理的不同数据处理情境(context)的数量,在一些情况下可使更具分析性的方法难以达到不能实行的程度。因此,由性能控制电路控制的性能分析过程采用迭代的方法,在该迭代方法中,若干不同的线程调度配置被测试,并且针对每个线程调度配置收集性能数据,最终使得性能控制电路能够设置线程选择信号,以使得执行电路随后使用(基于所收集的性能数据)被确定为优选的(如上所述,该“优选”可根据情境采取若干形式)线程调度配置来继续执行其数据处理。此外,性能分析过程在要被执行的多个线程的少数子集上执行。换句话说,性能控制电路从需要被执行的所有多个线程中选择线程的小测试样本群组,并且控制性能分析在该测试样本上执行。此后(即,当性能分析执行完成时),选定的线程调度配置被执行电路用于对要被执行的多个线程中的多数(即,在性能分析过程已在初始“测试”子集上执行后剩余的、要被执行的所有线程的较大部分)进行排序。
[0046]在一些实施例中,第一子集和下一子集各自对应于线程的工作组,其中线程的工作组是由该装置的程序员定义的或默认设置的多个线程的选定子集。“工作组”(在OpenCL术语中)或“块”(在CUDA术语中)表示要被一起分配给处理器核以供执行的、分组在一起的若干线程(这可由程序员定义,而这还可交给默认设置),因此,这样的分组可提供由性能控制电路选择的线程的适当子集作为用于在性能分析过程的每次迭代进行测试的性能分析过程的对象。
[0047]在一些实施例中,多个线程调度配置中的至少一些进一步根据控制参数进行配置,并且性能分析过程进一步包括针对多个控制参数值收集关于由执行电路执行的数据处理的性能数据。大量的线程调度配置可被设想(上面提到了它的一些示例),但不仅可存在一系列线程调度配置的“风格”(例如,顺序、跨步、分片式等),而且这些线程配置风格中的一些可将其自身进行进一步的配置(例如,跨步长度或片大小),并且,在这种情况下,如果性能分析过程进一步收集针对一系列控制参数值的性能数据是有利的。例如,这可在性能分析过程的性能分析程序的迭代程序中采取嵌套循环的形式,其中外层循环在不同风格的线程调度配置上进行迭代,而内层循环在控制参数值的范围上进行迭代。此外,应该理解的是,虽然一些线程调度配置可根据单个控制参数进行配置,但是其他线程调度配置可根据两个或更多控制参数(例如,在跨步风格线程调度配置中,一个控制参数可确定跨步长度、而另一控制参数可确定粒度(即,在每个跨步间隔中有多少线程被当作一组))进行配置。该粒度例如可以绕排(wrap)或线程块粒度相对应。
[0048]在性能分析过程中,在对多个控制参数值进行迭代时,被测试的具体控制参数值被选择的方式可采取各种不同的形式。例如,虽然控制参数可简单地递增,但是可应用函数来确定控制参数值的下一迭代。例如,在一些实施例中,多个控制参数值对应于控制参数的几何级数。这能够是有利的,因为控制参数值的较大范围使得性能分析以有限次数的迭代进行测试。这可使得性能分析过程更加快速地识别(至少粗略地,或许随后跟随
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1