自动管道组成.pdf

上传人:小** 文档编号:1775998 上传时间:2018-07-12 格式:PDF 页数:20 大小:1.37MB
返回 下载 相关 举报
摘要
申请专利号:

CN201380061907.2

申请日:

2013.12.20

公开号:

CN104813282A

公开日:

2015.07.29

当前法律状态:

实审

有效性:

审中

法律详情:

实质审查的生效IPC(主分类):G06F 9/38申请日:20131220|||公开

IPC分类号:

G06F9/38

主分类号:

G06F9/38

申请人:

英特尔公司

发明人:

S.A.克里格; M.D.耶罗尼莫

地址:

美国加利福尼亚州

优先权:

13/728681 2012.12.27 US

专利代理机构:

中国专利代理(香港)有限公司72001

代理人:

徐予红; 张懿

PDF下载: PDF下载
内容摘要

本文提供用于自动管道的方法和设备。可将句法元素手动地插入到代码中,或者自动地注入到代码中。句法元素可规定对独立函数的暗示(例如,数据类型参数),其允许将函数自动地合并到单个循环中,提供优化的数据访问以便合并用于单个循环内的管道中的每个函数。运行时间系统使用句法元素来引导优化以产生用于目标处理器的优化的机器代码。此外,可执行管道。管道包括合并的函数和数据访问。

权利要求书

权利要求书
1.   一种用于自动管道组成的系统,其中所述系统包括:
处理器,其中所述处理器执行代码;以及
代码存储装置,其中句法元素被注入到所述代码存储装置内的代码中,
其中所述句法元素规定将独立函数合并到单个循环中,并且将数据访问合并用于每个函数。

2.   如权利要求1所述的系统,其中编译器使用编译器标记来将句法元素注入到所述代码中。

3.   如权利要求1所述的系统,其中用户将句法元素显式插入到所述代码中。

4.   如权利要求1所述的系统,其中注入句法元素包括使用静态代码分析来自动地推断所述句法元素。

5.   如权利要求1所述的系统,其中注入句法元素包括使用编译指示或特殊的数据类型来显式指示所述句法元素。

6.   如权利要求1所述的系统,其中所述句法元素是描述所述数据的组织的数据属性。

7.   如权利要求1所述的系统,其中所述句法元素是描述要合并的所述数据类型、函数以及缓冲器大小的计算属性。

8.   如权利要求1所述的系统,其中在所述代码的所述执行之前,所述处理器使用所述处理器的本机语言来将句法元素注入到所述代码中。

9.   如权利要求1所述的系统,其中编译器在中间级将句法元素注入到所述代码中,其中所述中间级是基于所述系统的硬件的抽象。

10.   如权利要求1所述的系统,其中所述句法元素被注入到高级编程语言中或由编译器或翻译器注入所述句法元素。

11.   如权利要求1所述的系统,其中运行时间系统使用在目标处理器上执行的句法元素来生成优化的机器代码。

12.   一种用于自动管道组成的设备,包括:
用于将句法元素注入到代码中的逻辑,其中所述句法元素规定将独立函数合并到单个循环中,并且将数据访问合并用于每个函数;
用于执行所述管道的逻辑,其中所述管道包括所述合并的函数和数据访问。

13.   如权利要求12所述的设备,其中用于注入句法元素的所述逻辑包括使用编译器标记来自动地推断所述句法元素。

14.   如权利要求12所述的设备,其中用于注入句法元素的所述逻辑包括使用静态代码分析来自动地推断所述句法元素。

15.   如权利要求12所述的设备,其中用于注入句法元素的所述逻辑包括使用编译指示或特殊的数据类型来显式指示所述句法元素。

16.   如权利要求12所述的设备,其中所述句法元素是描述所述数据的组织的数据属性。

17.   如权利要求12所述的设备,其中所述句法元素是描述要合并的所述数据类型、函数以及缓冲器大小的计算属性。

18.   如权利要求12所述的设备,还包括运行时间系统,用于使用在目标处理器上执行的句法元素来生成优化的机器代码。

19.   如权利要求12所述的设备,其中所述设备是打印装置。

20.   如权利要求12所述的设备,其中所述设备是图像捕获机制。

21.   至少一种机器可读介质,具有存储在其中的指令,所述指令响应于在计算装置上执行,使所述计算装置:
将句法元素注入到代码中,其中所述句法元素规定将独立函数合并到单个循环中,并且将数据访问合并用于每个函数;
执行管道,其中所述管道包括所述合并的函数和数据访问。

