用于微处理器系统中的多维索引的方法和设备的制作方法

文档序号:6544001阅读:162来源:国知局
用于微处理器系统中的多维索引的方法和设备的制作方法
【专利摘要】用于微处理器系统中的多维索引的方法和设备。当要执行OpenCL内核时,基于表示所述内核的各个索引维度所需的最大值所需的比特数,来确定要用于内核调用的索引的位域索引表示。然后准备描述所述位域索引表示如何分区的位域布局数据结构(33)以及指示要用于内核的最大索引维度值的最大值数据结构(32)。然后处理器在最大值数据结构(32)所指示的索引空间上执行内核调用(36)。将根据所述位域布局数据结构(33)配置的位域索引表示(35、37、38)与各个内核调用关联以指示其索引。
【专利说明】用于微处理器系统中的多维索引的方法和设备

【技术领域】
[0001] 本发明涉及一种用在微处理器系统中的多维机制,具体地讲,涉及一种用于执行 大量计算内核的系统的多维内核调用索引机制,例如,在该系统中,这些内核在计算着色器 (compute-shader) API (类似 OpenCL 和 DirectCompute)下执行。

【背景技术】
[0002] 如本领域中已知的,OpenCL (开放计算语言)是一种标准化框架,其用于编写在由 CPU (中央处理单元)、GPU (图形处理单元)和/或其它处理器组成的异构平台上执行的程 序。它包括用于编写"内核"(用于执行给定功能的程序)的语言以及用于定义然后控制将 在其上执行内核的平台的API (应用程序接口)。OpenCL的典型应用是使用图形处理单元 (图形处理器)进行高度并行数据处理操作,诸如图像处理(例如,滤波)、纹理或其它数据阵 列压缩、迭代地解微分方程等。
[0003] 在OpenCL API下,"内核"是被调用很多次的(通常较小的)程序。内核的典型应 用是并行地执行大的计算,其中内核的各个调用仅执行计算的一小部分(例如,使图像的给 定区域被处理或者纹理的给定区域被压缩)。内核调用并行地运行,除了特定限制(将在下 面进一步讨论)之外,它们之间没有执行顺序的限制。对于这种布置方式,各个内核调用需 要能够被标识,以便使得能够对总体计算的不同部分进行相同内核的不同调用。例如,各个 内核调用必须知道它将要处理所关注的数据集(例如,图像)的哪一特定部分。这通常通过 利用适当的内核调用ID或索引对内核调用进行索引来实现(然后可使用所述索引来(例如) 标识用于所关注的调用的数据集等)。例如,索引可由内核解释以标识要处理的一个特定图 像像素位置或者要进行解交织的视频缓冲器的行、等等。
[0004] 在OpenCL API中,各个内核调用具有调用ID(标识符),调用ID由两个主要部分构 成:所谓的"工作组"ID和"工作项"ID。"工作组"是OpenCL中用来将内核调用组织成定义的 组的机制。工作组的特点在于,给定工作组内的所有内核调用能够参与"屏障(barrier)"。 (如本领域已知的,"屏障"是一种并行计算构造,其中应用了屏障的所有内核调用需要执行 达到特定阶段,然后才使得它们中的任何内核调用能够从该阶段继续)。单个工作组内的所 有内核调用具有相同的工作组ID。给定工作组内的各个内核调用具有在工作组内唯一的工 作项ID (使得工作组ID和工作项ID -起唯一地标识所关注的内核调用)。
[0005] OpenCL中的工作组ID和工作项ID各自由3个整数的元组组成。因此这些元组定 义6维索引空间。当指定执行的内核时,也将为其定义其索引空间的维度,S卩,所关注的内 核的内核调用ID的各个维度可具有的最大值。然后,执行该内核的处理器针对为该内核指 定的索引空间内的各个点执行一个内核调用。
[0006] 在OpenCL中将定义工作组ID的工作组整数的大小限制为32比特。
[0007] 定义工作项ID的整数的大小由最大允许工作组大小决定,例如,可以是任一个工 作组中的1024个工作项。定义工作项ID的各个整数必须能够表示工作组中的可能工作项 的总数,因为将无法知道工作项如何在工作项ID的三个维度上分布(例如,它们可仅全部 沿着一个维度排列)。因此,如果工作组可包含最多1024个工作项,则各个工作项整数将需 要10比特。
[0008] 因此,以这种方式表示完整OpenCL内核调用ID将需要:
[0009] 对于工作组ID,3 X 32=96比特
[0010] 对于工作项ID,3X10=30比特(其中各个工作组可包含最多1024个工作项),
[0011] 其和为126比特。图1示出这种情况,并且示出以这种方式表示OpenCL内核调用 ID所需的字段。
[0012] 当使用内核调用时,需要将该126比特ID与各个内核调用关联并且针对各个内核 调用跟踪所述ID。因此,这为处理带来相当显著的开销。
[0013] 已知的是,尝试利用执行单元方法来降低图形处理器中的内核调用ID的使用 成本,该执行单元方法将内核调用一起分成16至64个内核调用的组,然后严格锁步 (lockstep)地运行。这将调用索引的成本分摊到"锁步的"调用组上。然而,这种技术无法 用于以发散分支为特点的内核(因为锁步组中的调用必须被一起锁定)。
[0014] 在CPU系统中还已知使各个执行线程依次逐个地执行内核调用。在这种情况下, 通常各个线程中仅需要维持一个完整的内核调用索引,因为当执行线程从一个调用进行至 下一调用时,此索引通常可利用简单的加法来更新。然而,尽管这在每处理核通常仅有4个 线程的CPU系统中是可行的,但是当处理核中的执行线程的可能数量变得较大时,这种技 术的成本变得非常高(图形处理器通常就是这种情况,其中(例如)每处理核可有1024个线 程)。


【发明内容】

