异构并行处理平台的软件库制造技术

技术编号:10371252 阅读:123 留言:0更新日期:2014-08-28 13:29
用于在OpenCL框架中提供库的系统、方法和媒体。库源代码被编译成中间表示并被分配给最终用户计算系统。所述计算系统通常包括CPU和一个或多个GPU。所述CPU把所述库的所述中间表示编译成针对在所述GPU上运行的可执行的二进制。所述CPU执行主机应用程序,所述主机应用程序从所述二进制调用内核。所述CPU从所述二进制检索所述内核并把所述内核传送到GPU进行执行。

【技术实现步骤摘要】
【国外来华专利技术】异构并行处理平台的软件库背景专利
本专利技术一般涉及计算机和软件,且具体涉及各种不同并行硬件平台的抽象的软件库。相关领域的描述计算机和其它数据处理设备通常具有一般被称为中央处理单元(CPU)的至少一个控制处理器。所述计算机和设备也可具有其它处理器,例如用于各种类型的专门处理的图形处理单元(GPU)。例如,在第一组的应用程序中,GPU可被设计以执行图形处理操作。GPU通常包括能够对并行数据流执行同一指令的多个处理元件。通常,CPU充当主机且可把专门的并行任务交接到其它处理器,例如GPU。已开发了用于异构计算平台的若干框架,其具有CPU和GPU。这些框架包括斯坦福大学的BrookGPU、NVIDIA的CUDA,和称为科纳斯组织的行业联盟的OpenCL?。OpenCL框架提供类似C语言的开发环境,其中用户可创建应用程序以在各种不同类型的CPU、GPU、数字信号处理器(DSP),和其它处理器上运行。OpenCL也提供编译器和运行时环境,其中代码可被在异构计算系统中编译并执行。当使用OpenCL时,开发人员可使用单一、统一的工具链和语言来针对目前使用的所有处理器。这是通过向开发人员提供抽象平台模型以及执行模型来完成的,所述抽象平台模型以类似的方式概念化所有这些架构,所述执行模型支持异构架构上的数据和任务并行。OpenCL允许任何应用程序利用许多计算平台中包括的之前只可用于图形应用程序的巨大的GPU计算能力。使用OpenCL,有可能编写将运行供应商已为其提供了 OpenCL驱动程序的任何GPU的程序。当执行OpenCL程序时,一系列API调用配置系统进行执行,嵌入式即时(JIT)编译器编译OpenCL代码,且运行时异步协调并行内核之间的执行。任务可被从主机(例如,CPU)卸载到同一系统中的加速器设备(例如,GPU)。典型的基于OpenCL的系统可使用源代码并通过JIT编译器来运行源代码,以生成目标GPU的可执行代码。然后,可执行代码或可执行代码的部分被发送到目标GPU并被执行。然而,这种方法可能需要很长时间且其暴露了 OpenCL源代码。因此,本领域中需要用于在OpenCL运行时环境中向应用程序提供软件库而不会暴露用以生成库的源代码的基于OpenCL的方法。实施方案概要在一个实施方案中,源代码和源库可能经过从高级软件语言到指令集架构(ISA)二进制的若干编译阶段,所述指令集架构二进制包含可在特定的目标硬件上执行的内核。在一个实施方案中,源代码和库的高级软件语言可为开放计算语言(OpenCL)。每个源库可包括多个内核,所述内核可被从在CPU上执行的软件应用程序调用且可被传送到GPU以实际执行。库源代码可在被传送到最终用户计算系统之前被编译成中间表示。在一个实施方案中,中间表示可为低级虚拟机(LLVM)中间表示。中间表示可被提供到最终用户计算系统作为软件安装包的一部分。安装时,LLVM文件可被编译以用于给定最终用户计算系统的特定的目标硬件。给定计算系统中的CPU或其它主机设备可编译LLVM文件来生成在系统中用于例如GPU的硬件目标的ISA 二进制。在运行时,ISA 二进制可通过软件开发工具包(SDK)打开,SDK可检查安装是否正确并可从ISA 二进制检索一个或多个特定的内核。内核然后可被存储在存储器中,且执行的应用程序可通过OpenCL运行时环境把每个内核传递到GPU进行执行。本领域技术人员鉴于本文提供的方法的以下详细描述将显而易见这些和其它特征和优势。附图简述可通过结合附图参考以下描述来更好地理解方法和机制的上述和另外的优势,其中:图1是根据一个或多个实施方案的计算系统的框图。图2是根据一个或多个实施方案的分布式计算环境的框图。图3是根据一个或多个实施方案的OpenCL软件环境的框图。图4是根据一个或多个实施方案的加密库的框图。图5是另一计算系统的一部分的一个实施方案的框图。图6是示出用于在OpenCL环境中提供库的方法的一个实施方案的广义的流程图。详细描述在下文的描述中,阐述了许多具体细节以提供对本文提供的方法和机制的彻底理解。然而,本领域一般技术人员应认识到,可在没有这些具体细节的情况下实践各种实施方案。在一些实例中,并未详细示出众所周知的结构、组件、信号、计算机程序指令和技术,以免模糊本文中所描述的方法。应理解,为了说明的简单和清楚,在附图中示出的元件不一定按比例绘制。例如,一些元件的尺寸可能相对于其它元件被夸大。本说明书包括对“一个实施方案”的引用。短语“在一个实施方案中”在不同的上下文中出现并不一定是指相同的实施方案。特定的特征、结构或特性可用与本专利技术一致的任何合适的方式来组合。另外,如本申请通篇所使用,用语〃可〃用于宽松的意义(即,意指有可能),而非强制的意义(即,意指必须)。类似地,用语〃包括〃意指包括但不限于。术语。以下各段提供本公开(包括所附权利要求)中出现的术语的定义和/或上下文:“包括”。这个术语是开放式的。如所附权利要求中所使用,这个术语并不排除额外的结构或步骤。考虑引用:“一种系统,其包括主机处理器……”的权利要求。所述权利要求不排除系统包括额外的组件(例如,网络接口、存储器)。 “被配置以”。各种单元、电路或其它组件可被描述或主张为“被配置以”执行一个或多个任务。在所述上下文中,“被配置以”用以通过指示单元/电路/组件包括在操作过程中执行一个或多个任务的结构(例如,电路)来意指结构。因此,单元/电路/组件可被称为被配置以即使当指定单元/电路/组件当前未操作(例如,未打开)时也执行任务。与“被配置以”语言连用的单元/电路/组件包括硬件,例如,电路、存储可执行以实施操作的程序指令的存储器等。引用单元/电路/组件“被配置以”执行一个或多个任务明确不打算为所述单元/电路/组件调用35 U.S.C.§112第六段。此外,“被配置以”可包括由软件和/或固件(例如,FPGA或执行软件的通用处理器)操纵来以能够执行待解决的任务的方式操作的通用的结构(例如,通用的电路)。“被配置以”也可包括使制造工艺(例如,半导体制造设施)适于制造适于实施或执行一个或多个任务的设备(例如,集成电路)。“第一”、“第二”等。如本文所使用,这些术语被用作它们后面名词的标签,且并不暗示任何类型的排序(例如,空间、时间、逻辑),除非另有明确定义。例如,在具有四个GPU的系统中,术语“第一”和“第二” GPU可用以代表四个GPU中的任何两个。“基于”。如本文所使用,这个术语用以描述影响决定的一个或多个因素。这个术语不排除可能影响决定的额外的因素。即,决定可仅基于这些因素或至少部分基于这些因素。考虑短语“基于B来确定A”。而B可能是影响A的决定的因素,但是所述短语不排除A的决定也基于C。在其它实例中,可仅基于B来确定A。现在参考图1,示出根据一个实施方案的计算系统100的框图。计算系统100包括CPU 102,GPU 106,且可能可选地包括协同处理器108。在图1示出的实施方案中,CPU 102和GPU 106被包括在单独的集成电路(IC)或包中。然而,在其它实施方案中,CPU 102和GPU106或其集体功能可被包括在单个IC或包中。在一个实施方案中,GPU 106可具有支持执行数据-并行应用程序的并行架构。另外,本文档来自技高网...