22.   如权利要求21所述的至少一种机器可读介质,其中所述句法元素是描述所述数据的组织的数据属性。

23.   如权利要求21所述的至少一种机器可读介质,其中所述句法元素是描述要合并的所述数据类型、函数以及缓冲器大小的计算属性。

24.   如权利要求21所述的至少一种机器可读介质,其中注入句法元素包括使用编译器标记来自动地推断所述句法元素。

25.   如权利要求21所述的至少一种机器可读介质,其中注入句法元素包括使用静态代码分析来自动地推断所述句法元素。

26.   如权利要求21所述的至少一种机器可读介质,其中注入句法元素包括使用编译指示或特殊的数据类型来显式指示所述句法元素。

27.   如权利要求21所述的设备,其中运行时间系统使用在目标处理器上执行的句法元素来生成优化的机器代码。

说明书

说明书自动管道组成
技术领域
本公开通常涉及成像操作。更具体地,本公开涉及自动地组成用于成像操作的管道。
背景技术
用于图像处理的管道通常由具有计算架构以及要处理的特定成像算法的知识的用户手动地拼凑在一起。这样的管道的构造是耗时的,同时是跨计算架构不可移植的。
附图说明
通过参考附图可更好地理解下文的详细描述,附图包含所公开的主题的许多对象和特征的具体示例。
图1A是根据实施例的在被合并到优化函数中之前的函数的框图;
图1B是根据实施例的在被合并到优化函数中之后的函数的框图;
图2是根据实施例的用于自动管道组成的过程流程图;
图3是根据实施例的Sobel算子的视觉管道的图示;
图4是根据实施例的可被使用的计算装置400的框图;以及
图5是根据实施例的示出存储用于自动管道组成的代码的有形的、非暂时性计算机可读媒体500的框图。
具体实施方式
如以上所论述的,手动构造的管道的生成是耗时的,同时是跨计算架构不可移植的。其结果是,成像管道变得成本过高。
本技术的实施例提供跨计算架构可移植的自动管道组成。在实施例中,管道包含合并到单个外部循环中的各个原函数的集合。此外,在实施例中,合并在外部循环中用于所有原函数的数据访问。以此方式,可使用跨计算架构可移植的算法描述来优化计算系统的存储器和计算资源。此外,可减少数据复制,这消除了数据传递,允许数据值存储在计算单元内的快速寄存器中,消除高速缓存未命中,减少整体存储器带宽,节约功率,并且提高性能。
此外,本文描述的技术提供用于合并到共享公共外部循环和数据读取写入访问的管道中的手动或自动函数。在手动技术中,程序员可将句法元素插入到代码中来标记函数数据类型和使本文描述的技术能用于将代码编译或翻译成合并和优化的管道的其它属性。合并的优化的管道共享公共外部循环和数据读取或写入优化。在自动技术中,编译器或翻译器可检查源代码并且自动地推断应被插入到代码中的句法元素以允许函数合并和公共外部循环以及共享数据读取或写入优化。在实施例中,对软件程序员明显的是句法元素被自动地插入到编译和翻译代码中。因此,本文描述的技术使句法元素能被手动地插入到代码中来引导合并到共享外部循环并且组合数据读取或写入的管道中,使用自动静态代码分析来将代码自动地翻译成更低级的优化代码,或将代码翻译成具有句法元素的其它代码(句法元素被自动插入来引导函数合并到共享外部循环和组合的数据读取和写入的管道中)。
在下文的描述和权利要求中,可使用术语“耦合”和“连接”以及它们的派生词。应该理解这些术语不旨在作为彼此的同义词。而是,在特定实施例中,“连接”可用于指示两个或者更多元素与彼此直接物理或电接触。“耦合”可意味着两个或者更多元素直接物理或电接触。然而,“耦合”还可意味着两个或者更多元素与彼此不直接接触,但仍然与彼此合作或交互。
一些实施例可实现在硬件、固件和软件的一个或组合中。一些实施例还可实现为存储在机器可读介质上的指令,指令可由计算平台读取并且执行来执行本文描述的操作。机器可读介质可包含用于以由机器(例如,计算机)可读的形式存储或传送信息的任何机制。例如,机器可读介质可包含只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储媒体、光存储媒体、闪速存储器装置、等等。
实施例是实现或示例。在说明书中对“一实施例”、“一个实施例”、“一些实施例”、“各实施例”或“其它实施例”的参考意味着结合实施例描述的特定特征、结构或特性包含在本发明的至少一些实施例中,但不一定包含在所有实施例中。“一实施例”、“一个实施例”或“一些实施例”的各种出现不一定都参考相同的实施例。来自实施例的元素或方面可以与另一实施例的元素或方面组合。
不是本文描述并且图示的所有部件、特征、结构、特性等都需要被包含在特定实施例中。例如,如果说明书表述“可”、“可能”、“可以”或“能够”包含部件、特征、结构或特性,不要求包含那个特定部件、特征、结构或特性。如果说明书或权利要求提及“一”元素,那不意味着只有一个元素。如果说明书或权利要求提及“附加的”元素,那不排除有多于一个的附加的元素。
要注意的是,虽然已经参考特定实现来描述一些实施例,但是根据一些实施例的其它实现是可能的。此外,在图中图示的和/或本文描述的电路元素或其它特征的布置和/或顺序不需要以图示和描述的特定方式来布置。根据一些实施例,许多其它布置是可能的。
在图中示出的每个系统中,在一些情况下元素可以每个具有相同的参考标号或不同的参考标号来暗示表示的元素可以是不同和/或类似的。然而,元素可足够灵活来具有不同的实现并且与本文示出或描述的系统中的一些或所有系统一起工作。在图中示出的各种元素可以是相同或不同的。哪一个被称作第一元素并且哪一个被称作第二元素是任意的。
图1A是根据实施例的在被合并到优化函数中之前的函数的框图。图1A包含函数102、函数104以及函数106。可通过独立地读取来自输入图像数据缓冲器108的必要数据来执行每个函数。然后每个函数执行其自己的独立计算,并且将产生的数据写入到输出图像数据缓冲器110。
例如,函数102可读取来自输入图像数据缓冲器108的数据。虽然输入图像数据缓冲器108对于函数102、函数104以及函数106中的每个是相同的,但是输入图像数据缓冲器中的图像可读取自存储器中的不同位置。然后,函数102对数据执行计算112A,并且然后将产生的数据写入到输出图像数据缓冲器110。类似地,函数104执行计算112B并且函数3执行计算112C。在实施例中,输出图像数据缓冲器110中的数据被写入到从那里取回它的存储器中的相同位置,这被称作适当计算数据。因此,每个函数102、函数104以及函数106分别包含其自己的计算,具体地,计算112A、计算112B以及计算112C。
图1B是根据实施例的在被合并到优化函数中之后的函数的框图。当函数102、函数104以及函数106中的每个如本文所描述的被合并时,发生一个单个读取操作114来读取函数102、函数104以及函数106中的每个所需要的数据。数据可读取自输入线缓冲器116,它接收来自输入图像数据缓冲器108的数据。虽然到读取操作114的输入被示为输入线缓冲器116中的线,但是到读取操作114的输入可以是点、线、区域、面积、结构化数据、算法随机数据或其任何组合。在被输入到读取操作之后,然后在管道中的原函数之间的快速寄存器和高速缓存存储器中传递数据,从而提高性能并且降低存储器带宽。因此,数据可在原函数之间传递而没有被写入到存储器中。
在每个相应计算操作112A、112B和112C完成之后,发生一个写入操作120来写入来自函数102、函数104以及函数106的产生的数据。将数据写入到输出线缓冲器122。然后输出线缓冲器122可将数据写入到输出图像数据缓冲器110。虽然输出被示为输出线缓冲器122,但是到输出图像数据缓冲器110的输出可以是点、线、区域、面积、结构化数据、算法随机数据或其任何组合。另外,输入数据的格式不一定与输出数据的格式相同。
使用本技术,可将函数102、函数104以及函数106中的每个合并在一起,其中每个函数共享公共读取操作和公共写入操作。以此方式,可分别优化读取缓冲器,使得将更小片的数据读取到缓冲器来避免高速缓存未命中。通过合并函数,提供性能节约。因此,可以在运行中合并每个函数,而没有对于每个数据输入从存储器读取。当使用逐个元素的操作时,每次操作元素时不访问存储器。此外,可根据硬件支持来优化操作并且并行地执行操作。在实施例中,合并函数的方法与函数所使用的数据类型相关。例如,如果管道中的函数的集合使用相同大小的矩形区域,则可将数据预取读取馈送到处理相同大小的矩形区域的每个函数。然后,函数可并行地处理那些矩形区域。此外,在实施例中,本技术使函数能被标记在源代码中来指定公共数据类型。引入到源代码中来指定公共数据类型的数据类型句法元素使编译器或翻译器能装配管道并且生成代码来根据数据类型处理数据预取、读取或写入。
在示例中,图像可以从视频照相机输入。函数102可以用于锐化图像,函数104可以用于增强图像的色彩,并且函数106可以用于均衡图像的灰度级。在没有自动管道组成的情况下,在使用函数104增强图像的色彩之前,将使用函数102来锐化整个图像。以此方式,图像可以从输入图像数据缓冲器108获得,被锐化,并且然后被写入到输出图像数据缓冲器110。在实施例中,图像可被写回到在存储器中取回它的相同的位置。在锐化整个图像之后,然后可使用函数104来增强图像的色彩而没有将函数发送回存储器。最后,函数106可用于均衡图像的灰度级,然后将它写入到存储器。在函数106之后,可使用输出图像数据缓冲器110将图像数据写入到存储器中的位置。以连续方式执行函数,而没有在每个函数之后将数据写入到存储器,消除了图像的重复读取和更少的高速缓存未命中。
引入到源代码来指定公共数据类型的数据类型句法元素使编译器或翻译器能装配管道并且生成代码来根据数据类型处理数据预取、读取或写入。插入到代码中的数据属性是可以被附加到代码内的数据项目以便描述代码的组织的任何信息。例如,可将数据属性附加到各个数据项目来描述数据组织。数据组织可以规定完成特定操作或函数需要什么数据,并且开始或完成特定操作或函数需要什么数据。数据属性还可用于定义数据缓冲器的属性。在实施例中,数据组织可以提供用于自动优化句法元素的暗示。数据属性应用到全局、本地或参数数据,并且描述可如何使用此数据。在实施例中,数据缓冲器或缓冲器可被称作矩阵、图像或阵列。
还可将计算属性插入到代码中。将计算属性附加到可以用于描述通过其组织数据缓冲器或存储器访问的技术的代码内的任何计算项目。还可将计算属性附加到描述正由代码执行的特定函数的代码内的任何计算项目。计算属性允许数据缓冲器优化、存储器访问优化以及函数合并。计算属性可包含用于各种形状的处理的类型,例如点数据、线数据、区域数据、结构化数据、算法随机数据或其任何组合。每个类型或形状的数据访问使用不同的优化方法。例如,点、线和面积区域每个要求不同的存储器优化,这是因为访问存储器的技术对于每个形状不同。此外,计算属性允许用于高速缓存存储器策略的自动优化来根据用于给定函数的计算属性最小化页面错误并且本地化存储器访问。
以下的伪代码示出数据类型和代码编译指示的实施例来允许推断优化和显式优化。在实施例中,静态代码分析器可推断适当的数据类型。













