用于增强的图像处理并行性的具有等价类的基于图形的应用程序编程接口架构的制作方法

文档序号:11635642阅读:218来源:国知局
用于增强的图像处理并行性的具有等价类的基于图形的应用程序编程接口架构的制造方法与工艺

要求优先权保护

本申请要求保护2015年3月20日提交的题为“graph-basedapplicationprogramminginterfacearchitectureswithequivalencyclassesforenhancedimageprocessingparallelism”的美国专利申请序列号14/664,743的优先权,该美国专利申请序列号14/664,743根据35u.s.c.sec.119(e)要求2015年1月16日提交的题为“graph-basedapplicationprogramminginterfacearchitecturesandoptimizationenginesforenhancedimageprocessingparallelism”的美国临时申请序列号62/104,226的权益,通过引用将这二者整体合并于此以用于所有目的。



背景技术:

计算机视觉处理(例如面部/身体/姿势跟踪、对象和场景检测/重建、自动视觉检查、等等)成为计算设备平台的越来越重要的能力。对于实时、移动和/或嵌入式设备应用程序来说,针对性能和/或功率而优化的加速视觉处理特别重要。越来越强大的处理器和图像传感器使得计算平台能够具有更大的视觉智能。然而,遍布最适合应用程序的设备平台处理器分配复杂视觉处理算法仍是一个难题。

典型的图像处理应用程序对图像执行若干连续操作,其中一个操作的输出被用作另一操作的输入(例如流水线级)。基于图形的图像处理实现优化api为视觉处理执行和存储器模型提供有用的抽象层级,并且提供作为有向非循环图形(dag)的操作序列的形式描述。dag是节点的集合,其借助于它们之间的连接来描述该图像处理任务。图形的节点对应于源和目的地数据(例如图像)或图像上的操作。图形的边缘限定任务中的数据流。各节点之间的连接意味着一个操作的结果(“输出”)被用作另一操作的输入。每个节点都可与要在那里执行该节点的一个或多个硬件资源相关联。

由科纳斯团队在2014年10月发布的openvx1.0规范是提供用于管理和执行图形的框架的基于图形的图像处理实现优化api的一个示例。利用这样的api,应用程序开发者可通过构建图像处理函数的图形来限定图像处理任务并依赖于在宽泛阵列的平台上实现的api框架。实施者提供与基于图形的实现api兼容的图形编译器和图形执行器并且被配置成通过将图像数据传递通过图形节点来更有效地执行针对给定实现的图像处理任务。

基于图形的图像处理实现api为实施者提供完成例如可通过并行性来提高效率的任务/工作分派和调度决策所需的信息是有益的。

附图说明

通过示例的方式并且不通过在附图中限制的方式来图示本文中所述的物质。为了简洁且清楚的说明,图中图示的元件不一定按照比例来绘制。例如,为了清楚起见,某些元件的尺度可能相对于其他元件被放大。此外,在考虑适当的情况下,已在各图之间重复参考标记以指示对应或类似的元件。在图中:

图1a图示根据一些实施例的要被包括在图像处理图形中的节点;

图1b图示根据一些实施例的将节点连接到图像处理图形中;

图1c图示根据一些实施例的图像处理图形的执行;

图2a图示根据一些实施例的通过基于任务的分解的基于图形的优化;

图2b图示根据一些实施例的通过空间分解的基于图形的优化;

图2c图示需要空间和任务分解二者的基于图形的优化;

图2d图示根据一些实施例的对异构硬件资源的空间和任务分解二者;

图3a是图示根据一些实施例的对异构硬件资源的子任务分解的功能框图;

图3b是图示被约束成保持位等价的子任务分解的功能框图;

图3c是图示根据一些实施例的对基于等价类节点的异构硬件资源的子任务分解的功能框图;

图3d是图示根据一些实施例的基于节点层级等价定义的子任务分解的功能框图;

图4是图示根据一些实施例的节点定义的等价逻辑的部件的功能框图;

图5a是图示根据一些实施例的用于创建等价类节点的方法的流程图;

图5b是图示根据一些实施例的用于执行等价类节点的方法的流程图;

图6是图示根据一些实施例的包括等价图形节点图形优化的图像处理流水线实现的功能框图;

图7是根据一些实施例的数据处理系统的功能框图;

图8是根据一些实施例的包括具有节点定义的等价逻辑的处理器的示例性超低电力系统的图;以及

图9是根据一些实施例布置的示例性移动手机平台的图。

具体实施方式

参考所附的图来描述一个或多个实施例。尽管详细描绘和讨论了具体配置和布置,但是应该理解这样做仅为了说明性目的。相关领域的技术人员将会认识到在不偏离该描述的精神和范围的情况下其他配置和布置是可能的。对于相关领域的技术人员将显而易见的是,可在超出本文中详细描述的各种各样其他系统和应用中采用本文中所述的技术和/或布置。

在下面的详细描述中,参考形成其一部分并且说明示例性实施例的附图。此外,要理解,可利用其他实施例并且可在不偏离所要求保护的主题的范围的情况下做出结构和/或逻辑变化。因此,不要以限制的意义来采用下面的详细描述,并且所要求保护的主题的范围仅由所附权利要求及其等同物来限定。