[0015] 因此 申请人:相信仍有余地改进用于处理诸如内核调用索引的多维索引的技术,尤 其是在这些内核用于图形处理器和计算引擎的情况下。
[0016] 根据本发明的第一方面,提供了一种在系统中处理内核调用的方法,在所述系统 中针对要被执行的内核定义了一组多个索引维度,内核的单独的调用将在所述一组多个索 引维度上执行,所述方法包括以下步骤:
[0017] 针对定义了一组索引维度的要被执行的内核:
[0018] 确定表示要针对内核的索引的各个维度指示的最大值所需的比特数;
[0019] 基于所确定的表示要针对内核的索引的各个维度指示的最大值所需的比特数,来 确定要用于指示内核的调用的索引的位域(bitfield)索引表示;
[0020] 为内核准备位域布局数据结构,该位域布局数据结构指示表示内核的索引的各个 维度的比特在所确定的要用于指示内核的调用的索引的位域索引表示内的布局;
[0021] 将所述位域布局数据结构提供给要执行所述内核的一个处理器或多个处理器;以 及
[0022] 当要执行内核调用时,将位域索引表示与所述内核调用关联,以指示所述内核调 用的内核调用索引,所述位域索引表示根据由所述位域布局数据结构指示的位域布局来配 置并且在由所述位域布局数据结构指示的各个比特位置中指示所述内核调用的各个索引 维度的值。
[0023] 根据本发明的第二方面,提供了一种用于处理内核调用的系统,其中针对要被执 行的内核定义了一组多个索引维度,内核的单独的调用将在所述一组多个索引维度上执 行,所述系统包括:
[0024] -个或更多个处理器,其被配置为针对定义了一组索引维度的要被执行的内核:
[0025] 确定表示要针对内核的索引的各个维度指示的最大值所需的比特数;
[0026] 基于所确定的表示要针对内核的索引的各个维度指示的最大值所需的比特数,来 确定要用于指示内核的调用的索引的位域索引表示;
[0027] 为内核准备位域布局数据结构,该位域布局数据结构指示表示内核的索引的各个 维度的比特在所确定的要用于指示内核的调用的索引的位域索引表示内的布局;并且
[0028] 将所述位域布局数据结构提供给要执行所述内核的一个处理器或多个处理器;
[0029] 所述系统还包括:
[0030] 一个或更多个处理器,其被配置为:
[0031] 执行所述内核;并且
[0032] 当要执行内核调用时,将位域索引表示与所述内核调用关联,以指示所述内核调 用的内核调用索引,所述位域索引表示根据由所述位域布局数据结构指示的位域布局来配 置并且在由所述位域布局数据结构指示的各个比特位置中指示所述内核调用的各个索引 维度的值。
[0033] 在本发明中,当内核将被执行时,首先确定表示内核的ID的各个不同维度所需的 最大比特数,基于所确定的表示内核的ID的各个维度所需的最大比特数来确定将用于表 示内核的各个调用的索引的位域索引表示数据结构。换言之,各个内核调用的索引被打包 成基于所确定的表示内核的ID的各个维度所需的最大比特数的数据结构。
[0034] 如将在下面进一步讨论的,这将具有这样的效果:与(例如)在任何给定维度中使 用足够的比特来表示给定内核ID可具有的理论最大值相比,可更有效地表示内核调用索 弓丨。通过确定表示索引的各个维度所需的实际最大比特数,可避免为了表示各个内核调用 的索引而提供不必要的比特。
[0035] 因此,根据本发明的第三方面,提供了一种在系统中表示内核调用的索引的方法, 在所述系统中针对要被执行的内核定义了一组多个索引维度,内核的单独的调用将在所述 一组多个索引维度上执行,所述方法包括以下步骤:
[0036] 针对定义了一组索引维度的要被执行的内核:
[0037] 针对内核的索引的各个维度,确定表示内核的索引的该维度所需的最大比特数; 以及
[0038] 将要执行的各个内核调用的索引打包成基于所确定的表示为内核定义的各个索 引维度所需的最大比特数的数据结构。
[0039] 根据本发明的第四方面,提供了一种用于在系统中表示内核调用的索引的系统, 在该系统中,针对要被执行的内核定义了一组多个索引维度,内核的单独的调用将在所述 一组多个索引维度上执行,所述系统包括:
[0040] 一个或更多个处理器,其被配置为针对定义了一组索引维度的要被执行的内核:
[0041] 针对内核的索引的各个维度,确定表示内核的索引的该维度所需的最大比特数; 并且
[0042] 将要执行的各个内核调用的索引打包成基于所确定的表示为内核定义的各个索 引维度所需的最大比特数的数据结构。
[0043] 尽管本发明在确定表示给定内核的各个维度所需的比特数以及位域索引表示的 位域布局方面需要附加处理,但是 申请人:认为通过更有效地表示各个内核调用ID而实现 的潜在节省将比这更重要。
[0044] 因此,本发明(除了别的以外)提供了一种用于以较低成本提供内核调用ID的机 制。此外,与现有技术相比,本发明可用于以发散分支为特点的内核(其支持发散流控制)和 大量线程,同时仍提供更有效且成本较低的用于处理内核调用ID的机制。
[0045] 在一些实施方式中,所述系统和/或设备包括一个或更多个存储器或存储器装置 和/或所述一个处理器或多个处理器可与一个或更多个存储器或存储器装置通信,所述存 储器或存储器装置存储内核的位域布局数据结构和/或存储执行的各个内核调用的位域 索引表示和/或存储用于执行内核的软件代码和/或存储本文所述的数据和/或存储本文 所述的数据结构和/或存储用于执行本文所述的处理的软件。所述系统、设备和/或一个 处理器或多个处理器还可与主机CPU和/或图形处理器通信(或包括其一部分)以用于处理 本文所述的数据和/或执行本文所述的处理。
[0046] 本发明还扩展至位域索引表示本身的确定,并且相应地,扩展至指示内核调用的 索引的位域索引表示的使用。
[0047] 因此,根据本发明的第五方面,提供了一种操作处理系统的方法,在所述系统中, 针对要被执行的内核定义了一组多个索引维度,内核的单独的调用将在所述一组多个索引 维度上执行,所述方法包括以下步骤:
[0048] 针对定义了一组索引维度的要被执行的内核:
[0049] 针对内核的索引的各个维度,确定表示内核的索引的该维度所需的最大比特数;
[0050] 基于所确定的表示内核的索引的各个维度所需的最大比特数,来确定要用于指示 内核的调用的索引的位域索引表示;以及
[0051] 为内核准备位域布局数据结构,该位域布局数据结构指示表示内核的索引的各个 维度的比特在所确定的要用于指示内核的调用的索引的位域索引表示内的布局。
[0052] 根据本发明的第六方面,提供了一种用在系统中的设备,在所述系统中,针对要被 执行的内核定义了一组多个索引维度,内核的单独的调用将在所述一组多个索引维度上执 行,所述设备包括:
[0053] -个或更多个处理器,其被配置为针对定义了一组索引维度的要被执行的内核:
[0054] 针对内核的索引的各个维度,确定表示内核的索引的该维度所需的最大比特数;
[0055] 基于所确定的表示内核的索引的各个维度所需的最大比特数,来确定要用于指示 内核的调用的索引的位域索引表示;并且
[0056] 为内核准备位域布局数据结构,该位域布局数据结构指示表示内核的索引的各个 维度的比特在所确定的要用于指示内核的调用的索引的位域索引表示内的布局。
[0057] 根据本发明的第七方面,提供了一种对在系统中执行的内核调用进行索引的方 法,在所述系统中,针对要被执行的内核定义了一组多个索引维度,内核的单独的调用将在 所述一组多个索引维度上执行,所述方法包括以下步骤:
[0058] 针对定义了一组索引维度的要被执行的内核:
[0059] 读取内核的位域布局数据结构,该位域布局数据结构指示表示内核的索引的各个 维度的比特在要用于指示内核的调用的索引的位域索引表示内的布局;以及
[0060] 当要执行内核的调用时,将位域索引表示与所述内核调用关联,以指示所述内核 调用的索引,所述位域索引表示在由所述内核的位域布局数据结构指示的各个比特位置中 指示所述内核调用的各个索引维度的值。
[0061] 根据本发明的第八方面,提供了一种用于在系统中执行内核调用的处理器,在所 述系统中,针对要被执行的内核定义了一组多个索引维度,内核的单独的调用将在所述一 组多个索引维度上执行,所述处理器被配置为:
[0062] 针对定义了 一组索引维度的要被执行的内核读取位域布局数据结构,所述位域布 局数据结构指示表示内核的索引的各个维度的比特在要用于指示内核的调用的索引的位 域索引表示内的布局;并且被配置为:
[0063] 当要执行内核的调用时,将位域索引表示与所述内核调用关联,以指示所述内核 调用的索引,所述位域索引表示在由所述内核的位域布局数据结构指示的各个比特位置中 指示所述内核调用的各个索引维度的值。
[0064] 在一些实施方式中,所述系统和/或设备包括一个或更多个存储器或存储器装置 和/或所述一个处理器或多个处理器可与一个或更多个存储器或存储器装置通信,所述存 储器或存储器装置存储内核的位域布局数据结构和/或存储执行的各个内核调用的位域 索引表示和/或存储用于执行内核的软件代码和/或存储本文所述的数据和/或存储本文 所述的数据结构和/或存储用于执行本文所述的处理的软件。所述系统、设备和/或一个 处理器或多个处理器还可与主机CPU和/或图形处理器通信(或包括其一部分)以用于处理 本文所述的数据和/或执行本文所述的处理。
[0065] 位域索引表示可被配置为基于所确定的表示内核的ID的各个维度所需的比特数 来以任何期望且合适的方式表示调用索引。
[0066] 优选地,位域索引表示包括用于要表示的不同索引维度中的一个或更多个或一些 (优选地,多个,并且优选地,每一个)的单独的字段。
[0067] 各个索引维度字段中的比特数优选地(至少部分地)基于表示将用于所关注的索 引维度的最大值所需的比特数。该最大值可以(例如)是针对所关注的索引维度定义或指定 的最大值,或者如将在下面进一步讨论的,该最大值可以是在用所关注的索引维度的原始 ("真")最大值减去了偏移之后将需要指示的最大值。类似地,表示内核的索引的维度所需 的最大比特数优选地基于将用于所关注的索引维度的最大值,该最大值同样优选地是针对 所关注的索引维度定义或指定的最大值或者在用所关注的索引维度的原始("真")最大值 减去了偏移之后将需要指示的最大值。
[0068] 在优选实施方式中,位域索引表示中的一些(超过一个)索引维度字段的大小α匕 特数)等于表示针对所关注的索引维度指示的最大值所需的比特数。在一个优选实施方式 中,对于所有索引维度字段而言均是如此,但是在其它优选实施方式中(如将在下面进一步 讨论的),对于一些但非所有(例如,除了一个之外的所有)的索引维度字段而言是如此。 [0069] 在优选实施方式中,位域索引表示被配置为使得索引空间维度在位域内按照预定 顺序表示,优选地从最低维度到最高维度,优选地在位域内从右至左(比特0至最高比特)。 (在OpenCL的情况下,最低三个索引维度字段因此将指示工作项ID,最高三个索引维度字 段将指示工作组ID。)
[0070] 在尤其优选的实施方式中,如果针对内核的索引空间指定的维度具有单个、恒定 的值(而非值的范围),则代替在位域表示中留出比特以指示该值,其未被记录在位域表示 中(即,在位域表示中未向该索引维度分配比特),相反地,在解释位域时假设其由位域表示 指示的值为一以导出调用索引。
[0071] 使用确定的各个内核的位域索引表示所需的实际比特数(即,表示内核索引空间 的各个维度的最大值所需的比特数)总是可行的。在这种情况下,位域表示将包括确定的表 示内核的索引的各个维度的最大值所需的总比特数。
[0072] 然而,在尤其优选的实施方式中,为位域索引表示留出预定数量的比特(例如并且 优选地,32比特)(S卩,独立于给定内核的索引空间的实际大小,所使用的位域索引表示(针 对各个内核)包括预定数量的比特)。这样做的优点在于,本发明中使用的位域索引表示将 使用已知数量的比特,而非在不同内核的索引表示之间可能变化的数量的比特。
[0073] 在此布置方式中,如果内核的索引空间不需要将所述预定数量的比特全部用于位 域表示,则任何不需要的比特可(例如并且优选地)被指派给索引维度之一(例如并且优选 地,最高维度)的字段并被设置为零。
[0074] 位域布局数据结构可以按照任何期望的方式指示位域索引表示中的不同维度的 位域位置。在一个优选实施方式中,位域布局数据结构指示位域索引表示内的索引维度字 段的起始比特,优选地从位域索引表示中的比特〇开始并从最低维度至最高维度进行。在 另一优选实施方式中,位域布局数据结构指示位域索引表示中的用于内核的索引的各个维 度的比特数,同样优选地从位域索引表示中的比特〇开始并从最低维度至最高维度进行。
[0075] 位域布局数据结构可被提供给处理器,所述处理器将以任何期望且合适的方式执 行内核。例如,位域布局数据结构可被存储在存储器、寄存器等中,可由所关注的处理器从 那里读取位域布局数据结构,或者位域布局数据结构可被发送给所关注的处理器等。因此, 在优选实施方式中,本发明的方法和系统包括步骤或处理器,其被配置为:为内核准备并存 储位域布局数据结构,该位域布局数据结构指示表示内核的索引的各个维度的比特在所确 定的要用于指示内核的调用的索引的位域索引表示内的布局。
[0076] 在尤其优选的实施方式中,除了生成将提供给将执行内核的处理器的位域布局数 据结构之外,还生成内核索引最大维度值数据结构并将其提供给将执行内核的处理器,所 述内核索引最大维度值数据结构针对内核的索引的各个维度指示要用于内核的调用的该 维度的最大值。然后这将有效地向将执行内核的处理器指示将在其上执行内核的工作组的 大小,进而指示发起的内核调用的数量(即,将在其上执行内核调用的索引空间的大小)。此 内核索引最大值数据结构优选地被存储在具有由位域布局数据结构指示的配置的数据结 构中以便于提供给将执行内核的一个处理器或多个处理器。
[0077] 因此,在优选实施方式中,本发明的方法还包括以下步骤:
[0078] 在具有由位域布局数据结构指示的配置的数据结构中准备并存储内核索引最大 维度值数据结构,该内核索引最大维度值数据结构针对内核的索引的各个维度指示将用于 内核的调用的该维度的最大值;以及
[0079] 将所述内核索引最大值数据结构提供给将执行内核的一个处理器或多个处理器。
[0080] 类似地,在优选实施方式中,本发明的系统和处理器还被配置为:
[0081] 在具有由位域布局数据结构指示的配置的数据结构中准备并存储内核索引最大 维度值数据结构,该内核索引最大维度值数据结构针对内核的索引的各个维度指示将用于 内核的调用的该维度的最大值;并且
[0082] 将所述内核索引最大值数据结构提供给将执行内核的一个处理器或多个处理器。
[0083] 表示内核的ID的各个维度所需的比特数的确定以及位域布局结构和最大维度值 数据结构(如果提供的话)的生成可根据需要来执行。在优选实施方式中,其由生成将发送 给将执行内核的处理器的内核执行指令的主机CPU (处理器)上的驱动器来执行。
[0084] 然后,优选地将位域布局和最大维度值数据结构与内核执行指令一起提供给将执 行内核的处理器或者将执行内核的多个处理器(例如,在多核系统中)。然后,处理器优选地 生成并执行必要的内核调用,并将本发明的位域索引表示形式的索引与各个调用关联。
[0085] 执行内核的各个处理器可以是任何合适的此类处理器。其优选为图形处理器,但 是也可以(例如)是计算引擎。
[0086] 将执行内核的例如图形处理器可根据需要生成并执行内核所需的内核调用。优选 地,这通过在由最大维度值数据结构指示的索引空间上迭代,针对由最大维度值数据结构 定义的索引空间内的各个点生成并执行一个内核调用来完成。
[0087] 处理器可使用(优选使用)位域布局数据结构中的信息来解释最大维度值数据结 构(即,确定最大维度值数据结构中的哪些比特指示ID的哪一维度的值)。
[0088] 执行内核的处理器(例如,图形处理器)优选地在其开始各个调用时生成各个内核 调用的索引。处理器将使用位域布局数据结构中的信息来将各个调用的索引打包成由位域 布局数据结构指示的位域索引表示数据结构。
[0089] 如本领域已知的,如此打包的各个索引(ID)应该与所关注的调用关联并用于(例 如)标识所关注的内核调用应该处理哪一组数据以及它应该将其结果存储或者输出到哪 里。为此,索引可(例如)被适当地存储在存储器中。
[0090] 当需要使用调用的索引时,将读取针对该调用生成(与之关联)的打包的索引,然 后使用位域布局数据结构中的信息来解释打包的索引(即,哪些比特指示索引的哪一维度 的值),以确定调用的索引。因此,在尤其优选的实施方式中,本发明还包括使用位域布局数 据结构来解释内核调用的打包的索引位域表示。
[0091] 尽管使其"完整"打包索引与各个调用关联(即,各个调用具有位域打包索引的单 独、完整表示)将是可行的,并且这仍将提供更有效的表示内核调用索引的机制,但是申请 人进一步认识到,如果内核调用可被一起分成定义的组以进行处理(例如,OpenCL的工作组 就是如此),则可更加有效地使用本发明的索引表示技术。
[0092] 具体地讲,如果(OpenCL中就是如此)内核调用可被分成定义的最大数量的调用 (OpenCL中的工作项)的组(OpenCL中的工作组),并且这些元素在内核索引空间中由不同的 维度指示,则一些索引维度将对于给定调用组内(例如,给定工作组内)的所有调用(例如, 工作项)保持相同的值。这实际上意味着一些索引维度将基于每调用(每工作项)来变化值, 而其它索引维度的值将仅基于每调用组(每工作组)来变化。
[0093] 申请人:认识到,在这种情况下,那么可针对组中的所有调用共同使用(并且(例如) 存储)每调用组的维度值,使得仅需要基于每调用存储基于每调用变化的维度。这可提供进 一步的节省,因为基于每调用使用(并且(例如)存储)更有限量的索引数据。
[0094] 因此,在尤其优选的实施方式中,按照两个部分处理并使用(并且(例如)存储)给 定内核调用的位域索引表示,第一部分专用于所关注的内核调用,第二部分由内核调用组 共享(共同使用)。优选地,第二部分仅针对其所涉及的内核调用组存储一次。然后,当需要 给定内核调用的索引时,优选地将索引表示的两个部分级联在一起以得到完整位域索引表 示(如上所述,各个部分和级联的部分可利用(优选地利用)位域布局数据结构中的信息来 解释,以确定调用索引)。
[0095] 在此布置方式中,内核调用的调用索引实际上以这样的方式被分解,使得能够检 索正确的索引,同时基于每调用仅需要跟踪更有限量的信息(而非完整内核调用索引)。 [0096] 如上所述,索引表示的第一、每调用(调用特定)部分优选地表示将基于每调用变 化的索引维度(在OpenCL中,将指示工作项ID的维度),而索引表示的第二、共享部分表示 将基于每调用组变化的那些索引维度(在OpenCL中,指示工作组ID的维度)。
[0097] 基于逐内核确定表示每调用维度到底需要索引表示的哪些比特,然后将那些比特 仅与各个调用关联将是可行的。然而, 申请人:认识到,通常,可确定表示基于每调用变化的 索引维度所需的比特数的保守估计,然后将各个位域索引表示的此比特数与各个调用关 联,而无需每次确定每调用维度到底需要多少比特。
[0098] 例如,如果给定调用组(例如,工作组)可包含的调用的最大数量被设置为2~P (通 常就是如此),则可确定表示这么多的调用所需要的最大可能比特数,而不管它们在整个索 引维度上如何分布,然后留出这么多比特以与各个调用关联。
[0099] 因此,优选地确定假定调用组可包含的最大允许调用数,表示任何每调用索引维 度配置所需的最大比特数,然后将此比特数设置为每调用存储的比特数。
[0100] 例如,在工作组可包含2~p个工作项并且可使用三个维度表示工作项索引的 OpenCL中, 申请人:发现,在本发明的系统中表示三个工作项ID维度应该需要不超过P+2比 特,而不管这P~2个工作项在三个工作项维度上如何分布。(例如,如果OpenCL工作组中 有最多1024 (2~10)个工作项,如果工作项全部沿着一个索引维度分布,则将需要10比特 来表示;如果它们尽可能等同地沿着各个索引维度分布(即,沿着各个维度?索引值1-10 (10X 10X 10=1000)),则各个维度将需要4比特来表示该维度中的可能索引值,从而总共 需要12比特来表示所有工作项ID。)
[0101] 因此,在尤其优选的实施方式中,使索引的打包位域表示中的预定数量的比特与 各个调用关联(基于每调用存储),位域索引表示的剩余比特与内核调用组关联(基于每调 用组(例如,工作组)存储)。所述预定数量的比特优选地基于给定调用组所允许的最大调用 数,优选为P+2比特(其中最大调用组大小为2~P调用)。
[0102] 申请人:还认识到,如果如上所述将位域索引表示限制为预定数量的比特,可存在 索引空间实际上无法通过位域表示所允许的所述预定数量的比特来完整表示的内核。在内 核具有超过2~N个调用的情况下就是如此,其中N是位域索引表示所允许的比特数。如果 是这样,则内核的索引空间优选被细分或分区为索引空间的两个或更多个子集(分区),对 于所述子集(分区),调用数量可利用位域索引表示所允许的所述预定数量的比特表示。然 后优选地以本发明的方式处理这样的各个索引空间子集(分区)。
[0103] 因此,在尤其优选的实施方式中,本发明还包括:将为内核指定的索引空间分区 (分割)成索引空间的两个或更多个子集,然后针对各个相应的索引空间子集(分区)以本发 明的方式确定并使用位域索引表示。
[0104] 优选地,检查以看出内核的索引空间是否需要被分区(然后相应地,将索引空间分 区或不分区)。在优选实施方式中,这通过确定表示为内核指定的完整索引空间所需的比特 数,然后看出其是否超过为位域索引表示指定的预定比特数来完成。
[0105] 将理解,需要以这种方式对内核的索引空间进行分区的程度将取决于位域索引表 示所允许的比特数以及内核的索引空间的典型大小。可在位域表示的大小和需要进行的索 引空间分区的量之间进行权衡来选择位域表示所允许的比特数。 申请人:发现,位域索引表 示使用32比特实现了位域索引表示的大小与需要进行的索引空间分区的量之间的适当平 衡。
[0106] 如果索引空间被分区为两个或更多个子集,则分区(细分)优选地使得不会有定义 的内核调用组(在OpenCL中,工作组)在不同的分区之间被分割(S卩,各个分区优选包含整个 调用组:不会有分区仅包含定义的调用组(工作组)的一部分,而非全部)。
[0107] 申请人:还认识到,如果内核的索引空间需要被分区,则对于"较高"的分区,那些维 度的一些或全部索引空间维度可能不是从值一开始,而是将从较高的整数值开始。在这种 情况下,位域索引表示可能本身无法表示这些较高的值。为此,在尤其优选的实施方式中, 为所关注的内核调用分区(子集)准备另一数据结构,其指示将与由所关注的维度的位域表 示指示的索引值相加的偏移值。然后,将该偏移与由位域索引表示针对该维度指示的值相 力口,以得到将用于所关注的调用的实际维度值。对于给定索引空间分区(子集),维度偏移值 仅需要存储一次(优选地仅存储一次),因为它们可共用于所关注的分区内的所有调用。
[0108] 还存在这样的情况(至少在OpenCL中是如此):为内核指定的索引空间可被指定为 在任何给定索引维度中从大于一的整数开始。在这种情况下,同样地,位域索引表示本身无 法表示所需范围的维度值,但是如上所述,这可通过将适当的维度偏移与所关注的内核关 联来实现。
[0109] 因此,在尤其优选的实施方式中,针对位域索引表示所指示的一个或更多个索引 维度可生成并存储(优选地生成并存储)将与位域索引表示所指示的值相加的偏移值。优选 地,针对由给定的一组位域索引表示指示的给定索引空间共享并存储单份偏移值。
[0110] 尽管以上具体参照单个内核的处理讨论了本发明,但是如本领域技术人员将理解 的,在实践中将存在要执行的多个内核。在这种情况下,优选地以本发明的方式处理和对 待各个内核。如本领域技术人员将理解的,要执行的各个内核将根据其索引维度的配置而 具有其自己的位域索引表示:各个内核没有必要具有相同的位域索引表示,实际上,不同的 内核很可能将具有不同的位域表示(例如,在各个索引维度的字段在位域表示内的布局方 面)。
[0111] 尽管以上具体参照OpenCL描述了本发明,但是如本领域技术人员将理解的,其同 样适用于在多维索引空间中执行多个内核调用的其它系统,例如DirectCompute。
[0112] 实际上, 申请人:相信,本发明适用于更一般的使用多维索引,例如,需要将多维索 引与索引所涉及的特定实体(例如,内核或数据结构)关联的任何应用。
[0113] 其示例包括处理计算机图形时顶点着色器索引的处理。当图形处理器以实例模式 操作时,顶点着色器将处理给定顶点的多个实例。处理的顶点的各个实例将相应地具有顶 点ID以及与其关联的实例ID二者。可利用本发明的技术以上述方式更有效地处理并打包 这些ID。例如并且优选地,顶点ID可被视作等同于OpenCL中的工作组ID,实例ID等同于 OpenCL中的工作项ID。
[0114] 因此,根据另外的方面,本发明扩展至本发明的多维索引技术的更一般的使用。
[0115] 因此,根据本发明的第九方面,提供了一种在系统中表示索引的方法,在所述系统 中,为要处理的实体定义了一组多个索引维度,实体的单独的实例将在所述一组多个索引 维度上被处理,所述方法包括以下步骤:
[0116] 针对定义了一组索引维度的要处理的实体:
[0117] 针对实体的索引的各个维度,确定表示实体的索引的该维度所需的最大比特数; 以及
[0118] 将要处理的实体的各个实例的索引打包成基于所确定的表示为实体定义的各个 索引维度所需的最大比特数的数据结构。
[0119] 根据本发明的第十方面,提供了一种在系统中表示要处理的实体的实例的索引的 方法,在所述系统中,为要处理的实体定义了一组多个索引维度,实体的单独的实例将在所 述一组多个索引维度上被处理,所述系统包括:
[0120] 一个或更多个处理器,其被配置为针对定义了一组索引维度的要处理的实体:
[0121] 针对实体的索引的各个维度,确定表示实体的索引的该维度所需的最大比特数; 并且
[0122] 将要处理的实体的各个实例的索引打包成基于所确定的表示为实体定义的各个 索引维度所需的最大比特数的数据结构。
[0123] 根据本发明的第十一方面,提供了一种操作处理系统的方法,在所述处理系统中, 为要处理的实体定义了一组多个索引维度,实体的单独的实例将在所述一组多个索引维度 上被处理,所述方法包括以下步骤:
[0124] 针对定义了一组索引维度的要处理的实体:
[0125] 针对实体的索引的各个维度,确定表示实体的索引的该维度所需的最大比特数;
[0126] 基于所确定的表示实体的索引的各个维度所需的最大比特数,来确定将用于指示 实体的实例的索引的位域索引表示;以及
[0127] 为实体准备位域布局数据结构,该位域布局数据结构指示表示实体的索引的各个 维度的比特在所确定的将用于指示实体的实例的索引的位域索引表示内的布局。
[0128] 根据本发明的第十二方面,提供了一种用在系统中的设备,在所述系统中,为要处 理的实体定义了一组多个索引维度,实体的单独的实例将在所述一组多个索引维度上被处 理,所述设备包括:
[0129] 一个或更多个处理器,其被配置为针对定义了一组索引维度的要处理的实体:
[0130] 针对实体的索引的各个维度,确定表示实体的索引的该维度所需的最大比特数;
[0131] 基于所确定的表示实体的索引的各个维度所需的最大比特数,来确定将用于指示 实体的实例的索引的位域索引表示;并且
[0132] 为实体准备位域布局数据结构,该位域布局数据结构指示表示实体的索引的各个 维度的比特在所确定的将用于指示实体的实例的索引的位域索引表示内的布局。
[0133] 根据本发明的第十三方面,提供了一种对在系统中被处理的实体的实例进行索引 的方法,在所述系统中,可为要处理的实体定义了一组多个索引维度,实体的单独的实例将 在所述一组多个索引维度上被处理,所述方法包括以下步骤:
[0134] 针对定义了一组索引维度的要处理的实体:
[0135] 读取实体的位域布局数据结构,该位域布局数据结构指示表示实体的索引的各个 维度的比特在将用于指示实体的实例的索引的位域索引表示内的布局;以及
[0136] 当要处理实体的实例时,将位域索引表示与所述实体的实例关联,以指示所述实 体的实例的索引,所述位域索引表示在由所述实体的位域布局数据结构指示的各个比特位 置中指示所述实体的实例的各个索引维度的值。
[0137] 根据本发明的第十四方面,提供了一种在系统中处理实体的实例的处理器,在所 述系统中,可为要处理的实体定义了一组多个索引维度,实体的单独的实例将在所述一组 多个索引维度上被处理,所述处理器被配置为:
[0138] 针对定义了一组索引维度的要处理的实体,读取实体的位域布局数据结构,该位 域布局数据结构指示表示实体的索引的各个维度的比特在将用于指示实体的实例的索引 的位域索引表示内的布局;
[0139] 并且被配置为:
[0140] 当要处理实体的实例时,将位域索引表示与所述实体的实例关联,以指示所述实 体的实例的索引,所述位域索引表示在由所述实体的位域布局数据结构指示的各个比特位 置中指示所述实体的实例的各个索引维度的值。
[0141] 根据本发明的第十五方面,提供了一种在系统中处理实体的实例的方法,在所述 系统中,为要处理的实体定义了一组多个索引维度,实体的单独的示例将在所述一组多个 索引维度上被处理,所述方法包括以下步骤:
[0142] 针对定义了一组索引维度的要处理的实体:
[0143] 确定表示将针对实体的索引的各个维度指示的最大值所需的比特数;
[0144] 基于所确定的表示将针对实体的索引的各个维度指示的最大值所需的比特数,来 确定将用于指示实体的实例的索引的位域索引表示;
[0145] 为实体准备位域布局数据结构,该位域布局数据结构指示表示实体的索引的各个 维度的比特在所确定的将用于指示实体的实例的索引的位域索引表示内的布局;
[0146] 将所述位域布局数据结构提供给将处理所述实体的一个处理器或多个处理器;以 及
[0147] 当要处理实体的实例时,将位域索引表示与所述实体的实例关联,以指示所述实 体的实例的索引,所述位域索引表示根据由所述位域布局数据结构指示的位域布局来配置 并且在由所述位域布局数据结构指示的各个比特位置中指示所述实体的实例的各个索引 维度的值。
[0148] 根据本发明的第十六方面,提供了一种处理要处理的实体的实例的系统,在该系 统中,为要处理的实体定义了一组多个索引维度,实体的单独的示例将在所述一组多个索 引维度上被处理,所述系统包括:
[0149] 一个或更多个处理器,其被配置为针对定义了一组索引维度的要处理的实体:
[0150] 确定表示将针对实体的索引的各个维度指示的最大值所需的比特数;
[0151] 基于所确定的表示将针对实体的索引的各个维度指示的最大值所需的比特数,来 确定将用于指示实体的实例的索引的位域索引表示;
[0152] 为实体准备位域布局数据结构,该位域布局数据结构指示表示实体的索引的各个 维度的比特在所确定的将用于指示实体的实例的索引的位域索引表示内的布局;并且
[0153] 将所述位域布局数据结构提供给将处理所述实体的一个处理器或多个处理器;
[0154] 所述系统还包括:
[0155] -个或更多个处理器,其被配置为:
[0156] 处理所述实体;并且
[0157] 当要处理实体的实例时,将位域索引表示与所述实体的实例关联,以指示所述实 体的实例的索引,所述位域索引表示根据由所述位域布局数据结构指示的位域布局来配置 并且在由所述位域布局数据结构指示的各个比特位置中指示所述实体的实例的各个索引 维度的值。
[0158] 如本领域技术人员将理解的,如果适当的话,本发明的这些方面和实施方式可包 括(优选地包括)本文所述的本发明的优选和可选特征中的任一个或更多个或全部。
[0159] 例如,多维索引优选表示OpenCL或DirectCompute内核调用、在图形处理系统中 要处理的顶点的特定实例、高阶表面控制点、要跟踪的射线(例如,在射线跟踪图形处理系 统中)等。相应地,要处理的实体优选地包括诸如顶点、高阶表面控制点、要跟踪的射线或者 程序或例程(例如内核)等的数据结构。
[0160] 类似地,位域索引表示优选地包括预定数量的比特,如果需要,索引空间优选地被 分区为索引空间的两个或更多个子集等。
[0161] 同样,所述方法和设备优选地还包括:在具有由位域布局数据结构指示的配置的 数据结构中准备并存储实体索引最大维度值数据结构,该实体索引最大维度值数据结构针 对实体的索引的各个维度指示将用于实体的实例的该维度的最大值;和/或优选地,将位 域布局数据结构和/或实体索引最大值数据结构提供给将处理所述实体的一个处理器或 多个处理器。
[0162] 在一些实施方式中,所述系统和/或设备包括一个或更多个存储器或存储器装置 和/或所述一个处理器或多个处理器可与一个或更多个存储器或存储器装置通信,所述存 储器或存储器装置存储内核的位域布局数据结构和/或存储执行的各个内核调用的位域 索引表示和/或存储用于执行内核的软件代码和/或存储本文所述的数据和/或存储本文 所述的数据结构和/或存储用于执行本文所述的处理的软件。所述系统、设备和/或一个 处理器或多个处理器还可与主机CPU和/或图形处理器通信(或包括其一部分)以用于处理 本文所述的数据和/或执行本文所述的处理。
[0163] 如本领域技术人员将理解的,各个内核调用(或实体实例索引)应该在执行内核调 用(或处理实体实例)时使用,以在内核调用(或实体实例)被执行(处理)的同时跟踪它,并 且(例如)检索将由所关注的内核调用处理(或用于实体实例)的数据并将内核调用(或实体 实例)的结果(输出)适当地存储。
[0164] 因此,在尤其优选的实施方式中,本发明的方法和设备和系统还包括执行(或者处 理器,其被配置为执行并使用)要被执行的内核的一个或更多个(并且优选地各个)内核调 用,并且当执行内核调用时,使用以本发明的方式指示的内核调用索引来:标识所关注的内 核调用;标识将针对所关注的内核调用处理的数据;和/或确定将所关注的内核调用的输 出存储在哪里。
[0165] 类似地,在尤其优选的实施方式中,本发明的方法和设备和系统还包括处理(或者 处理器,其被配置为处理并使用)要处理的实体的一个或更多个(并且优选地各个)实例,并 且当处理实体的实例时,使用以本发明的方式指示的实体实例索引来:标识所关注的实体 的实例;标识将针对所关注的实体的实例处理的数据;和/或确定将所关注的实体的实例 的输出存储在哪里。
[0166] 本发明的各种功能可以按照任何期望且合适的方式来实现。例如,本发明的功能 可根据需要以专用硬件或可编程硬件来实现。因此,例如,本发明的各种功能元件和"装置" 可包括能够操作以执行各种功能等的合适的一个处理器或多个处理器、功能单元、电路、处 理逻辑、微处理器布置方式等,例如适当专用的硬件元件、处理器或处理电路、和/或可被 编程以按照期望的方式操作的可编程硬件元件、处理器或处理电路。
[0167] 类似地,各种索引和其它值、数据结构等可以按照任何合适且期望的方式来定义、 实现和存储。
[0168] 这里还应该注意的是,如本领域技术人员将理解的,本发明的各种功能等可被复 制和/或在给定处理器上并行执行,和/或在多个处理器之间共享(例如,在多核系统中)。
[0169] 本发明适用于任何合适形式或配置的主机处理器、图形处理器、计算引擎等。
[0170] 本发明扩展至包括一个图形处理器或多个图形处理器或图形处理平台的微处理 器系统,其包括本文所述的本发明的任一个或更多个方面的设备或根据本文所述的本发明 的任一个或更多个方面的方法来操作。对于执行上述特定功能所需的任何硬件,这种系统 可包括这种系统所包括的常见功能单元等中的任一个或更多个或全部。
[0171] 根据本发明的方法可至少部分地利用软件(例如,计算机程序)来实现。因此,可以 看出从未来方面考虑,本发明提供了在安装在数据处理装置上时具体适于执行本文所述的 方法的计算机软件、包括在程序元件在数据处理装置上运行时执行本文所述的方法的计算 机软件代码部分的计算机程序元件、以及包括适于在程序在数据处理系统上运行时执行本 文所述的方法的所有步骤的代码装置的计算机程序。数据处理系统可以是微处理器、可编 程FPGA (现场可编程门阵列)等。
[0172] 本发明还扩展至包括这种软件的计算机软件载体,其在用于操作图形处理器或包 括数据处理装置的微处理器系统时,与所述数据处理装置结合使所述处理器或系统执行本 发明的方法的步骤。这种计算机软件载体可以是物理存储介质,例如ROM芯片、CD ROM或 盘,或者可以是信号,例如电线上的电信号、光学信号或卫星的无线电信号等。
[0173] 还将理解,并非本发明的方法的所有步骤均需要通过计算机软件来执行,因此从 更广的方面讲,本发明提供了计算机软件,这种软件安装在计算机软件载体上以用于执行 本文所阐述的方法的至少一个步骤。
[0174] 相应地,本发明可适当地实施为用于计算机系统的计算机程序产品。这种实现方 式可包括一系列计算机可读指令,所述指令固定于诸如非瞬时性计算机可读介质(例如,磁 盘、⑶R0M、R0M或硬盘)的有形介质上。其还可包括一系列计算机可读指令,所述指令可通 过有形介质(包括但不限于光学或类似通信线路)或无形地利用无线技术(包括但不限于微 波、红外或其它传输技术)经由调制解调器或其它接口装置传输至计算机系统。这一系列计 算机可读指令实施本文先前所述的所有或部分功能。
[0175] 本领域技术人员将理解,这些计算机可读指令可以利用用于许多计算机架构或操 作系统的许多编程语言来编写。另外,这些指令可利用任何存储器技术(目前或未来的,包 括但不限于半导体、磁或光学)来存储,或者利用任何通信技术(目前或未来的,包括但不限 于光学、红外或微波)来传输。可以想到,这种计算机程序产品可作为可移除介质随所附的 印刷或电子文档一起分发(例如,紧缩套装软件),用计算机系统预先加载到(例如)系统ROM 或固定盘上,或经由网络(例如,互联网或万维网)从服务器或电子公告牌分发。