上述的代码示出数据类型和代码编译指示来允许推断优化和显式优化。软件工程师在源代码语言中插入显式优化。基于源代码语言的静态分析将推断优化自动地插入到代码的低层中,例如,插入到汇编语言或LLVM代码中。
在实施例中,有用的是将句法元素的范围提供到代码中来允许数据优化并且显露合并函数的机会。此外,在实施例中,具体属性可用于描述精确的数据类型信息,以及数据的使用。实施例中的属性可包含如下面描述的以下句法元素(例如,数据属性或计算属性)来描述如何使用数据。
如上面说明的,未优化的代码包含具有三个单独的读取操作、计算操作(函数)以及写入操作的三个独立函数。通过句法元素的添加,可通过插入线优化句法元素来指定下文的函数(如在其上接受线类型数据)来优化每个函数,如上面说明的。线优化句法元素使函数1、函数2以及函数3中的每个能被合并在一起来共享公共读取操作和公共写入操作,因为每个计算操作使用数据线作为输入。
图2是根据实施例的用于自动管道组成的过程流程图。在框202处,将句法元素注入到代码,其中句法元素规定将独立函数合并到单个循环中,并且合并数据访问用于每个函数。在实施例中,代码可以是高级语言并且程序员可将句法元素显式注入到高级代码中。此外,在实施例中,代码可以是中间级代码,其中随着代码被编译,编译器将数据属性和计算属性注入到代码中。编译器可推断数据属性或对任何程序员显然地插入它们。另外,在实施例中,代码可以是汇编级或本机代码,其中在运行时间将数据属性和计算属性注入到汇编级或本机代码中。
句法元素包含描述将由每个函数处理的数据的数据属性。例如,适当的数据属性可用于规定输入图像也是输出图像,因此,应该适当处理函数的数据。输出完成数据属性规定必须在继续任何其它函数之前处理整个数据对象。类似地,输入完成数据属性表示在开始关联的函数的执行之前数据对象应该准备好处理。输入部分ok数据属性表示只有部分输入数据必须准备好开始关联的函数的执行。类似地,输出部分ok数据属性表示只有部分数据可以沿着管道往下传递而由关联的函数处理剩余的数据。此外,在示例中,无序的数据属性应用到输入和输出。无序的数据属性表示可以用任何次序来处理与特定函数关联的数据。另外,不受限的输入或不受限的输出数据属性不限制关联的函数的数据输入或输出。在实施例中,任何以上数据属性可由高级图表分析推断,在高级语言中被显式规定,或被插入到对程序员明显的中间代码表示中。
注入的句法元素也包含允许数据缓冲器优化、存储器缓冲器优化以及函数合并的计算属性。计算属性包含被访问用于处理的各种形状的数据的属性类型,包含点、线、区域、结构化类型、随机数据或其任何组合。在存储器中访问的数据的每个类型或形状采用不同的方法用于优化,因为用于在存储器中访问数据的技术可取决于访问的数据的形状或类型而变化。另外,取决于在存储器中访问的数据类型,可优化数据缓冲器。例如,数据缓冲器可改变大小来适应访问的存储器的最小单元。以此方式,数据缓冲器可用于优化高速缓存存储器策略以便对于给定函数最小化页面错误并且本地化存储器访问。计算属性包含各种形状的处理的类型,包含点、线、区域、结构化类型以及随机数据。每个类型或形状的数据访问要求不同的方法用于优化。例如,点、线和面积区域每个要求不同的存储器优化。计算属性允许用于高速缓存存储器策略的自动优化来根据给定函数的计算属性而最小化页面错误并且本地化存储器访问。在示例中,计算属性可包含点数据计算属性,其中每个输出元素是对应输入元素的函数。区域数据计算属性表示在具体位置处的输出元素何时是输入区域的函数(内核、边缘状况)。线数据计算属性表示输出元素何时是输入线的函数。结构化数据计算属性表示数据何时采用结构化的格式中,但是将使用结构内的随机访问。例如,结构化数据可以是一个数据点何时具有与那个点关联的其它数据。例如,像素可具有可以放置在结构化数据格式中的关联的纹理和深度信息。此外,算法随机数据计算属性(许多分支)表示输出元素何时是任意数量的输入元素的函数。在实施例中,这些计算属性可由高级图表分析来推断或以代码的高级语言来显式规定。此外,可将计算属性插入到对任何程序员明显的中间代码表示中。
虽然使用函数作为分析的单元来描述本技术,但是还可将本技术应用到代码的逐个元素分析。例如,可将每个函数内的元素合并到执行与原始代码的函数相同的计算的管道的一个单个函数中。
在框204处,执行管道,其中管道包括合并的函数和数据访问。在实施例中,管道组成管理器可使用静态代码分析的组合来自动生成新的代码。新的代码包含注入到代码中的句法元素。此外,在实施例中,管道组成管理器可翻译以前注入的句法元素以便将函数一起合并到公共外部循环中,公共外部循环共享被传递到循环中并且用在组成循环的函数之间的管道中的相同的数据。管道管理器可基于进来的数据的形状来配置数据缓冲器。例如,数据缓冲器可实现为滑动区域或滑动线缓冲器。在实施例中,滑动线缓冲器可包含滑动区域缓冲器。
具体地,管道组成管理器可首先执行数据缓冲减小和优化。尺寸和拷贝减小都可以独立地完成用于函数之间的输入和输出缓冲器。接着,管道组成管理器可执行合并到更少的循环的函数级。基于每个函数的输入/输出缓冲器要求,函数组合是可能的,其中函数被合并在一起来采用多个函数并且将它们一起组合到单个函数或循环中。如以上所论述的,数据属性允许在编译器级和运行时间级的优化。例如,可注入句法元素并且可以用任何语言来执行对应的优化,包含低级虚拟机(LLVM)语言、C语言、汇编语言或其它语言。其结果是,可以将句法元素和基于句法元素组成的产生的管道移植到任何机器以便在任何硬件配置上使用。
在实施例中,代码编译指示允许推断优化和显式优化。此外,当注入计算属性时,静态代码分析器可推断适当的数据类型。可由软件工程师以源代码语言插入显式优化。基于源代码语言的静态分析,自动将推断优化插入到代码的下层中,例如,插入到汇编语言或LLVM代码中。除了代码编译指示之外,编译器标记还可用于将句法元素注入到如上所述的代码中。
图3是根据实施例的Sobel算子的视觉管道的图示。Sobel算子用在图像处理内的边缘检测算法中。使用Sobel算子,将图像与矩阵卷积以便在水平和垂直方向中将滤波器应用到图像。图像上的Sobel算子的结果是在图像的每个点处的图像强度的梯度。可在图像中其中图像强度是零向量的点处发现图像的边缘。
在框302处,提供输入图像A作为到Sobel算子的输入。在框304处,将3x3内核Gx与输入图像A卷积,其中矩阵Gx用于计算水平导数的近似值。卷积操作发生在框304A处,并且在框304B处将产生的数据馈送到缓冲器中。将来自缓冲器304B的数据馈送到平方函数304C。在304D处将产生于平方函数的数据馈送到缓冲器。
类似地,在框306处,将3x3内核Gy与输入图像A卷积,其中矩阵Gy用于计算垂直导数的近似值。卷积操作发生在框306A处,并且在框306B处将产生的数据馈送到缓冲器中。将来自缓冲器306B的数据馈送到平方函数306C。在306D处将产生于平方函数的数据馈送到缓冲器。
在两个输入到达缓冲器304D和306D之后,在框308可将数据发送到加和函数,并且在框310发送到缓冲器。在框312处可将平方根函数应用到数据。在框312处应用平方根之后,产生的数据是用于原始输入图像A内的每个点的图像强度。如本文所描述的,使用句法元素来将涉及的各种操作合并到共享数据的公共外部循环中来执行Sobel算子。然后可将数据在外部循环中的操作之间传递而不将数据写入到存储器。
图4是可根据实施例使用的计算装置400的框图。例如,计算装置400可以是膝上计算机、台式计算机、平板计算机、移动装置或服务器、等等。计算装置还可以是打印装置或图像捕获机制。计算装置400可包含配置为执行存储的指令的中央处理单元(CPU)402,以及存储可由CPU 402执行的指令的存储器装置404。CPU可由总线406耦合到存储器装置404。CPU也包含高速缓存408。在实施例中,可根据CPU高速缓存408的大小来优化自动管道组成。此外,CPU 402可以是单核处理器、多核处理器、计算群集或任何数量的其它配置。此外,计算装置400可包含多于一个的CPU 402。由CPU 402执行的指令可用于允许如本文所描述的自动管道组成。
计算装置400还可包含图形处理单元(GPU)408。如所示的,CPU 402可通过总线406耦合到GPU 408。GPU 408可配置为执行计算装置400内的任何数量的图形操作。例如,GPU 408可配置为渲染或操纵将显示给计算装置400的用户的图形图像、图形帧、视频等。在一些实施例中,GPU 408包含多个图形引擎(未示出),其中每个图形引擎配置为执行具体图形任务,或执行具体类型的工作负荷。GPU也包含高速缓存410。在实施例中,可根据CPU高速缓存410的大小来优化自动管道组成。
存储器装置404可以包含随机存取存储器(RAM)、只读存储器(ROM)、闪速存储器或任何其它合适的存储器系统。例如,存储器装置404可包含动态随机存取存储器(DRAM)。根据实施例,存储器装置404可包含配置为将句法元素注入到图像处理代码中的应用编程接口(API)412。存储器装置404还可包含用于存储将处理的代码的代码存储装置。
计算装置400包含图像捕获机制414。在实施例中,图像捕获机制414是照相机、立体照相机、红外传感器等。图像捕获机制414用于捕获将处理的图像信息。因此,计算装置400还可包含一个或多个传感器。
CPU 402可通过总线406连接到配置为将计算装置400连接到一个或多个I/O装置418的输入/输出(I/O)装置接口416。例如,I/O装置418可包含键盘和指向装置,其中指向装置可包含触摸板或触摸屏、等等。I/O装置418可以是计算装置400的内置部件,或可以是外部连接到计算装置400的装置。
CPU 402还可通过总线406链接到配置为将计算装置400连接到显示装置422的显示接口420。显示装置422可包含作为计算装置400的内置部件的显示屏幕。显示装置422还可包含外部连接到计算装置400的计算机显示器、电视或投影仪、等等。
计算装置也包含存储装置424。存储装置424是物理存储器,例如,硬驱动器、光驱、拇指驱动器、驱动器阵列或其任何组合。存储装置424还可包含远程存储驱动器。存储装置424包含配置为在计算装置400上运行的任何数量的应用426。应用426可用于组合媒体与图形,包含3D立体照相机图像和用于立体显示的3D图形。在示例中,根据本技术的实施例,应用426可用于自动组成管道。
计算装置400还可包含网络接口控制器(NIC)428,其可配置为通过总线406将计算装置400连接到网络430。网络430可以是广域网(WAN)、局域网(LAN)或因特网、等等。
在一些实施例中,应用426可以处理图像数据并且将处理的数据发送到打印引擎432。打印引擎432可处理图像数据并且将图像数据发送到打印装置434。打印装置434可以包含打印机、传真机以及可以使用打印对象模块436来打印图像数据的其它打印装置。在实施例中,打印引擎432可跨网络430将数据发送到打印装置434。
图4的框图不旨在指示计算装置400要包含图4中示出的所有部件。另外,取决于具体实现的细节,计算装置400可包含在图4中未示出的任何数量的附加的部件。
图5是根据实施例的示出存储用于自动管道组成的代码的有形的、非暂时性计算机可读媒体500的框图。可由处理器502通过计算机总线504访问有形的、非暂时性计算机可读媒体500。此外,有形的、非暂时性计算机可读媒体500可包含配置为指引处理器502来执行本文描述的方法的代码。
本文讨论的各种软件部件可存储在有形的、非暂时性计算机可读媒体500上,如在图5中指示的。例如,注入模块506可配置为将句法元素注入到代码中,其中句法元素规定将独立函数合并到单个循环中,并且将数据访问合并用于每个函数。执行模块508可配置为执行管道,其中管道包括合并的函数和数据访问。
图5的框图不旨在指示有形的、非暂时性计算机可读媒体500要包含在图5中示出的所有部件。另外,取决于具体实现的细节,有形的、非暂时性计算机可读媒体500可包含在图5中未示出的任何数量的附加的部件。
示例1
本文描述用于自动管道组成的系统。
系统包含处理器,其中处理器执行代码。系统也包含代码存储装置,其中句法元素被注入到代码存储装置内的代码中。句法元素规定将独立函数合并到单个循环中,并且将数据访问合并用于每个函数。编译器可使用编译器标记来将句法元素注入到代码中。用户可将句法元素显式插入到代码中。注入句法元素可包含使用静态代码分析来自动地推断句法元素。注入句法元素还可包含使用编译指示或特殊的数据类型来显式指示句法元素。句法元素可以是描述数据的组织的数据属性,或句法元素可以是描述要合并的数据类型、函数以及缓冲器大小的计算属性。处理器可在代码的执行之前使用处理器的本机语言将句法元素注入到代码中。另外,编译器可在中间级将句法元素注入到代码中,其中中间级是基于系统的硬件的抽象。句法元素还可被注入到高级编程语言中,或句法元素被注入到编译器或翻译器中。运行时间系统可使用在目标处理器上执行的句法元素来生成优化的机器代码。
示例2
本文描述用于自动管道组成的设备。设备包含逻辑来将句法元素注入到代码中,其中句法元素规定将独立函数合并到单个循环中,并且将数据访问合并用于每个函数。设备也包含逻辑来执行管道,其中管道包括合并的函数和数据访问。注入句法元素可包含使用编译器标记来自动地推断句法元素。注入句法元素还可包含使用静态代码分析来自动地推断句法元素。此外,注入句法元素可包含使用编译指示或特殊的数据类型来显式指示句法元素。句法元素可以是描述数据的组织的数据属性。另外,句法元素可以是描述要合并的数据类型、函数以及缓冲器大小的计算属性。运行时间系统可使用在目标处理器上执行的句法元素来生成优化的机器代码。此外,设备可以是打印装置或图像捕获装置。
示例3
本文描述至少一种机器可读介质。机器可读介质包含指令,指令响应于在计算装置上执行,使计算装置:将句法元素注入到代码中,其中句法元素规定将独立函数合并到单个循环中,并且将数据访问合并用于每个函数。指令还可使计算装置执行管道,其中管道包括合并的函数和数据访问。句法元素可以是描述数据的组织的数据属性。此外,句法元素可以是描述要合并的数据类型、函数以及缓冲器大小的计算属性。注入句法元素可包含使用编译器标记来自动地推断句法元素。另外,注入句法元素可包含使用静态代码分析来自动地推断句法元素。此外,注入句法元素可包含使用编译指示或特殊的数据类型来显式指示句法元素。运行时间系统可使用在目标处理器上执行的句法元素来生成优化的机器代码。
在前述的描述中,已经描述所公开的主题的各种方面。为了解释的目的,阐述具体数量、系统和配置以便提供主题的彻底理解。然而,对具有本公开的益处的本领域的技术人员显而易见的是可在没有具体细节的情况下实践主题。在其它实例中,为了不模糊所公开的主题,省略、简化、组合或分割熟知的特征、部件或模块。
所公开的主题的各实施例可实现在硬件、固件、软件或其组合中,并且可通过参考或结合程序代码(例如用于仿真、模仿以及设计的制作的指令、功能、过程、数据结构、逻辑、应用程序、设计表示或格式)来描述,所述程序代码当被机器访问时使机器执行任务,定义抽象数据类型或低级硬件上下文,或产生结果。
为了仿真,程序代码可使用硬件描述语言或实质上提供期望如何执行设计的硬件的模型的另一功能的描述语言来表示硬件。程序代码可以是汇编或机器语言或可被编译和/或翻译的数据。此外,在本领域中常常谈到软件,以一个形式或另一形式来采取动作或造成结果。这样的表达仅仅是由使处理器执行动作或产生结果的处理系统开始程序代码的执行的速记方式。
例如,程序代码可存储在易失性和/或非易失性存储器中,例如,包含固态存储器、硬驱动器、软盘、光存储装置、磁带、闪速存储器、记忆棒、数字视频盘、数字多功能盘(DVD)等的存储装置和/或关联的机器可读或机器可访问介质,以及更特殊的介质,例如,机器可访问的生物状态保存存储装置。机器可读介质可包含任何有形的机制,用于以机器(例如,天线、光纤、通信接口等)可读的形式存储、传送或接收信息。可以用分组、串行数据、并行数据等形式传送程序代码,并且可以用压缩或加密的格式使用程序代码。
程序代码可实现在在可编程机器(例如,移动或固定计算机、个人数字助理、机顶盒、蜂窝电话和寻呼机以及其它电子装置,每个包含处理器、处理器可读的易失性和/或非易失性存储器、至少一个输入装置和/或一个或多个输出装置)上执行的程序中。可将程序代码应用到使用输入装置输入的数据来执行描述的实施例并且生成输出信息。可将输出信息应用到一个或多个输出装置。本领域的一名普通技术人员可意识到可以利用各种计算机系统配置(包含多处理器或多核处理器系统、小型计算机、大型计算机以及普及或微型计算机或可被嵌入到实际上任何装置中的处理器)来实践所公开的主题的实施例。还可在分布式计算环境(其中可由通过通信网络链接的远程处理装置来执行任务)中实践所公开的主题的实施例。
虽然可将操作描述为顺序过程,但是实际上可并行地、同时地和/或在分布式环境中、并且利用由单个或多个处理器机器的访问的本地和/或远程存储的程序代码来执行一些操作。此外,在一些实施例中,可重新布置操作的顺序而没有背离所公开的主题的精神。嵌入式控制器可使用程序代码或者程序代码可结合嵌入式控制器来使用。
虽然已经参考说明性的实施例来描述所公开的主题,但是此描述不旨在以限制的意义解释。对所公开的主题所属的领域的技术人员显而易见的是说明性的实施例的各种修改以及主题的其它实施例被认为在所公开的主题的范围内。

自动管道组成.pdf_第1页
第1页 / 共20页
自动管道组成.pdf_第2页
第2页 / 共20页
自动管道组成.pdf_第3页
第3页 / 共20页
点击查看更多>>
资源描述

《自动管道组成.pdf》由会员分享,可在线阅读,更多相关《自动管道组成.pdf(20页珍藏版)》请在专利查询网上搜索。

本文提供用于自动管道的方法和设备。可将句法元素手动地插入到代码中,或者自动地注入到代码中。句法元素可规定对独立函数的暗示(例如,数据类型参数),其允许将函数自动地合并到单个循环中,提供优化的数据访问以便合并用于单个循环内的管道中的每个函数。运行时间系统使用句法元素来引导优化以产生用于目标处理器的优化的机器代码。此外,可执行管道。管道包括合并的函数和数据访问。。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1