CN107580698A - 用于确定并行处理器内核的调度大小的并发因子的系统和方法 - Google Patents
用于确定并行处理器内核的调度大小的并发因子的系统和方法 Download PDFInfo
- Publication number
- CN107580698A CN107580698A CN201680026495.2A CN201680026495A CN107580698A CN 107580698 A CN107580698 A CN 107580698A CN 201680026495 A CN201680026495 A CN 201680026495A CN 107580698 A CN107580698 A CN 107580698A
- Authority
- CN
- China
- Prior art keywords
- kernel
- miniature
- sequence
- parallel processor
- application program
- 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
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/54—Interprogram communication
- G06F9/545—Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3404—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for parallel or distributed programming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
- G06F11/3433—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment for load management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
-
- 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
- G06F9/4893—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
- Multi Processors (AREA)
Abstract
本发明公开了一种确定在并行处理器上运行的应用程序的并发因子的方法。本发明还公开了一种用于实现所述方法的系统。在实施方案中,所述方法包括将所述内核的至少一部分作为微型内核序列运行,每个微型内核包括一定数量的并发执行的工作组。并发执行的工作组的数量被定义为所述微型内核的并发因子。对于每个微型内核序列确定性能量度。基于所述性能量度,从所述序列中选择实现所述内核的期望性能的特定序列。用所述特定序列执行所述内核。
Description
相关申请的交叉引用
本申请要求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可包括键盘、小键盘、触摸屏、触摸板、检测器、麦克风、加速计、陀螺仪、生物识别扫描器或网络连接件(例如,用于发射和/或接收无线IEEE 802信号的无线局域网卡)。输出设备410可包括显示器、扬声器、打印机、触觉反馈设备、一个或多个灯、天线或网络连接件(例如,用于发射和/或接收无线IEEE 802信号的无线局域网卡)。
输入驱动器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)的光学介质。
Claims (23)
1.一种确定在并行处理器上运行的应用程序中的内核的并发因子的方法,所述方法包括:
将所述内核的至少一部分作为微型内核序列运行,每个微型内核包括一定数量的并发执行的工作组,所述数量被定义为所述微型内核的并发因子;
确定每个微型内核序列的性能量度;
基于所述性能量度从所述序列中选择实现所述内核的期望性能的特定序列;以及
用所述特定序列执行所述内核。
2.如权利要求1所述的方法,其中微型内核中所有并发执行的工作组是连续的。
3.如权利要求1所述的方法,其中所述序列中的至少一个中的所有微型内核具有共同并发因子。
4.如权利要求3所述的方法,其中所述共同并发因子是2的幂。
5.如权利要求1所述的方法,其还包括在所述应用程序的所述运行期间每当调用新的应用程序内核时进行以下各项:所述内核的至少一部分的所述运行、所述确定、所述选择和所述执行。
6.如权利要求1所述的方法,其还包括在所述应用程序的所述运行期间动态地进行以下各项:所述内核的至少一部分的所述运行、所述确定、所述选择和所述执行。
7.如权利要求1所述的方法,其中所述实现期望性能包括以下各项中的至少一项:使执行时间最小化,使所述并行处理器保持在热极限内,使功率效率或能量效率中的至少一项最大化,使所述并行处理器或包括所述并行处理器的系统的可靠性最大化,以及使工作组之间对使用存储器的争用最小化。
8.如权利要求1所述的方法,其中所述性能量度包括计算单元灵敏度。
9.如权利要求8所述的方法,其中所述计算单元灵敏度基于以下各项中的至少一项来确定:计算行为、存储器行为、一个或多个运行时统计数据,或执行的工作组的数量。
10.如权利要求8所述的方法,其中所述计算单元灵敏度被建模为以下各项中的至少一项的线性函数:计算行为、存储器行为、一个或多个运行时统计数据,或执行的工作组的数量。
11.如权利要求1所述的方法,其还包括将所述应用程序的所述运行的结果提供给显示所述结果的显示设备。
12.一种系统,其被配置来确定应用程序中的内核的并发因子,所述系统包括:
并行处理器,其被配置来执行所述应用程序;
第一存储器,其被配置来:与所述并行处理器交换信息,存储所述应用程序,并且将所述应用程序加载到所述并行处理器中;以及
第二存储器,其被配置来与所述并行处理器交换信息;
其中所述并行处理器还被配置来:
将所述内核的至少一部分作为微型内核序列运行,每个微型内核包括一定数量的并发执行的工作组,所述数量被定义为所述微型内核的并发因子;
确定每个微型内核序列的性能量度;
基于所述性能量度从所述序列中选择实现所述内核的期望性能的特定序列;并且
用所述特定序列执行所述内核。
13.如权利要求12所述的系统,其还包括输出设备,所述输出设备被配置来提供所述应用程序的所述执行的结果。
14.如权利要求13所述的系统,其中所述输出设备包括视觉显示器。
15.如权利要求12所述的系统,其中所述并行处理器被配置来在所述应用程序的所述运行期间每当调用新的应用程序内核时进行以下各项:所述内核的至少一部分的所述运行、所述确定、所述选择和所述执行。
16.如权利要求12所述的系统,其中所述并行处理器被配置来在所述应用程序的所述运行期间动态地进行以下各项:所述内核的至少一部分的所述运行、所述确定、所述选择和所述执行。
17.如权利要求12所述的系统,其中所述并行处理器被配置来选择特定序列,所述特定序列通过以下各项中的至少一项来实现所述内核的期望性能:使执行时间最小化,使所述系统保持在热极限内,使功率效率或能量效率中的至少一项最大化,使所述系统的可靠性最大化,以及使工作组之间对使用所述第一存储器或使用所述第二存储器或使用两个存储器的争用最小化。
18.如权利要求12所述的系统,其中所述并行处理器被配置来将计算单元灵敏度确定为所述性能量度。
19.如权利要求18所述的系统,其中所述并行处理器被配置来基于以下各项中的至少一项确定所述计算单元灵敏度:计算行为、存储器行为、一个或多个运行时统计数据,或执行的工作组的数量。
20.如权利要求18所述的系统,其中所述并行处理器被配置来将所述计算单元灵敏度确定为以下各项中的至少一项的线性函数:计算行为、存储器行为、一个或多个运行时统计数据,或执行的工作组的数量。
21.如权利要求12所述的系统,其中所述并行处理器被配置来将所述内核的至少一部分作为微型内核的序列运行,所述微型内核包括并发执行的工作组,所述工作组是连续的。
22.如权利要求12所述的系统,其中所述并行处理器被配置来将所述内核的至少一部分作为微型内核序列运行,其中所述序列中的至少一个中的所有微型内核具有共同并发因子。
23.如权利要求22所述的系统,其中所述共同并发因子是2的幂。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/710,879 US9965343B2 (en) | 2015-05-13 | 2015-05-13 | System and method for determining concurrency factors for dispatch size of parallel processor kernels |
US14/710,879 | 2015-05-13 | ||
PCT/US2016/023560 WO2016182636A1 (en) | 2015-05-13 | 2016-03-22 | System and method for determining concurrency factors for dispatch size of parallel processor kernels |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107580698A true CN107580698A (zh) | 2018-01-12 |
CN107580698B CN107580698B (zh) | 2019-08-23 |
Family
ID=57248294
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680026495.2A Active CN107580698B (zh) | 2015-05-13 | 2016-03-22 | 用于确定并行处理器内核的调度大小的并发因子的系统和方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9965343B2 (zh) |
EP (1) | EP3295300B1 (zh) |
JP (1) | JP6659724B2 (zh) |
KR (1) | KR102548402B1 (zh) |
CN (1) | CN107580698B (zh) |
WO (1) | WO2016182636A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10324730B2 (en) * | 2016-03-24 | 2019-06-18 | Mediatek, Inc. | Memory shuffle engine for efficient work execution in a parallel computing system |
US20180115496A1 (en) * | 2016-10-21 | 2018-04-26 | Advanced Micro Devices, Inc. | Mechanisms to improve data locality for distributed gpus |
US10558499B2 (en) * | 2017-10-26 | 2020-02-11 | Advanced Micro Devices, Inc. | Wave creation control with dynamic resource allocation |
US11900123B2 (en) * | 2019-12-13 | 2024-02-13 | Advanced Micro Devices, Inc. | Marker-based processor instruction grouping |
US11809902B2 (en) * | 2020-09-24 | 2023-11-07 | Advanced Micro Devices, Inc. | Fine-grained conditional dispatching |
WO2022221573A1 (en) * | 2021-04-15 | 2022-10-20 | Nvidia Corporation | Launching code concurrently |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020116357A1 (en) * | 1999-12-07 | 2002-08-22 | Paulley Glenn Norman | System and methodology for join enumeration in a memory-constrained environment |
US20110022817A1 (en) * | 2009-07-27 | 2011-01-27 | Advanced Micro Devices, Inc. | Mapping Processing Logic Having Data-Parallel Threads Across Processors |
US20110161734A1 (en) * | 2009-12-31 | 2011-06-30 | Ibm Corporation | Process integrity in a multiple processor system |
US20120144162A1 (en) * | 2006-06-20 | 2012-06-07 | Papakipos Matthew N | Systems and methods for determining compute kernels for an application in a parallel-processing computer system |
US20120331278A1 (en) * | 2011-06-23 | 2012-12-27 | Mauricio Breternitz | Branch removal by data shuffling |
US20130160016A1 (en) * | 2011-12-16 | 2013-06-20 | Advanced Micro Devices, Inc. | Allocating Compute Kernels to Processors in a Heterogeneous System |
WO2014084913A1 (en) * | 2012-11-30 | 2014-06-05 | Intel Corporation | Range selection for data parallel programming environments |
CN105027089A (zh) * | 2013-03-14 | 2015-11-04 | 英特尔公司 | 内核功能性检查器 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8375368B2 (en) * | 2006-06-20 | 2013-02-12 | Google Inc. | Systems and methods for profiling an application running on a parallel-processing computer system |
CN102023844B (zh) * | 2009-09-18 | 2014-04-09 | 深圳中微电科技有限公司 | 并行处理器及其线程处理方法 |
KR101079697B1 (ko) * | 2009-10-05 | 2011-11-03 | 주식회사 글로벌미디어테크 | 범용 그래픽 처리장치의 병렬 프로세서를 이용한 고속 영상 처리 방법 |
US8782645B2 (en) * | 2011-05-11 | 2014-07-15 | Advanced Micro Devices, Inc. | Automatic load balancing for heterogeneous cores |
US9092267B2 (en) * | 2011-06-20 | 2015-07-28 | Qualcomm Incorporated | Memory sharing in graphics processing unit |
US9772864B2 (en) * | 2013-04-16 | 2017-09-26 | Arm Limited | Methods of and apparatus for multidimensional indexing in microprocessor systems |
US10297073B2 (en) * | 2016-02-25 | 2019-05-21 | Intel Corporation | Method and apparatus for in-place construction of left-balanced and complete point K-D trees |
-
2015
- 2015-05-13 US US14/710,879 patent/US9965343B2/en active Active
-
2016
- 2016-03-22 WO PCT/US2016/023560 patent/WO2016182636A1/en unknown
- 2016-03-22 KR KR1020177033219A patent/KR102548402B1/ko active IP Right Grant
- 2016-03-22 EP EP16793114.6A patent/EP3295300B1/en active Active
- 2016-03-22 CN CN201680026495.2A patent/CN107580698B/zh active Active
- 2016-03-22 JP JP2017554900A patent/JP6659724B2/ja active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020116357A1 (en) * | 1999-12-07 | 2002-08-22 | Paulley Glenn Norman | System and methodology for join enumeration in a memory-constrained environment |
US20120144162A1 (en) * | 2006-06-20 | 2012-06-07 | Papakipos Matthew N | Systems and methods for determining compute kernels for an application in a parallel-processing computer system |
US20110022817A1 (en) * | 2009-07-27 | 2011-01-27 | Advanced Micro Devices, Inc. | Mapping Processing Logic Having Data-Parallel Threads Across Processors |
US20110161734A1 (en) * | 2009-12-31 | 2011-06-30 | Ibm Corporation | Process integrity in a multiple processor system |
US20120331278A1 (en) * | 2011-06-23 | 2012-12-27 | Mauricio Breternitz | Branch removal by data shuffling |
US20130160016A1 (en) * | 2011-12-16 | 2013-06-20 | Advanced Micro Devices, Inc. | Allocating Compute Kernels to Processors in a Heterogeneous System |
WO2014084913A1 (en) * | 2012-11-30 | 2014-06-05 | Intel Corporation | Range selection for data parallel programming environments |
CN105027089A (zh) * | 2013-03-14 | 2015-11-04 | 英特尔公司 | 内核功能性检查器 |
Also Published As
Publication number | Publication date |
---|---|
JP2018514869A (ja) | 2018-06-07 |
EP3295300A4 (en) | 2019-01-09 |
US20160335143A1 (en) | 2016-11-17 |
CN107580698B (zh) | 2019-08-23 |
JP6659724B2 (ja) | 2020-03-04 |
WO2016182636A1 (en) | 2016-11-17 |
KR102548402B1 (ko) | 2023-06-27 |
KR20180011096A (ko) | 2018-01-31 |
EP3295300A1 (en) | 2018-03-21 |
EP3295300B1 (en) | 2022-03-23 |
US9965343B2 (en) | 2018-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107580698A (zh) | 用于确定并行处理器内核的调度大小的并发因子的系统和方法 | |
US20160042116A1 (en) | Apparatus and method for generating test cases for processor verification, and verification device | |
TWI678617B (zh) | 用於在使用加法器之多維張量中存取資料之系統、電腦實施方法及設備 | |
US20190034327A1 (en) | Accessing prologue and epilogue data | |
JP6276857B2 (ja) | 訓練データに関する重み利益エバリュエータ | |
JP2008059438A (ja) | 記憶システム、そのデータ再配置方法、データ再配置プログラム | |
US20240020543A1 (en) | Glp-1/gip dual agonists | |
Kohlhoff et al. | K-means for parallel architectures using all-prefix-sum sorting and updating steps | |
US11288580B2 (en) | Optimal solution search method, optimal solution search program, and optimal solution search apparatus | |
Valero‐Lara et al. | cuThomasBatch and cuThomasVBatch, CUDA routines to compute batch of tridiagonal systems on NVIDIA GPUs | |
CN111124926A (zh) | 模糊测试方法、装置、电子设备及存储介质 | |
US20230259385A1 (en) | Methods and systems for hyperparameter tuning and benchmarking | |
US20160232093A1 (en) | Computing apparatus and method for cache management | |
US20200090051A1 (en) | Optimization problem operation method and apparatus | |
CN109308191A (zh) | 分支预测方法及装置 | |
CN104182268A (zh) | 仿真系统及其方法和包括所述仿真系统的计算机系统 | |
CN106201870A (zh) | 一种测试gpu的方法及装置 | |
Gorev et al. | Fault simulation with parallel exact critical path tracing in multiple core environment | |
JP2014055037A (ja) | 積載操作方法、システム及びコンピュータ・プログラム。 | |
Adhinarayanan et al. | An automated framework for characterizing and subsetting GPGPU workloads | |
CN116628600A (zh) | 基于随机森林的不平衡数据采样方法及装置 | |
US20190260572A1 (en) | Efficient computation of bivariate statistical moments for side channel vulnerability evaluation | |
WO2014145341A2 (en) | K-grid for clustering data objects | |
US10296315B2 (en) | Multiple-thread processing methods and apparatuses | |
Anbar et al. | Where should the threads go? leveraging hierarchical data locality to solve the thread affinity dilemma |
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 |