在下面的描述中,阐述许多细节,然而,对于本领域技术人员将显而易见的是,可在没有这些具体细节的情况下实行实施例。以框图形式而不是详细地示出公知的方法和设备,以避免使更多重要方面模糊。遍及本说明书对“实施例”或“一个实施例”的参考意指结合该实施例所述的特定特征、结构、功能或特性被包括在至少一个实施例中。因此,在遍及该说明书的各个地方中的短语“在实施例中”或“在一个实施例中”的出现不一定指代同一实施例。此外,在实施例的上下文中描述的特定特征、结构、功能或特性可以以任何适当的方式被组合在一个或多个实施例中。例如,第一实施例可与第二实施例组合,在任何地方与这两个实施例相关联的特定特征、结构、功能或特性没有互相排斥。

如在示例性实施例的描述和所附权利要求中所使用的,意图使单数形式“一”、“一个”、“该”也包括复数形式,除非上下文以其他方式明确指出。还将理解,本文中所使用的术语“和/或”指代并包括相关联的所列条目的一个或多个的任何和所有可能组合。

如遍及该描述,并且在权利要求中所使用的,通过术语“…中的至少一个”或“…中的一个或多个”结合的条目列表可以意指所列条目的任何组合。例如,短语“a、b或c中的至少一个”可以意指a;b;c;a和b;a和c;b和c;或a和b和c。

可在本文中使用术语“耦合”和“连接”连同它们的派生词以描述各部件之间的功能或结构关系。应该理解,不意图使这些术语作为彼此的同义词。相反,在特定实施例中,“连接”可被用来指示两个或更多元件处于彼此的直接物理、光学或电气接触。“耦合”可被用来指示两个或更多元件处于彼此的直接或间接(在它们之间具有其他居间元件)物理、光学或电气接触,以及/或者两个或更多元件彼此协作或交互(例如如在效应关系的条款中)。

根据对计算机存储器内的数据位的操作的算法和符号表示来给出本文中提供的具体描述的某些部分。除非以其他方式具体阐述,如从下面的讨论中显而易见的,要认识到,遍及该描述,利用诸如“计算”、“估算”、“确定”、“估计”、“存储”、“收集”、“显示”、“接收”、“合并”、“生成”、“更新”等等之类的术语的讨论指代计算机系统或类似电子计算设备的动作和过程,其操控被表示为包括寄存器和存储器的计算机系统的电路内的物理(电子)量的数据并将其变换成类似地被表示为计算机系统存储器或寄存器或其他此类信息存储、传输或显示设备内的物理量的其他数据。

尽管下面的描述阐述可在架构(例如比如片上系统(soc)架构)显现的实施例,但是本文中所述的技术和/或布置的实现不被限于特定架构和/或计算系统,并且为了类似的目的可通过任何架构和/或计算系统来实施。采用例如多个集成电路(ic)芯片和/或封装的各种架构和/或各种计算设备和/或消费类电子(ce)设备(诸如机顶盒、智能手机等等)可实施本文中所述的技术和/或布置。此外,尽管下面的描述可阐述许多具体细节(诸如系统部件、逻辑划分/集成选择等等的逻辑实现、类型和相互关系),但是可在没有这些具体细节的情况下实行所要求保护的主题。此外,可以不详细示出某一素材(诸如例如控制结构和所有软件指令序列),以便不使本文中公开的素材模糊。

可以以硬件来实施本文中公开的素材的某些部分,例如作为中央处理器内核的逻辑电路。可以以硬件、固件、软件或其任何组合来实施某些其他部分。本文中公开的素材中的至少一些还可以被实施为存储在机器可读介质上的指令,其可被一个或多个可编程处理器(图形处理器和/或中央处理器)读取和执行。机器可读介质可包括用于存储或传送以可被机器(例如计算设备)读取的形式的信息的任何介质和/或机构。例如,机器可读介质可包括只读存储器(rom);随机存取存储器(ram);磁盘存储介质;光存储介质;闪速存储器设备;电、光、声、或其他类似非瞬时有形介质。

下面描述了用于在图像图形处理中提取并行的一个或多个系统、设备、方法和计算机可读介质。下面描述的对于示例性图像处理实施例的技术和架构可以被应用于被概括成技术的许多其他数据块,诸如但不限于信号处理和音频/视频编码。

在一些实施例中,通过图像处理软件开发人员将用于执行一组或一系列成像操作的引擎表示为函数调用的图形或一系列函数调用。图形是一类对象,其包含所有信息以便将各节点之间的计算组织在图形中。图形api的图形类接口实现将节点添加到图形以及连接它们的输入和输出端口。图像处理图形的各节点对应于要在图像(图像数据块)上执行的源和目的地数据以及操作。图1a图示具有包含在计算节点(例如节点120、节点130、节点140)或者源/目的地节点中的每个操作的一组操作。源节点110和目的地节点150中的每个都是明确录入图形中的数据阵列或数据流。

可以例如从许多成百个/成千个函数的内容库选择计算节点的每个操作。可在每个节点内谋取任何低层级的计算库或api(例如opencl顺从库)。在一些实施例中,为整个图像处理设计计算节点函数。图像图形实现api提供用于创建/添加节点的(一个或多个)函数,例如:

节点对象包含关于节点连接性(输入和输出端口的数目)的信息以及用于与节点相关联的函数的主参数。派生类的对象可以包含其他参数,这取决于节点函数。图1b图示用来创建图像处理任务的节点的连接。通过图像处理软件开发人员来提供图形边缘111、112、113、114以限定从源节点110通过计算节点120、130、140到目的地节点150的数据阵列/数据流的流程。基于图形的实现api提供用于连接图像图形的(一个或多个)函数,例如:

通过链接方法将许多对象和端口用于使一个对象的输出端口与另一对象的输入端口连接。

在一些实施例中,然后将图像图形变换成、或通过图形编译器编译成应用于在本文中被称为区块的输入图像数据的数据块或小部分的图像处理函数调用序列。区块包括具有图像的整个宽度的切片,以及图像内任意尺度和取向的矩形。一类编译成员函数编译图形对象。在编译期间,针对循环的缺乏、隔离节点的缺乏、数据类型的对应、和各节点之间信道的数目来验证图形。在实施例中,编译函数进一步负责根据可用高速缓存器的大小来确定最优区块大小。在图像图形执行期间,在源节点110和目的地节点150之间通过计算节点的数据块推移构成一系列图像处理任务。如在图1c中所图示的,可利用在分别用于保留每个任务的结果的计算节点120、130和130、140之间插入的临时缓冲器125、135来使图像图形的执行概念化。

在一些实施例中,图形优化引擎执行需要基于任务的分解的基于图形的优化。对于基于任务的分解,(例如在节点120中)一个操作的输出被用作另一操作的输入(例如在节点130中)。图2a中图示通过基于任务的分解的基于图形的优化的一个示例,在这里分开的处理器内核或计算单元被指派不同的任务。例如,处理器内核221负责滤波220、处理器内核222负责调整大小230,并且处理器内核222负责第n个任务。许多图像处理应用程序利用非常大的图像(例如若干百万像素),并且用于图像处理的总存储器可能超过本地缓冲器(例如处理器的第二层级高速缓存器)的大小。在这些情况下,瓶颈变成存储器存取,所以源图像210被分解成与源图像210的各部分相关联的数据块。这些图像片段(例如源区块211、212、213)然后被处理器内核221、222、223处理以生成目的地图像250的目的地区块251、252、253。

在一些实施例中,图形优化引擎执行需要基于区块的或空间分解的基于图形的优化。如图2b中所图示的,每个处理器内核221、222、222负责执行分别对于一个源区块211、212、213的滤波220、调整大小230和第n个任务240。作为一个示例,当在数据块上执行连续任务时,利用基于区块的分解的一个效率可能是数据块(例如对应于一个区块)在本地存储器缓冲器(例如与存储器内核相关联的两层级高速缓存器)内的保留。

在一些实施例中,图形优化引擎执行需要空间和任务分解二者的基于图形的优化。如在图2c中所描绘的,处理器内核221负责滤波220,相对于调整大小230和第n个任务240,该滤波220在计算上可能昂贵。处理器内核222和223可被指派调整大小230和第n个任务240以便从一个源区块211、212输出单独的目的地区块251、252。处理器内核221处理源区块211、212二者以完成滤波任务220。

在一些实施例中,图形优化引擎执行需要对于异构硬件资源的空间和任务分解中的任一个或二者的基于图形的优化。图2d图示对除了包括处理器的多个内核之外还包括硬件加速器260的异构硬件资源的空间和任务分解二者。在所描绘的示例中,加速器260对所有源区块211、212和213运用滤波任务220。一个处理器内核221、222、223分别负责用于在对应于一个源区块211、212、213的经过滤波的数据块上执行调整大小任务230和第n个任务240二者。

如果操作需要图像片段之外的数据,或者处理操作需要片段大小的变化,则将源图像明确划分成片段并对这些片段执行所需的的操作是特别困难的。此外,在上述实施例中,计算序列的并行化可能是有利的。例如,不需要调度一个图像片段的处理、然后另一个,以使得在用一个硬件资源使任何片段处理通过第一任务之前,用另一硬件资源使所有片段处理通过另一任务。在作为代替片段通过一个任务的处理仅以该片段已经通过前一任务被首先处理为基础的情况下,不管任何其他片段处理的状态如何,都可能具有较大的处理效率。

在一些实施例中,处理元件的异构阵列被采用来执行节点的各种子任务。然而任务需要使源图像通过节点操作(例如调整图像的大小),所以第一子任务需要使源图像的第一部分(即第一数据块)通过节点操作,而第二子任务需要使源图像的第二部分(例如第二数据块)通过节点操作。

在图2d中图示的异构实施例中,在具有第一指令集合架构(isa)的一个设备或硬件资源(例如硬件加速器260)上执行处理流水线的第一部分(例如滤波220),而在具有第二isa的另一设备或硬件资源(例如处理器内核221)上执行第二部分(例如调整大小230)。向多个内核221、222和223分配与使一个区块(例如211、212或213)传递通过调整大小节点相关联的各种子任务是在如对于多内核处理器的实现库中所定义的调整大小操作跨越多个内核221、222、223具有位等价的情况下可能容易实施图形执行器/执行引擎的一种优化。然而,可能不一定为图形节点限制位等价的阈值。对于在子任务层级处具有设备异构的情况,图形开发人员可能通过增强的并行提取来利用更大的效率。

图3a图示对异构硬件资源的子任务分解,除了包括中央处理器的多个内核221、222之外,该异构硬件资源还包括硬件加速器260。在所描绘的示例中,每个处理器内核221、222负责执行包括使与一个源区块211、212相关联的数据块通过第n个任务240的子任务。在使源区块213通过等价第n个任务340的情况下,加速器360运用等价子任务。在其中第n个任务240和等价第n个任务340不是同一名称的位等价操作的实施例中,通过本文中被称为“等价类”的节点层级规范来促进图3a中图示的对异构硬件资源的子任务分解。等价类对象或函数为给定节点指定来自可在异构资源上对应执行的不同库的等价库函数和/或等价函数之间的关联。在等价性的概念完全交给节点或图形开发人员的情况下,该等价类向该开发人员提供一种用来指定等价性的机制。照此,在图形中的一个节点的上下文中函数可被视为等价,但在另一个节点的上下文中不是。此外,针对给定节点被用户定义为等价的函数甚至不需要采用远程类似的算法或函数意图。