【技术保护点】
一种系统,其包括:主机处理器;和目标处理器,所述目标处理器被耦接到所述主机处理器;其中所述主机处理器被配置以:接收预编译库,其中所述预编译库在被所述主机处理器接收之前被从源代码编译成第一中间表示;把所述预编译库从所述第一中间表示编译成二进制,其中所述二进制包括所述目标处理器可执行的一个或多个内核;和把所述二进制存储在存储器中;其中响应于检测到所述二进制的给定内核的请求,提供所述内核以供所述目标处理器执行。

【技术特征摘要】
【国外来华专利技术】2011.12.01 US 13/309,2031.一种系统,其包括: 主机处理器;和 目标处理器,所述目标处理器被耦接到所述主机处理器; 其中所述主机处理器被配置以: 接收预编译库,其中所述预编译库在被所述主机处理器接收之前被从源代码编译成第一中间表不; 把所述预编译库从所述第一中间表示编译成二进制,其中所述二进制包括所述目标处理器可执行的一个或多个内核;和把所述二进制存储在存储器中; 其中响应于检测到所述二进制的给定内核的请求,提供所述内核以供所述目标处理器执行。2.如权利要求1所述的系统,其中提供所述内核以供所述目标处理器执行包括:所述目标处理器从存储位置检索所述内核或者所述主机处理器把所述内核传送到所述目标处理器。3.如权利要求1所述的系统,其中所述主机处理器操作开放计算语言(OpenCL)运行时环境,其中打开所述二进制包括把对应于所述二进制的主索引表加载到所述主机处理器的存储器,且其中从所述二进制检索所述给定内核包括在所述主索引表中查找所述给定内核以确定所述给定内核在所述二进制中的位置。4.如权利要求1所述的系统,其中所述主机处理器是中央处理单元(CPU),所述目标处理器是图形处理单元(GPU),且其中所述GPU包括多个处理元件。5.如权利要求1所述的系统,其中所述源代码以开放计算语言(OpenCL)编写。6.如权利要求1所述的系统,其中把所述预编译库从第一中间表示编译成二进制包括:把所述第一中间表示编译成第二中间表示,然后把所述第二中间表示编译成所述二进制。7.如权利要求1所述的系统,其中所述预编译库的所述第一中间表示被加密,且其中所述主机处理器被配置以在把所述第一中间表示编译成二进制之前解密所述第一中间表/Jn ο8.如权利要求1所述的系统,其中所述第一中间表示是低级虚拟机(LLVM)中间表示。9.一种方法,其包括: 把库的中间表示编译成二进制,其中所述二进制针对特定的目标处理器; 响应于检测到所述内核的请求,从所述二进制检索内核;和 在所述特定的目标处理器上执行所述内核。1...

【专利技术属性】
技术研发人员:迈克尔·L·施密特拉达·基都瑟里
申请(专利权)人:超威半导体公司
类型:发明
国别省市:美国;US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1