【专利附图】

【附图说明】
[0176] 现在将参照附图仅以示例的方式描述本发明的许多优选实施方式,附图中:
[0177] 图1示出以现有技术的方式表示OpenCL内核调用ID所需的字段;
[0178] 图2示意性地示出可在图形处理器上执行OpenCL内核的典型布置方式;以及
[0179] 图3示意性地示出在本发明的实施方式中在索引空间上执行内核调用时图形处 理器的操作。

【具体实施方式】
[0180] 现在将参照OpenCL内核在图形处理器上的执行来描述本发明的优选实施方式。 (然而,如上所述,本发明不限于用于OpenCL和图形处理器,而是可用在(例如)将在给定处 理器上执行计算内核的任何地方。)
[0181] 图2示意性地示出可在图形处理器上执行OpenCL内核的典型布置方式。如图2 所示,主机CPU20执行OpenCL API并生成命令以使图形处理器21执行OpenCL内核。所述 内核通常可(例如)旨在处理图像,例如对图像进行滤波或压缩或编码。所述内核可(例如) 提供降噪、边缘增强、格式转换、超分辨率、图像分析(例如,面部或特征识别)、立体重构、模 式匹配等。
[0182] 如本领域已知的,图形处理器将读取由主机CPU20上的OpenCL API生成的命令列 表,并执行命令列表中的命令。这些命令将包括执行OpenCL内核的一个或更多个指令。例 如,所述内核可旨在执行诸如图像的压缩或滤波的功能。
[0183] 如本领域已知并且如上所述的,将针对将在图形处理器21上执行的各个OpenCL 内核指定六个维度,各个维度是从1至该维度的最大可能值的范围内的整数。这相应地为 所关注的内核定义六维索引空间,该索引空间定义将执行的调用。在OpenCL中,三个维度 表示工作组ID,另三个维度表示内核的工作组内的工作项ID。对于指定的该索引空间中的 每一个点,开始一个内核调用。各个调用将内核应用于(例如)将被处理的(例如)图像的特 定区域。
[0184] 因此,当其执行内核时,图形处理器21将针对为所关注的内核指定的索引空间中 的各个点开始(并执行)内核调用。
[0185] 如上所述,还有必要将各个调用与其在索引空间内的唯一索引关联。调用索引用 于(例如)标识(例如)所关注的调用应该处理图像数据的哪一部分以及调用处理的结果的 输出目标。
[0186] 在本实施方式中,在使用中利用具有固定的比特数N的位域索引表示来表示各个 内核调用的索引。在本实施方式中,各个位域索引表示具有32比特(S卩,N=32)。
[0187] 另外,如果需要,内核的索引空间被分区成索引空间的一个或更多个子集,各个这 种子集(分区)不大于位域索引表示可表示的索引(索引空间内的点)的数量。因此,在本实 施方式中,索引空间的各个分区(子集)被配置为包含不超过2~32个点(索引)。这具有这样 的效果(除了别的以外):各个分区(子集)内的所有索引可利用32比特的位域来表示。(N 的其它值也将是可行的--通常,各个"分区"应该被限制为包含不超过2~N个点(索引), 其中N是正整数,是所使用的位域索引表示可包含的最大比特数。)
[0188] 如果索引空间被分区成两个或更多个子集,则分区(细分)使得不会有工作组在不 同的分区之间被分割。
[0189] 如果需要这种索引空间分区,则这通过主机处理器上的驱动器来实现。对索引空 间分区的需要这样确定:将表示为所关注的内核指定的各个索引维度的最大值所需的总比 特数加起来,看其是否大于分配给位域索引表示的N比特(在本实施方式中,32比特)。
[0190] 如下处理索引空间(如果索引空间包含少于2~N个点)或者索引空间的各个分区 (子集)(如果索引空间包含多于2~N个点),以确定并生成将用于指示内核调用的索引的位 域索引表示。
[0191] 首先,确定所关注的索引空间分区的各个维度的大小(最大维度值)。然后将各个 大小减去一,然后确定表示各个索引维度的如此修改的最大维度值所需的比特数。
[0192] 然后,使用该信息如下确定在将用于表示索引空间分区内的各个内核调用的调用 索引的N比特(32比特)位域索引表示中,将用于表示各个索引维度的字段的大小和位置:
[0193] ?将最低索引维度存储在位域表示的最低比特中:将此索引维度的比特0存储在 位域表示的比特0中,以此类推。
[0194] ?对于随后的各个索引维度,确定最高比特在已经设置的位域表示中的位置,然后 下一索引维度的位置从下一比特开始。
[0195] 这样,将所关注的内核索引空间分区的维度打包成N比特(32比特)位域。
[0196] 例如,对于具有六个索引维度并且各个索引维度的大小如下所示的索引空间分区 (子集):
[0197]