在一些实施例中,基于图形的图像处理实现api提供一种用于限定等价类节点的框架。实现api可为图像图形开发人员提供用来将较低层级(图像处理)库函数与特定图形节点相关联的一组成员函数。例如,如图3b中所图示的,节点320与较低层级库函数“filterblur()”相关联。调用节点成员函数do()来将所指定的函数filterblur()应用于节点的输入数据(例如第一数据块)并将结果存储在节点的输出中。在一些实施例中,节点层级成员函数包括指定不同名称的两个或更多较低层级(图像处理)库函数之间的等价性和/或缺少位等价的映射函数。在缺乏这样的等价类指定的情况下,图形执行器用来通过调用具有在第一硬件资源或较低层级库函数具有位等价性的一组硬件资源上执行的任务的库函数来处理通过所编译的图形节点的数据块。如果在缺乏等价类映射的情况下多于一个硬件资源要被采用来执行filterblur,则将执行器约束成在节点320的子任务之间保持位等价性。例如,如图3b中所图示的,图形执行器通过分别在处理器内核221、222上执行库函数filterblur子任务220来处理通过节点320的区块312、311。

相反,在节点包括等价类指定的情况下,图形执行器用来通过调用任何等价函数(不管通过等价类定义针对节点而映射的位等价如何)来处理通过图形节点的数据块。在一些实施例中,工作分配器执行与不同异构设备上并行的等价类节点相关联的操作的部分。例如,在图3c中,节点330包括将库函数filterblur与“acc-filterblur”库函数相关联的等价类指定。图形执行器通过执行filterblur子任务221和acc-filterblur子任务222来处理通过节点330的区块312、311。

值得注意得,利用在节点层级处的等价类指定,随着图形执行器处理每个节点来动态确定等价性。等价性可能会在图形内和/或在不同图形之间变化。就两个函数可被定义为对于一个节点而不是另一个节点是等价的意义来说,等价性能够是与上下文有关的。换言之,给定库函数可能在第一节点中缺少等价性,但在同一图形内的第二节点中具有等价性。例如,在来自图3b和3c的节点320和330被组合以形成图3d中所图示的流水线的情况下,库函数在流水线的第一部分(例如图形节点320)中缺乏任何节点定义的等价性。然而,在流水线的第二部分(例如图形节点330)中存在节点定义的等价性。利用节点层级指定,节点和/或图形开发人员可确定两个或更多图像处理操作是否将为特定处理应用程序中的每个单个节点的目的提供足够的等价结果。如果是的话,则对于该节点的等价类指定的内容释放图形执行器以更广泛地实施异构子任务并行性。

尽管可能意图使该示例中的blurfilterblur函数产生非常类似的结果,但是节点可能仅仅容易将具有不相似算法的两个函数指定为“等价的”。作为一个示例,两个不相似算法可能在精度、执行时间或甚至基本意图方面是不同的。例如,对于一个等价类节点,许多不同的滤波函数(例如adaptivefilter()函数、7x7filiter()函数和simplefilter()函数)可能所有都被视为等价的。在另一示例中,边缘检测函数cannyedgedetection()被指定成与滤波函数simplefilter()是等价的。在一些实施例中,工作调度器用来在各等价函数之间选择以实施优化图像处理流水线的策略,其使处理时间最小化以实现给定的服务质量qos(例如以实现对于视频的特定帧速率)。为了该目标,图形开发人员可能定义使adaptivefilter()函数等于经过简化的降噪函数improvequalitylow()或者甚至旁路函数donothing()的等价类。照此,等价类指定提供用来通过基于图形的实现api的方式实施有条件的并行性的编程方法。

在实施例中,等价类节点指定包括等价映射。等价映射可采用任何形式,诸如但不限于:将第一函数与一个或多个第二“等价”函数相关联的表格。图4图示包括函数标识符(id)字段415以及一个或多个“等价”id字段420的等价映射410。等价id字段420中的每个条目都被映射到函数id415。例如,“isp-filterblur()”和“cpu-filterblur()”被指定为与filterblur()是等价的。被传递给每一个的参数是相同的。当传递附加的参数“blur”时,函数“cpu-filter3x3”也被映射为与函数filterblur()是等价的。其他数据结构可被类似地采用来定义等价类节点。在一些实施例中,等价类节点数据结构基于分层的类继承。例如,等价类节点可被定义为包括两个或更多子节点的元节点。等价类节点的多个子节点中的每一个可以与图像处理函数(例如isp-filterblur)相关联,即与同等价类节点的所有其他子节点相关联的处理函数等价。

