本发明专利技术公开了一种系统,该系统通过将源代码语言编译成统一的中间表示来将源代码语言与最终执行环境解耦,该统一的中间表示符合一种语言模型,该语言模型既允许并行图形操作,又允许通用计算操作。然后中间表示可被分发到最终用户计算机,其中嵌入式编译器可以将中间表示编译成以该最终用户设备中可用的CPU和GPU为目标的可执行二进制文件。该中间表示足以定义图形和非图形计算内核和着色器。在安装时或稍晚,可以针对给定最终用户计算系统的特定目标硬件来编译中间表示文件。给定计算系统中的CPU或其他主机设备可以编译中间表示文件,以生成针对系统内的硬件目标,诸如GPU的指令集架构二进制文件。
【技术实现步骤摘要】
【国外来华专利技术】版权声明本专利文档的公开内容的一部分包含受到(版权或掩模作品权)保护的材料。由于本专利文档或本专利公开内容出现在专利与商标局专利文件或记录中,因此(版权或掩模作品权)所有人不反对任何人对本专利文档或本专利公开内容的拓制,但会以其他方式保留任何形式的所有(版权或屏蔽作品权)权利。
技术介绍
本公开整体涉及计算机编程领域。更具体地讲,但并非作为限制,本申请涉及用于编程图形和通用并行计算应用的技术,这些图形和应用可以被编译成通用中间表示,该通用中间表示可以进一步被编译以在各种图形和计算处理器上执行。计算机和其他计算设备通常具有至少一个可编程处理元件,通常被称为中央处理单元(CPU)。它们常常还具有其他可编程处理器,其用于各种类型,诸如图形处理操作的专门处理,因此通常被称为图形处理单元(GPU)。GPU通常包括多个内核或处理元件,其被设计成在并行数据流上执行相同的指令,使得它们比通用CPU更有效,通用CPU用于其中并行处理大块数据的算法。通常,CPU充当主机,并且向GPU传递专门的并行任务。尽管GPU一开始是为了呈现图形而开发的,并保持经常用于该目的,但当前的GPU支持一种编程范式,该编程范式允许除了将GPU用作图形处理器之外,还可将GPU用作通用并行处理单元。这种范式允许实施与通过以更一般的非面向图形的方式向GPU计算硬件赋予访问来呈现图形不相关的算法。已经开发了几种框架用于具有CPU和GPU的异质计算平台。这些框架包括来自AppleInc.的Metal框架,但业内可以使用其他框架。一些框架关注的是将GPU用于一般计算任务,从而允许任何应用将GPU并行处理功能用于不止图形应用。其他框架关注将GPU用于图形处理,并提供API用于呈现二维(2D)和三维(3D)图形。Metal框架支持GPU加速的高级3D图形呈现以及数据并行计算工作负载。Metal和其他框架提供了类似C的开发环境,其中用户能够创建应用,以运行于各种不同类型的CPU、GPU、数字信号处理器(DSP)和其他处理器上。一些框架还提供了编译器和运行环境,其中可以在异质计算系统内编译和执行代码。在使用一些框架时,开发者能够使用单个统一的语言将当前使用的所有处理器确定为目标。这是通过为开发者提供以类似方式对这些架构的全部进行概念化的抽象平台模型和应用编程接口(API),以及跨异质架构支持数据和任务并行化的执行模型而实现的。Metal具有对应的着色语言以描述图形着色器和计算函数两者,这可以在构建时间期间编译并随后在运行时加载。Metal还支持Metal着色语言代码的运行时编译。可以从主机(例如CPU)将任务卸载到计算机系统中的任何可用GPU。使用Metal或其他框架,程序员能够编写将运行于供应商已经为其提供对应的框架特有驱动程序的任何GPU上的程序。在执行Metal或其他框架程序时,一系列API调用配置该系统以便执行,嵌入式编译器编译Metal或其他框架代码,并且运行时异步地协调并行内核和着色器之间的执行。应用可以使用多个框架的功能,在该应用的框架特有部分之间共享数据。因为开发者可能不知道将执行应用的实际CPU或GPU,所以开发者不能将源代码编译成用于最终用户设备的纯二进制文件。典型的基于框架的系统获取源代码并通过最终用户系统上的嵌入式编译器运行它,来为该系统上可用的目标GPU生成可执行代码。然后,将可执行代码或可执行代码的部分发送到目标GPU并执行。然而,开发者会更希望不必将其着色器和内核作为源代码传输,而是离线编译其着色器和内核。此外,每种源代码语言都需要最终用户设备上的能够编译源代码语言的嵌入式编译器。因此,在本领域中需要一种方法,用于向独立于源代码语言的运行环境提供软件而不暴露用于生成着色器或内核代码的源代码。
技术实现思路
一种系统通过将源代码语言编译成统一的中间表示而将源代码语言与最终执行环境解耦,并符合一种语言模型,该语言模型既允许并行图形操作,又允许通用计算操作。然后,中间表示可被分发到最终用户计算机,其中嵌入式编译器可以将中间表示编译成以该最终用户设备中可用的CPU和GPU为目标的可执行二进制文件。该中间表示足以定义图形和非图形计算内核和着色器两者。在安装时或稍晚,可以针对给定最终用户计算系统的特定目标硬件来编译中间表示文件。给定计算系统中的CPU或其他主机设备可以编译中间表示文件,以生成针对系统内的硬件目标,诸如GPU的指令集架构二进制文件。在运行时,可以打开二进制文件,并从二进制文件检索一个或多个内核和着色器。然后可以将内核和着色器存储于存储器中,并且正在执行的应用可以经由运行环境向GPU递送每个内核和着色器以用于执行。考虑本文给出的方法的以下详细描述,这些和其他特征和优点对于本领域的普通技术人员而言将变得显而易见。附图说明图1以框图的形式示出了根据一个实施方案的一种用于统一中间表示的计算机系统。图2以框图的形式示出了根据一个实施方案的用于统一中间表示的开发者系统和最终用户设备的集合。图3以框图的形式示出了根据一个实施方案的一种采用统一中间表示的多阶段编译器系统。图4以框图的形式示出了根据一个实施方案的一种用于从中间表示文件形成可执行二进制文件的计算机系统和技术。图5以框图的形式示出了根据一个实施方案的一种用于从中间表示文件形成可执行二进制文件的计算机系统和技术。图6以流程图的形式示出了根据一个实施方案的一种用于生成和使用统一中间表示的技术。具体实施方式在以下描述中,为了解释的目的,阐述了很多具体细节以便提供对专利技术的彻底理解。然而,对本领域的技术人员而言显而易见的是,可以在不存在这些具体细节的情况下实践本专利技术。在其他实例中,结构和设备被以框图的形式示出,以便避免不必要地模糊本专利技术。没有下标或后缀的数字援引被理解为援引对应于所援引数字的下标和后缀的所有实例。此外,本公开中所使用的语言已主要被选择用于可读性和指导性目的,并且可能没有被选择为划定或限定本专利技术的主题,从而诉诸于所必需的权利要求以确定此类专利技术主题。在说明书中提到“一个实施方案”或“实施方案”意指在本专利技术的至少一个实施方案中包括的结合该实施方案描述的特定特征、结构或特性,并且多次提到“一个实施方案”或“实施方案”不应被理解为全部必然地参考相同的实施方案。尽管以下描述中的一些是结合特定框架的实施来撰写的,但本文描述的技术不受此限制。具体地讲,一些实施方案可以使用编程语言扩展,这些扩展允许开发者控制在CPU或GPU上执行的内核和着色器使用的低层级数据结构而不需要高层级API的开销和性能惩罚。现在参考图1,示出了根据一个实施方案的计算系统100的框图。计算系统100包括CPU110、GPU130。在图1所示的实施方案中,CPU110和GPU130包括在独立的集成电路(IC)或封装件上。然而,在其他实施方案中,CPU110和GPU130或它们的功能集合可以被包括在单个IC或封装件中。此外,计算系统100还包括可以由CPU110和GPU130访问的系统存储器140。在各种实施方案中,计算系统100可以包括超级计算机、台式计算机、膝上型电脑、视频游戏机、嵌入式设备、手持设备(例如移动电话、智能电话、MP3播放器、相机、GPS设备或其他移动设备)或包括或被配置为包括GPU的任何其他设备。尽管图本文档来自技高网...
【技术保护点】
一种其上存储有指令的机器可读介质,其包括的指令在被执行时使得机器:接收预先编译的库,其中所述预先编译的库在被接收之前已经从源代码被编译成中间表示;将所述预先编译的库从中间表示文件编译成二进制文件,所述二进制文件包括能够由目标处理器直接执行的一个或多个内核或着色器;响应于检测到针对所述二进制文件的内核或着色器的请求,打开所述二进制文件并从所述二进制文件检索所述内核或着色器;以及向所述目标处理器提供所述内核或着色器以用于执行,其中所述中间表示文件包含符合中间表示语言模型的指令,其中所述中间表示语言模型与所述目标处理器和所述源代码的源语言无关,并且其中所述中间表示语言模型包含用于执行并行图形操作的函数和用于执行并行非图形操作的函数。
【技术特征摘要】
【国外来华专利技术】2014.05.30 US 62/005,632;2014.09.30 US 14/501,8731.一种其上存储有指令的机器可读介质,其包括的指令在被执行时使得机器:接收预先编译的库,其中所述预先编译的库在被接收之前已经从源代码被编译成中间表示;将所述预先编译的库从中间表示文件编译成二进制文件,所述二进制文件包括能够由目标处理器直接执行的一个或多个内核或着色器;响应于检测到针对所述二进制文件的内核或着色器的请求,打开所述二进制文件并从所述二进制文件检索所述内核或着色器;以及向所述目标处理器提供所述内核或着色器以用于执行,其中所述中间表示文件包含符合中间表示语言模型的指令,其中所述中间表示语言模型与所述目标处理器和所述源代码的源语言无关,并且其中所述中间表示语言模型包含用于执行并行图形操作的函数和用于执行并行非图形操作的函数。2.根据权利要求1所述的机器可读介质,其中所述目标处理器是图形处理单元。3.根据权利要求1所述的机器可读介质,其中在检测针对所述二进制文件的内核或着色器的请求之前,所述中间表示文件被编译成二进制文件。4.根据权利要求1所述的机器可读介质,其中所述中间表示文件不能够由所述目标处理器直接执行。5.根据权利要求1所述的机器可读介质,其中所述中间表示文件是加密的中间表示文件,并且其中所述指令还包括在被执行时使得所述机器在将所述中间表示文件编译成二进制文件之前将所述加密的中间表示文件解密的指令。6.根据权利要求1所述的机器可读介质,其中所述中间表示语言模型的用于执行并行图形操作的函数包括用于对纹理执行并行操作的函数。7.一种其上存储有指令的机器可读介质,其包括的指令在被执行时使得机器:接收源代码文件,所述源代码文件包括以编程语言编写的程序;以及将所述源代码文件编译成包含中间表示的指令的中间表示文件,所述中间表示与所述编程语言无关并且与目标设备无关,所述中间表示符合中间表示语言模型,所述中间表示语言模型包含用于执行并行图形操作和用于执行并行通用计算操作的函数。8.根据权利要求7所述的机器可读介质,其中所述指令还包括在被执行时使得所述机器执行以下操作的指令...
【专利技术属性】
技术研发人员:A·穆恩史,R·U·乔什,M·P·王,K·C·崔,
申请(专利权)人:苹果公司,
类型:发明
国别省市:美国;US
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。