【权利要求】
1. 一种在针对要被执行的内核定义了一组多个索引维度的系统中处理内核调用的方 法,所述内核的单独的调用将在所述一组多个索引维度上执行,所述方法包括以下步骤: 针对定义了一组索引维度的要被执行的内核: 确定表示要针对所述内核的索引的各个维度指示的最大值所需的比特数; 基于所确定的表示要针对所述内核的索引的各个维度指示的所述最大值所需的比特 数,来确定要用于指示所述内核的调用的索引的位域索引表示; 为所述内核准备位域布局数据结构,该位域布局数据结构指示表示所述内核的索引的 各个维度的比特在所确定的要用于指示所述内核的调用的所述索引的位域索引表示内的 布局; 将所述位域布局数据结构提供给要执行所述内核的一个处理器或多个处理器;以及 当要执行内核调用时,将位域索引表示与所述内核调用关联,以指示所述内核调用的 内核调用索引,所述位域索引表示根据由所述位域布局数据结构指示的位域布局来配置并 且在由所述位域布局数据结构指示的各个比特位置中指示所述内核调用的各个索引维度 的值。
2. -种操作针对要被执行的内核定义了一组多个索引维度的处理系统的方法,所述内 核的单独的调用将在所述一组多个索引维度上执行,所述方法包括以下步骤: 针对定义了一组索引维度的要被执行的内核: 针对所述内核的索引的各个维度,确定表示所述内核的索引的该维度所需的最大比特 数; 基于所确定的表示所述内核的索引的各个维度所需的最大比特数,来确定要用于指示 所述内核的调用的索引的位域索引表示;以及 为所述内核准备位域布局数据结构,该位域布局数据结构指示表示所述内核的索引的 各个维度的比特在所确定的要用于指示所述内核的调用的索引的位域索引表示内的布局。
3. 根据权利要求1或2所述的方法,该方法还包括以下步骤: 如果所述内核的索引维度具有单个、恒定的值,则在所述位域索引表示中不向该索引 维度分配任何比特。
4. 根据权利要求1、2或3所述的方法,该方法还包括以下步骤: 独立于所述内核的索引空间的实际大小,针对所述内核的所述位域索引表示使用预定 数量的比特。
5. 根据前述权利要求中的任一项所述的方法,该方法还包括以下步骤: 在具有由所述位域布局数据结构指示的配置的数据结构中准备并存储内核索引最大 维度值数据结构,该内核索引最大维度值数据结构针对所述内核的索引的各个维度指示要 用于针对所述内核的调用的该维度的最大值。
6. 根据前述权利要求中的任一项所述的方法,该方法还包括以下步骤: 将针对内核指定的所述索引空间分成两个或更多个子集,然后针对各个相应的索引空 间子集利用根据前述权利要求中的任一项所述的方法来确定并使用位域索引表示。
7. 根据前述权利要求中的任一项所述的方法,该方法还包括以下步骤: 针对由所述位域索引表示指示的所述多个索引维度中的一个或更多个,生成要与所述 位域索引表示所指示的值相加的偏移值。
8. -种对在针对要被执行的内核定义了一组多个索引维度的系统中执行的内核调用 进行索引的方法,所述内核的单独的调用将在所述一组多个索引维度上执行,所述方法包 括以下步骤: 针对定义了一组索引维度的要被执行的内核: 读取所述内核的位域布局数据结构,该位域布局数据结构指示表示所述内核的索引的 各个维度的比特在要用于指示所述内核的调用的索引的位域索引表示内的布局;以及 当要执行所述内核的调用时,将位域索引表示与所述内核调用关联,以指示所述内核 调用的索引,所述位域索引表示在由所述内核的所述位域布局数据结构指示的各个比特位 置中指示所述内核调用的各个索引维度的值。
9. 根据前述权利要求中的任一项所述的方法,该方法还包括以下步骤:当要执行内核 调用,并且在所述位域索引表示中未向索引维度分配比特时,在解释所述位域索引表示以 导出所述调用的索引时将值一分配给该索引维度。
10. 根据前述权利要求中的任一项所述的方法,该方法还包括以下步骤:将各个内核 调用的所述位域索引表示分成两个部分,第一部分专用于所关注的内核调用,第二部分由 一组内核调用共享。
11. 一种用于处理内核调用的系统,在该系统中,针对要被执行的内核定义了一组多个 索引维度,所述内核的单独的调用将在所述一组多个索引维度上执行,该系统包括: 一个或更多个处理器,其被配置为针对定义了一组索引维度的要被执行的内核: 确定表示要针对所述内核的索引的各个维度指示的最大值所需的比特数; 基于所确定的表示要针对所述内核的索引的各个维度指示的所述最大值所需的比特 数,来确定要用于指示所述内核的调用的索引的位域索引表示; 为所述内核准备位域布局数据结构,该位域布局数据结构指示表示所述内核的索引的 各个维度的比特在所确定的要用于指示所述内核的调用的索引的位域索引表示内的布局; 并且 将所述位域布局数据结构提供给要执行所述内核的一个处理器或多个处理器; 该系统还包括: 一个或更多个处理器,其被配置为: 执行所述内核;并且 当要执行内核调用时,将位域索引表示与所述内核调用关联,以指示所述内核调用的 内核调用索引,所述位域索引表示根据由所述位域布局数据结构指示的位域布局来配置并 且在由所述位域布局数据结构指示的各个比特位置中指示所述内核调用的各个索引维度 的值。
12. -种用于处理内核调用的系统,在该系统中,针对要被执行的内核定义了一组多个 索引维度,所述内核的单独的调用将在所述一组多个索引维度上执行,该系统包括: 一个或更多个处理器,其被配置为针对定义了一组索引维度的要被执行的内核: 针对所述内核的索引的各个维度,确定表示所述内核的索引的该维度所需的最大比特 数; 基于所确定的表示所述内核的索引的各个维度所需的最大比特数,来确定要用于指示 所述内核的调用的索引的位域索引表示;并且 为所述内核准备位域布局数据结构,该位域布局数据结构指示表示所述内核的索引的 各个维度的比特在所确定的要用于指示所述内核的调用的索引的位域索引表示内的布局。
13. 根据权利要求11或12所述的系统,其中,所述多个处理器中的一个或更多个还被 配置为: 如果内核的索引维度具有单个、恒定的值,则在所述位域索引表示中不向该索引维度 分配任何比特。
14. 根据权利要求11、12或13所述的系统,其中,所述多个处理器中的一个或更多个还 被配置为: 独立于所述内核的索引空间的实际大小,针对各个内核的所述位域索引表示使用预定 数量的比特。
15. 根据权利要求11至14中的任一项所述的系统,其中,所述多个处理器中的一个或 更多个还被配置为: 在具有由所述位域布局数据结构指示的配置的数据结构中准备并存储内核索引最大 维度值数据结构,该内核索引最大维度值数据结构针对内核的索引的各个维度指示要用于 针对所述内核的调用的该维度的最大值。
16. 根据权利要求11至15中的任一项所述的系统,其中,所述多个处理器中的一个或 更多个还被配置为: 将针对内核指定的所述索引空间分成两个或更多个子集,然后针对各个相应的索引空 间子集确定并使用相应的位域索引表示。
17. 根据权利要求11至16中的任一项所述的系统,其中,所述多个处理器中的一个或 更多个还被配置为: 针对由所述位域索引表示指示的所述多个索引维度中的一个或更多个,生成要与所述 位域索引表示所指示的值相加的偏移值。
18. -种用于在针对要被执行的内核定义了一组多个索引维度的系统中执行内核调用 的处理器,所述内核的单独的调用将在所述一组多个索引维度上执行,所述处理器被配置 为: 针对定义了一组索引维度的要被执行的内核读取位域布局数据结构,该位域布局数据 结构指示表示所述内核的索引的各个维度的比特在要用于指示所述内核的调用的索引的 位域索引表示内的布局;并且被配置为: 当要执行所述内核的调用时,将位域索引表示与所述内核调用关联,以指示所述内核 调用的索引,所述位域索引表示在由所述内核的所述位域布局数据结构指示的各个比特位 置中指示所述内核调用的各个索引维度的值。
19. 根据权利要求11至18中的任一项所述的系统或处理器,其中,所述处理器还被配 置为,或者所述多个处理器中的一个或更多个还被配置为: 当要执行内核调用,并且在所述位域索引表示中未向索引维度分配比特时,在解释所 述位域索引表示以导出所述调用的索引时将值一分配给该索引维度。
20. 根据权利要求11至19中的任一项所述的系统或处理器,其中,所述处理器还被配 置为,或者所述多个处理器中的一个或更多个还被配置为: 将各个内核调用的所述位域索引表示分成两个部分,第一部分专用于所关注的内核调 用,第二部分由一组内核调用共享。
21. -种包括计算机软件的计算机程序,当所述程序在数据处理装置上运行时,执行根 据权利要求1至10中的任一项所述的方法。
【文档编号】G06F17/30GK104111967SQ201410153145
【公开日】2014年10月22日 申请日期:2014年4月16日 优先权日:2013年4月16日
【发明者】J·尼斯塔德 申请人:Arm有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1