在一些实施例中,图形执行器根据在策略中表示的一个或多个优化目标来调度多个子任务。在图4中所图示的示例中,图形执行器303用来基于工作分配策略405来调度等价子任务。工作分配策略405可以以节点层级来定义,或者针对特定图像图形实现api来定义。工作分配策略405可以例如约束在各异构设备之间的工作的分配以强调与以下各项中的任一个有关的目标:等待时间、执行时间、资源利用、存储器可用性、时间局部性和/或存储器带宽。在另外实施例中,与等价类节点相关联的映射对象可进一步为每个等价函数指定优先级。在一些实施例中,图形执行器用来至少部分基于函数优先级来实施等价函数调用的基于策略的选择/分配。例如,等价映射410可进一步包括优先级字段421,其表示isp-filterblur()和cpu-filterblur()超过cpu-filter3x3(blur)的基于优先级的偏好。

在另外实施例中,图形执行器用来至少部分基于所估计的对于等价类的每个成员(等价)函数的执行时间来实施等价函数调用的基于策略的选择/分配。例如,在一些实施例中,偏好选择优于具有较长执行时间的等价函数的具有较短执行时间的等价函数。在其他实施例中,偏好选择优于具有较长或较短执行时间的第三等价函数的具有与第二等价函数更近匹配的执行时间的第一等价函数。在另外实施例中,图形执行器用来至少部分基于摊派给给定硬件资源槽或所有槽的最大时间来实施等价函数的基于策略的选择/分配。例如,在一些实施例中,偏好选择优于具有超过摊派给硬件资源槽的最大时间的执行时间的等价函数的具有较短执行时间的第一等价函数。

图5a图示生产者节点创建方法501。可例如通过基于图形的图像处理实现优化api来执行方法501。方法501以使用任何已知技术在操作505处接收图像图形节点的规范来开始。图像处理函数与所指定的图形节点相关联。为了实现图形执行器的节点定义的等价逻辑,函数等价映射对象和/或函数进一步与节点相关联,由此在操作510处定义等价类节点。在一些实施例中,函数等价映射对象/函数用来提供可被调用来执行与节点相关联的任务的两个或更多库函数的指示。在一些实施例中,函数等价映射对象/函数用来针对所指定的库函数标识符来返回一个或多个等价库函数标识符。然后在操作520处使用任何已知的技术来将函数化的等价类节点链接到图像图形。例如,等价类节点可被链接到源、目的地、生产者或消费者中的至少一个。

图5b图示可例如通过集中式的图像图形工作调度器(例如图形执行器或图形执行引擎)执行的图形执行方法502。在操作530处,图形执行器例如通过在基于图形的实现优化api中定义的框架来接收等价类节点的指示。在操作535处,对等价映射对象或函数进行调用以确定关于等价节点具有等价性的两个或更多函数。在一些实施例中,可基于策略(例如优先级标识符、执行时间等等)来进行两个或更多等价函数之间的选择。在接收和/或确定节点定义的等价信息时,图形执行器调度一个或多个处理任务,在那里通过对一个或多个硬件资源执行等价函数来处理一个或多个数据块(例如区块)。在另外实施例中,在操作540处调度两个或多个处理任务。与使第一数据块通过第一硬件资源相关联的第一任务被调度,并且与使第二数据块通过第二硬件资源相关联的第二任务也被调度。操作540可被迭代,例如其中每个迭代需要用于处理通过另一硬件资源的一个或多个附加数据块的一个节点子任务的调度或执行。在另外实施例中,操作540的迭代导致多个子任务被调度用于由异构设备执行等价类映射对象/函数所标识的函数的并行执行。

图6是图示包括节点定义的等价类图形优化的图像处理流水线实现600的功能框图。不是所有描绘的操作都需要通过单个实现来执行或同时发生。例如,在图像流水线运行时间期间执行的图形编译和/或执行操作620、630之前,等价节点创建操作610、615可在图像流水线开发时间期间被执行。在图6中,垂直虚线划分在这些线内描绘的操作的执行中谋取的(一个或多个)函数元素。在操作610、615处,采用api510来添加并链接具有等价类映射功能的图形节点。在操作620处,图形执行器520发出对节点等价映射函数的调用并确定库函数等价信息。在操作640处,工作调度器525基于节点定义的等价信息来调度任务/线程。在操作651处,第一资源(例如cpu内核、gpueu、ipuvu等等)的任务/线程执行单元604执行被调度的第一子任务/线程,从电子存储器和/或高速缓存器605读取源区块660,并且将目的地区块670写入到存储器和/或高速缓存器605。在操作652处第二异构资源(例如cpu内核、gpueu、ipuvu等等)的任务/线程执行单元604执行所调度的第二子任务/线程,从电子存储器和/或高速缓存器605读取源区块680,并且将目的地区块690写入到存储器和/或高速缓存器605。

图7是根据一些实施例的可被利用来执行具有等价类节点的图形处理的数据处理系统700的功能框图。数据处理系统700包括一个或多个处理器702以及一个或多个图形处理器708,并且可以是单个处理器移动设备或桌上型设备、多处理器工作站、或具有大量处理器702或处理器内核707的服务器系统。在一个实施例中,数据处理系统700是在移动、手持或嵌入式设备中使用的片上系统(soc)集成电路。

数据处理系统700的一个实施例可以包括基于服务器的游戏平台、游戏控制台(包括游戏和媒体控制台、移动游戏控制台、手持游戏控制台或在线游戏控制台)或者被合并在其中。在一些实施例中,数据处理系统700是移动电话、智能电话、平板计算设备或移动因特网设备。数据处理系统700还可以包括可佩戴设备(诸如智能手表可佩戴设备、智能护目镜设备)、增强现实设备或虚拟现实设备、与该可佩戴设备、增强现实设备或虚拟现实设备耦合、或者被集成在该可佩戴设备、增强现实设备或虚拟现实设备内。在一些实施例中,数据处理系统700是具有一个或多个处理器702和由一个或多个图形处理器708生成的图形界面的电视或机顶盒设备。

在一些实施例中,该一个或多个处理器702中的每一个都包括用来处理指令的一个或多个处理器内核707,当该指令被执行时其执行对于系统和用户软件的操作。在一些实施例中,该一个或多个处理器内核707中的每一个被配置成处理特定指令集709。在一些实施例中,该指令集709可促进复杂指令集计算(cisc)、精简指令集计算(risc)、或经由超长指令字(vliw)的计算。多个处理器内核707中的每一个都处理不同的指令集709,其可包括用来促进其他指令集的仿真的指令。处理器内核707还可包括其他处理设备,比如数字信号处理器(dsp)。

在一些实施例中,处理器702包括高速缓存存储器704。根据该架构,处理器702可以具有单个内部高速缓存器或多个级别的内部高速缓存器。在一些实施例中,在处理器702的各个部件之间共享高速缓存存储器。在一些实施例中,处理器702还使用外部高速缓存器(例如层级3(l3)高速缓存器或最后一级高速缓存器(llc))(未示出),其可以是使用已知的高速缓存相干技术在处理器内核707之间共享的。寄存器文件706被另外包括在处理器702中,该寄存器文件706可包括用于存储不同类型的数据的不同类型的寄存器(例如整数寄存器、浮点寄存器、状态寄存器和指令指针寄存器)。一些寄存器可以是通用寄存器,而其他寄存器可特定用于处理器702的设计。

在一些实施例中,处理器702被耦合至处理器总线710以便在处理器702和系统700中的其他部件之间传送数据信号。系统700具有“集线器”系统架构,其包括存储器控制器集线器1616和输入输出(i/o)控制器集线器730。存储器控制器集线器716促进存储器设备和系统700的其他部件之间的通信,而i/o控制器集线器(ich)730提供经由本地i/o总线到i/o设备的连接。

存储器设备720可以是动态随机存取存储器(dram)设备、静态随机存取存储器(sram)设备、闪速存储器设备或具有充当过程存储器的适当性能的一些其他存储器设备。存储器720可以存储数据722和指令721以用于当处理器702执行一个过程时使用。存储器控制器集线器716还与可选外部硬件加速器712耦合,该可选外部硬件加速器712可与处理器702中的一个或多个图形处理器708通信以执行图形和媒体操作。

在一些实施例中,ich730使得外围设备能够经由高速i/o总线连接至存储器720和处理器702。该i/o外围设备包括音频控制器746、固件接口728、无线收发器726(例如wi-fi、蓝牙)、数据存储设备724(例如硬盘驱动器、闪速存储器等等)、和用于将传统(例如个人系统2(ps/2))设备耦合至系统的传统i/o控制器。一个或多个通用串行总线(usb)控制器742连接输入设备,诸如键盘和鼠标744组合。网络控制器734还可耦合至ich730。在一些实施例中,高性能网络控制器(未示出)耦合至处理器总线710。

图8是根据一个或多个实施例的采用节点定义的等价逻辑的示例性超低电力系统800的图。节点定义的等价逻辑可以是以用来实施包括一个或多个等价类节点(例如如上所述)的基于图形的图像处理实现优化api的模块的形式。节点定义的等价逻辑可以是以用来执行包括一个或多个等价类节点(例如如上所述)的基于图形的图像处理优化的模块的形式。系统800可以是移动设备,尽管系统800不限于该上下文。系统800可被合并到可佩戴计算设备、膝上型计算机、平板电脑、触摸板、手持计算机、掌上型计算机、蜂窝电话、智能设备(例如智能电话、智能平板电脑或移动电视)、移动因特网设备(mid)、消息传送设备、数据通信设备等等中。系统800还可以是基础设施设备。例如,系统800可被合并到大格式电视、机顶盒、桌上型计算机、或其他家庭或商业网络设备。

系统800包括设备平台802,其可实施上文在图3a-图6的上下文中描述的各种图像图形等价类节点和函数映射方法/对象的所有或子集。在实施例中,可遵循系统700的架构(图7)来进一步实施平台802的部件。在各种示例性实施例中,中央处理器815实施节点定义的等价类逻辑750,其例如包括被配置用于确定和考虑节点函数等价的图形执行器和/或工作调度器,例如如本文中别的地方所述。中央处理器包括实施被配置成进行等价调用节点函数调用以确定等价信息的图像图形执行器的逻辑电路,例如如本文中别的地方所述。在一些实施例中,一个或多个计算机可读介质可存储指令,当该指令被中央处理器815和/或图形处理器810执行时促使(一个或多个)处理器执行一个或多个等价类映射操作。

在实施例中,设备平台802被耦合至人性化接口设备(hid)820。平台802可利用相机模块(cm)811收集原始图像数据,其被处理并输出至hid820。包括一个或多个导航特征的导航控制器850可被用来与例如设备平台802和/或hid820交互。在实施例中,hid820可包括经由无线电818和/或网络860耦合至平台802的任何监视器或显示器。hid820可包括例如计算机显示屏、触摸屏显示器、视频监视器、电视类设备、和/或电视。

在实施例中,设备平台802可包括cm811、芯片集805、处理器810、815、存储器/存储装置812、加速器硬件813、应用程序816、和/或无线电818的任何组合。芯片集805可提供处理器810、815、存储器812、加速器813、应用程序816或无线电818之间的互相通信。

一个或多个处理器810、815可被实施为一个或多个复杂指令集计算机(cisc)或精简指令集计算机(risc)处理器;x86指令集可兼容处理器、多内核、或任何其他微处理器或中央处理单元(cpu)。

存储器812可被实施为易失性存储器设备,诸如但不限于:随机存取存储器(ram)、动态随机存取存储器(dram)、或静态ram(sram)。存储器812还可被实施为非易失性存储设备,诸如但不限于:闪速存储器、电池备份sdram(同步dram)、磁性存储器、相变存储器等等。

无线电818可包括能够使用各种适当的无线通信技术来发射和接收信号的一个或多个无线电。此类技术可涉及跨越一个或多个无线网络的通信。示例无线网络包括(但不限于)无线局域网(wlan)、无线个域网(wpan)、无线城域网(wman)、蜂窝网络和卫星网络。在跨越此类网络的通信中,无线电818可根据任何版本中的一个或多个可应用标准来操作。

在实施例中,系统800可被实施为无线系统、有线系统或二者的组合。当被实施为无线系统时,系统800可包括适用于通过无线共享介质进行通信的部件和接口,诸如一个或多个天线、发射器、接收器、收发器、放大器、滤波器、控制逻辑等等。无线共享介质的一个示例可包括无线频谱的部分,诸如rf频谱等等。当被实施为有线系统时,系统800可包括适用于通过有线通信介质进行通信的部件和接口,诸如输入/输出(i/o)适配器、将i/o适配器与对应有线通信介质连接的物理连接器、网络接口卡(nic)、盘控制器、视频控制器、音频控制器等等。有线通信介质的示例可包括导线、电缆、金属引线、印刷电路板(pcb)、背板、交换结构、半导体材料、双绞线导线、同轴电缆、光纤等等。

利用本文所述的示例性实施例表现的等价类节点对象、对象定义、函数和函数调用可在各种硬件架构、小区设计或“ip内核”中实施。

如上所述,可以以变化的物理样式或形式因子来具体化系统800。图9进一步图示移动手机设备900的实施例,在其中可具体化平台802、系统700和/或实现600。在实施例中,例如,设备900可以是具有无线和图像处理能力的移动计算手机设备。如图9中所示,移动手机设备900可包括具有正面901和背面902的外壳。设备900包括显示器904、输入/输出(i/o)设备906、和集成天线908。设备900还可包括导航特征912。显示器904可包括用于显示适用于移动计算设备的信息的任何适当显示单元。i/o设备906可包括用于将信息输入到移动计算设备中的任何适当i/o设备。对于i/o设备906的示例可包括字母数字键盘、数字键盘、触摸板、输入按键、按钮、开关、麦克风、扬声器、语音识别设备和软件、等等。信息还可以通过麦克风(未示出)的方式被输入到设备900中,或者可通过语音识别设备被数字化。实施例不限于在该上下文中。被集成在至少背面902的是相机905(例如包括镜头、孔径和成像传感器),其可以是图像数据通过其被曝光且输出至经过图形优化的成像流水线的一个或多个cm的部件,例如如本文中别的地方所述的。

如上文所例示的,可使用硬件元件、软件元件或二者的组合来实施本文中所述的实施例。硬件元件或模块的示例包括:处理器、微处理器、电路、电路元件(例如晶体管、电阻器、电容器、电感器等等)、集成电路、专用集成电路(asic)、可编程逻辑设备(pld)、数字信号处理器(dsp)、现场可编程门阵列(fpga)、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片集等等。软件元件或模块的示例包括:应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、例程、子例程、函数、方法、规程、软件界面、应用编程接口(api)、指令集、计算代码、计算机代码、代码段、计算机代码段、数据字、值、符号或其任何组合。可根据针对设计的选取而考虑的任何数目的因素来改变确定是否是使用硬件元件和/或软件元件实施实施例,该因素诸如但不限于:期望的计算率、电力级别、耐热性、处理周期预算、输入数据率、输出数据率、存储器资源、数据总线速度以及其他设计或性能约束。

可通过存储在机器可读存储介质上的代表性指令来实施至少一个实施例的一个或多个方面。这样的指令可在其被机器执行期间完全或至少部分驻留在主存储器内和/或在处理器内,存储指令的主存储器和处理器部分然后也构成机器可读存储介质。可编程逻辑电路可具有通过实施计算机可读介质的处理器来配置的寄存器、状态机等等。此类逻辑电路当被编程时然后可被理解为物理变换成落入本文中描述的实施例的范围内的系统。当表示处理器内的各种逻辑的指令被机器读取时,其也可促使该机器制造粘附到本文中所述的架构的逻辑和/或执行本文中所述的技术。被称为小区设计或ip内核的此类表示可被存储在有形、机器可读介质上并被供应给各种消费者或制造设施以便加载到实际作出逻辑的制造机或处理器中。尽管在本文中已经参考实施例描述了某些特征,但是不意图以限制的意义来解释该描述。因此,本文中所述的实现的各种修改以及对本公开所属的领域的技术人员来说显而易见的其他实现被视为在本公开的精神和范围内。

下面的段落简略地描述一些示例性实施例。

在一个或多个第一实施例中,一种设备包括图像图形执行器,其用来接收指定图像处理操作的流水线的图像图形,为该图形中的等价类节点确定被映射到与该节点相关联的函数的等价函数,以及通过调用等价函数来调度在其中使第一源数据块通过等价类节点的图像处理子任务。

为了促进第一实施例中的至少一些,该图像图形执行器用来通过调用用于在第一硬件资源上执行的函数来调度在其中使第一源数据块通过等价类节点的第一图像处理子任务,并且用来通过调用用于在第二硬件资源上执行的等价函数来调度在其中使第二源数据块通过等价类节点的第二图像处理子任务。

为了促进紧接上面的实施例,该第一和第二硬件资源包括具有不同指令集架构的异构设备。

为了促进上面的第一实施例中的至少一些,该图像图形执行器用来与由第一硬件资源对第一图像处理子任务的执行并行地调度用于由第二硬件资源执行的第二图像处理子任务。

为了促进第一实施例中的至少一些,该等价类节点指定与等价函数相关联的优先级,并且图像图形执行器用来至少部分基于该优先级来调度第二图像处理子任务。

为了促进第一实施例中的至少一些,该等价函数是为等价类节点定义的多个等价函数中的一个,并且图像图形执行器用来至少部分基于以下各项中的一个或多个来在多个等价函数调用之间作出基于优先级的选择:与等价函数中的每一个相关联的优先级;所估计的对于各等价函数中的每一个的执行时间;以及摊派给给定硬件资源槽或所有槽的最大时间。

为了促进第一实施例中的至少一些,图形中的第一等价类节点将函数映射到第一等价函数,并且图形中的第二等价类节点将函数映射到不同于第一等价函数的第二等价函数。

为了促进第一实施例中的至少一些,该设备进一步包括基于图形的实现应用编程接口(api),其被配置成将图像处理图形的节点与一个或多个函数等价映射相关联。

为了促进紧接上面的实施例中的至少一些,函数等价映射用来使在以下各项中的至少一个不同的两个或更多函数相关联:精度、执行时间或硬件资源。

为了促进上面的实施例中的至少一些,该api包括将函数标识符与等价函数标识符相关联的等价映射对象或函数。

在一个或多个第二实施例中,一种计算机实施的图像处理方法包括接收指定图像处理操作的流水线的图像图形。该方法进一步包括为图形中的节点确定被映射到与该节点相关联的函数的等价函数。该方法进一步包括通过调用该等价函数来调度在其中使第一源数据块通过等价类节点的图像处理子任务。

为了促进第二实施例中的至少一些,该方法进一步包括:通过调用用于在第一硬件资源上执行的函数来调度在其中使第一源数据块通过等价类节点的第一图像处理子任务,以及通过调用用于在第二硬件资源上执行的等价函数来调度在其中使第二源数据块通过等价类节点的第二图像处理子任务。

为了促进紧接上面的实施例中的至少一些,该第一和第二硬件资源包括具有不同指令集架构的异构设备,并且该方法进一步包括并行执行第一和第二图像处理任务。

为了促进第二实施例中的至少一些,该等价类节点指定与等价函数相关联的优先级,并且该方法进一步包括至少部分基于该优先级来调度第二图像处理子任务。

为了促进第二实施例中的至少一些,该等价函数是为等价类节点定义的多个等价函数中的一个,并且该方法进一步包括至少部分基于以下各项中的一个或多个来在多个等价函数调用之间作出选择:与等价函数中的每一个相关联的优先级;所估计的对于各等价函数中的每一个的执行时间;以及摊派给给定硬件资源槽或所有槽的最大时间。

为了促进第二实施例中的至少一些,该方法进一步包括基于图形的第一等价类节点中的函数的第一映射来调用第一等价函数;以及基于图形的第二等价类节点中的函数的第二映射来调用第二等价函数。

为了促进第二实施例中的至少一些,该方法进一步包括将图像处理图形的节点与一个或多个函数等价映射相关联,其中该映射使在以下各项中的至少一个不同的两个或更多函数相关联:精度、执行时间或硬件资源。

在一个或多个第三实施例中,一个或多个计算机可读存储介质包括存储在其上的指令,当被处理器执行时该指令促使该处理器实行第二实施例中的任一个。

为了促进第三实施例中的至少一些,该介质包括存储在其上的指令,当被处理器执行时该指令促使该处理器执行一种方法,该方法进一步包括:为指定图像处理操作的流水线的图像图形中的节点确定被映射到与该节点相关联的函数的等价函数,以及通过调用该等价函数来调度在其中使第一源数据块通过等价类节点的图像处理子任务。

为了促进紧接上面的实施例中的至少一些,该介质包括存储在其上的指令,当被处理器执行时该指令促使该处理器执行一种方法,该方法进一步包括:通过调用用于在第一硬件资源上执行的函数来调度在其中使第一源数据块通过等价类节点的第一图像处理子任务,以及通过调用用于在第二硬件资源上执行的等价函数来调度在其中使第二源数据块通过等价类节点的第二图像处理子任务。

在一个或多个第四实施例中,一种设备包括用来执行第二实施例中的任一个的装置。

将会认识到,该实施例不限于这样描述的示例性实施例,但是在不偏离所附权利要求的范围的情况下可以利用修改和变化来实行。例如,上述实施例可包括特征的具体组合。然而,在这方面不会对上述实施例进行限制,并且在实施例中,上述实施例可包括开始进行此类特征的仅仅子集、开始进行此类特征的不同顺序、开始进行此类特征的不同组合、和/或进行除了明确列出的那些特征之外的附加特征。因此,应该参考所附权利要求连同此类权利要求给予权利的等同物的全部范围来确定范围。

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