CN101836188A - 基于服务器的代码编译 - Google Patents
基于服务器的代码编译 Download PDFInfo
- Publication number
- CN101836188A CN101836188A CN200880113180A CN200880113180A CN101836188A CN 101836188 A CN101836188 A CN 101836188A CN 200880113180 A CN200880113180 A CN 200880113180A CN 200880113180 A CN200880113180 A CN 200880113180A CN 101836188 A CN101836188 A CN 101836188A
- Authority
- CN
- China
- Prior art keywords
- code
- server
- compiling
- compiler
- compile
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000004891 communication Methods 0.000 claims abstract description 28
- 238000012545 processing Methods 0.000 claims description 67
- 238000000034 method Methods 0.000 claims description 66
- 230000004044 response Effects 0.000 claims description 30
- 238000004364 calculation method Methods 0.000 claims description 19
- 238000009434 installation Methods 0.000 claims description 13
- 230000015654 memory Effects 0.000 claims description 10
- 238000011156 evaluation Methods 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 16
- 230000008569 process Effects 0.000 description 13
- 230000001413 cellular effect Effects 0.000 description 10
- 230000000694 effects Effects 0.000 description 9
- 230000008901 benefit Effects 0.000 description 6
- 230000000712 assembly Effects 0.000 description 5
- 238000000429 assembly Methods 0.000 description 5
- 230000008520 organization Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004040 coloring Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000003384 imaging method Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- PWPJGUXAGUPAHP-UHFFFAOYSA-N lufenuron Chemical compound C1=C(Cl)C(OC(F)(F)C(C(F)(F)F)F)=CC(Cl)=C1NC(=O)NC(=O)C1=C(F)C=CC=C1F PWPJGUXAGUPAHP-UHFFFAOYSA-N 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明揭示一种服务器,其包含到数据通信网络的接口、存储多个不同编译器的编译器库,以及响应所述接口处所接收到的数据且包含逻辑的编译器选择逻辑。所述编译器选择逻辑经配置以基于对所述所接收到的数据的评估来选择所述多个不同编译器中的一个编译器。所述选定编译器产生经编译的输出数据,且所述经编译的输出数据经由所述数据通信网络被传送到客户机。
Description
技术领域
本发明大体上涉及基于服务器的代码编译的系统和方法。
背景技术
技术进步已产生更小且更强大的个人计算装置。举例来说,当前存在多种便携式个人计算装置,包含无线计算装置,例如便携式无线电话、个人数字助理(PDA)和寻呼装置,其体积小、重量轻且易于由用户携带。更具体地说,便携式无线电话(例如蜂窝式电话和因特网协议(IP)电话)可经由无线网络传送语音和数据包。此外,许多此类无线电话包含并入其中的其它类型的装置。举例来说,无线电话还可包含便携式游戏控制台、数字静态相机、数字视频相机、数字记录器和音频文件播放器。而且,此类无线电话可包含可用于接入因特网的应用程序,例如万维网浏览器应用程序。由此,这些无线电话包含相当大的计算能力。
通常,随着这些装置变得更小且更强大,这些装置变得越来越受资源约束。举例来说,屏幕大小、可用存储器和文件系统空间的量,以及输入和输出能力的量可能受装置的小尺寸限制。此外,电池大小、电池所提供的电力的量以及电池寿命也可能受限制。
另外,便携式装置上的计算资源是有限的。举例来说,蜂窝式电话上的处理器能力受大小和功率消耗约束限制。由此,涉及软件从源代码到目标代码的转换的程序的编译通常不在此些便携式装置上执行。然而,由于便携式装置具有不同的处理器和执行平台,因此每一类型的具有不同平台的装置的编译需要是不同的。此平台变化为应用程序开发者带来复杂性和增加的成本,应用程序开发者宁愿开发用于单个目标执行环境的软件应用程序,而不愿创建不同版本的应用程序来适应多个平台。另外,随着具有增加的功能性(例如,视频和多媒体应用处理能力)的各种便携式装置的激增,与用于不同目标平台的应用程序有关的问题已变得更显著。
因此,提供经改进的编译系统和方法将是有利的。
发明内容
本发明揭示一种基于服务器的编译方法和一种用于实施所述方法的服务器。所述基于服务器的编译方法包含在具有多个编译器的服务器处接收代码编译请求。所述方法还包含:将代码编译请求中的信息与存储在服务器处的所述多个编译器的列表进行比较,以确定服务器是否具有适合编译与所述代码编译请求相关联的源代码的编译器;以及经由网络将对所述代码编译请求的响应从服务器传送到客户机。所述响应包含对代码编译请求的接受或拒绝的指示。当所述响应包含对代码编译请求的接受的指示时,所述方法包含:在服务器处接收待编译的源代码;使用适合编译源代码以产生经编译的代码的选定编译器来编译在服务器处接收到的源代码;以及经由网络将经编译的代码从服务器传送到客户机。
在特定实施例中,服务器包含与数据通信网络的接口、存储多个不同编译器的编译器库,以及响应所述接口处所接收到的数据的编译器选择逻辑。编译器选择逻辑包含用以基于对所接收到的数据的评估来选择所述多个不同编译器中的一者的逻辑。选定的编译器用于产生经编译的输出数据,且所述经编译的输出数据经由数据通信网络传送到客户机。
在又一实施例中,揭示一种向客户机请求基于服务器的代码编译的方法。所述方法包含:将代码编译请求发送到具有多个编译器的服务器;从服务器接收对代码编译请求的响应,所述响应指示代码编译请求的接受或拒绝;在检测到代码编译请求的接受后,将源代码发送到服务器,所述源代码将在服务器处被编译;在服务器已编译所述源代码之后,接收来自所述服务器的经编译的代码。
在又一实施例中,揭示一种计算装置。所述计算装置包含处理器、可由所述处理器存取的存储器,以及通信接口。所述通信接口经配置以将代码编译请求发送到具有多个编译器的服务器,且从所述服务器接收对所述代码编译请求的响应。所述响应指示代码编译请求的接受或拒绝。通信接口进一步经配置以将源代码发送到服务器,以在服务器处编译,且接收来自所述服务器的经编译的代码。
本文中所揭示的实施例中的一者或一者以上的优点可包含:通过将软件应用程序代码的编译移位到可具有较大处理资源的服务器来保存装置资源。本文中所揭示的一个或一个以上实施例的另一优点可包含基于与应用处理单元的兼容性而分配用于在应用处理单元(例如,客户机装置的图形处理单元、视频处理单元或相机图像处理单元)处执行的软件,而不需要软件的用户交互或用户选择。
所述一个或一个以上实施例的另一特定优点可包含:通过允许应用程序开发者将经寻址的代码写入到所要平台,且通过提供可响应于接收到来自便携式装置的请求而编译到达一个或一个以上特定装置平台的代码的基于服务器的代码编译系统,来简化软件编码过程。以此方式,写入到单个平台的代码可经编译以供在于不同平台上操作的多个装置上使用,而不为软件开发者增加复杂性,且不消耗便携式装置处的处理资源。
在审阅整个申请案之后,将明白本发明的其它方面、优点和特征,整个申请案包含以下部分:附图说明、具体实施方式和权利要求书。
附图说明
通过参考结合附图进行的以下详细描述,本文所描述的实施例的方面和优点将变得更显而易见,其中:
图1是包含用以执行基于服务器的编译的服务器的示范性系统的框图;
图2是利用基于服务器的编译的系统的实施例的框图;
图3是利用基于服务器的编译的系统的另一实施例的框图;
图4是利用基于服务器的编译的系统的另一实施例的框图;
图5是并入有用以执行经服务器编译的代码的处理器的便携式通信装置的框图;
图6是并入有用以执行经服务器编译的代码的处理器的示范性蜂窝式电话的框图;
图7是执行基于服务器的编译的方法的特定说明性实施例的流程图;
图8是执行基于服务器的编译的方法的第二特定说明性实施例的流程图;以及
图9是客户机请求的编译的方法的特定说明性实施例的流程图。
具体实施方式
图1说明包含用以执行基于服务器的编译的服务器的示范性系统的框图。系统100包含代表性的客户机102、104,数据网络106和服务器120。服务器120包含网络接口130、编译器选择逻辑140、所支持且所存储的编译器的列表142,以及包含多个编译器150、152、154的编译器库。所述多个编译器150、152和154耦合到网络接口130,且耦合到编译器选择逻辑140。网络接口130耦合到数据通信网络106。数据通信网络106可为因特网协议网络,且可为有线数据网络或无线数据网络。一般来说,编译器150、152和154适合于将字节代码、符号代码或高级符号语言翻译成特定处理器可理解和执行的等效处理器可读指令。在特定实施例中,经编译的结果可为中间表示语言代码或字节代码,例如,X86型处理器的汇编代码。中间表示对于许多平台或处理单元来说可以是灵活且便携的。可将中间表示语言代码用作到达特定平台或处理单元的另一(较低)级编译器的输入。存储在服务器120处的编译器中的每一者(例如,所说明的编译器150、152和154)为用于为不同处理器编译代码的不同编译器。举例来说,第一客户机102和第二客户机104可具有利用不同执行平台的不同处理器。服务器120适合于接收编译请求、从可用的编译器150、152和154选择适当的编译器,且使用对与第一客户机102相关联的特定处理器来说适当的选定编译器来编译用于请求装置(例如,第一客户机102)的代码。
编译器选择逻辑140响应在网络接口130处接收到的数据(例如,从客户机102、104中的一者接收到的代码编译请求110)。编译器选择逻辑140包含用以基于对所接收到的数据的评估(例如,对代码编译请求消息110中所传送的信息的评估)来选择多个不同编译器150、152或154中的一者的逻辑。在特定实施例中,可将编译器选择逻辑140实施为逻辑电路。在操作期间,编译器选择逻辑140确定来自编译器库的选定编译器(例如,编译器150),且将消息传送到请求客户机(例如,第一客户机102)。到达请求客户机的消息指示对代码编译请求消息110的接受或拒绝。
当合适的编译器在服务器120处可用时,服务器120传送对代码编译请求消息110的接受。作为响应,请求客户机102或104可将待编译的源代码发送到服务器120,且服务器120处的编译器选择逻辑140将接收到的源代码路由到选定编译器150、152或154。选定编译器150、152或154编译所述源代码,并产生经编译的代码112。经编译的代码112(也称为目标代码)经由网络接口130和网络106传送到请求客户机102或104。
在特定实施例中,请求客户机102或104可为个人计算机、便携式计算机、手持式计算装置,例如无线电话、个人数字助理、媒体重放装置或类似装置。请求客户机装置可包含目标应用处理单元(例如图形处理单元(GPU)),以执行从服务器120发送的经编译的代码。请求客户机102或104还可为软件应用程序、驱动程序、安装程序、其它处理器可执行指令或其任何组合。代码编译请求110可包含关于目标应用处理单元的信息,使得服务器120可选择适当的编译器。在特定实施例中,信息包含源代码语言名称、源代码语言版本、处理单元名称、处理单元版本或其任何组合。
在无线应用中,服务器120可安置在无线通信网路的无线基站内或与无线通信网路的无线基站位于同一地点。在另一特定实施例中,服务器120可与无线通信网路的无线基站通信。在服务器120包含用于各种GPU平台的着色器编译器(shader compiler)的应用中,待传输的典型源代码文件大小或经编译文件大小可较小,例如小于2,000个字节。因此,源代码经由无线通信网路的传输、在服务器120处的编译以及由请求客户机102或104的接收可发生在运行时间,而不引入不可接受的延迟。
在特定实施例中,客户机102或104可包含通用中央处理单元(CPU)、数字信号处理器(DSP)一个或一个以上应用处理单元或其任何组合。应用处理单元可包含图形处理单元、视频处理单元、相机图像处理单元、其它应用处理单元或其任何组合。应用程序可包含多个层,例如具有基于一个或一个以上应用编程接口(例如,Open 等)的代码的应用层、在编程接口下的驱动程序层,以及可在一个或一个以上专用应用处理单元上、在DSP上或在CPU上执行的应用处理层。在特定实施例中,根据特定配置,应用处理层的一些组件可在专用应用处理单元上执行,其它组件可在DSP上执行,且另外其它组件可在CPU上执行。在特定实施例中,例如在客户机102或104的CPU上运行的安装程序、应用程序或驱动程序等客户程序可向服务器120发出针对用于单个应用程序的不同组件的不同编译请求。举例来说,客户机102或104可产生:针对一些组件将代码编译成CPU可执行代码的请求、针对其它组件将源代码编译成DSP可执行代码的请求,以及针对特定组件将源代码编译成可由专用处理单元执行的机器代码的请求。客户机可分配从服务器120接收到的经编译的代码,以供在对应的应用处理单元、DSP、CPU或其任何组合上执行。在特定实施例中,当此些应用处理单元并非专用且不可有效地配置于客户机装置中时,CPU或DSP可起到一个或一个以上应用处理单元的作用。
在特定实施例中,服务器120可接收着色语言源代码,且可编译所述源代码以供在GPU处执行。在其它实施例中,服务器120可适合于编译用于其它处理平台的其它类型的源代码。举例来说,服务器120可编译以C或另一编程语言写就的数字信号处理器(DSP)代码,且可输出DSP可执行代码。作为另一实例,在计算任务中的至少一部分被从GPU移到DSP的情况下,服务器120可接收着色语言代码,且可输出DSP可执行代码。作为另一实例,服务器120可接收着色语言代码,且可输出高级精简指令集计算(RISC)机器(例如,ARM)代码。在另一实例中,服务器120可接收C语言源代码,且可输出GPU可执行代码,例如用于GPU处的通用计算。举例来说,GPU可用于执行从CPU或DSP移到GPU的通用音频或视频处理。根据特定的硬件配置,其它实施例可包含接收C代码且输出CPU可执行代码或DSP可执行代码的服务器120。
图2说明利用基于服务器的编译的系统200的实施例的框图。系统200包含经由网络206与服务器204通信的客户机装置202。在特定实施例中,网络206可包含无线网络、有线网络或其任何组合。客户机装置202包含可用于将数据组织在客户机装置202的存储器(未图示)处的目录和文件中的文件系统208。客户机装置202还包含一个或一个以上应用程序210、一驱动程序212和一应用处理单元214。在特定实施例中,应用处理单元214可包含图形处理单元(GPU)、视频处理器、相机或成像处理器、音频处理器、另一专用处理器或其任何组合。在特定实施例中,客户机装置202可包含CPU(未图示)、DSP(未图示)或其任何组合。CPU、DSP和应用处理单元214可以存取存储器、应用程序210和驱动程序212。CPU可执行应用程序210,以经由网络206而与服务器204通信。服务器204包含前端216、第一编译器218和第二编译器220。前端216可包含编译器选择逻辑,例如图1中所说明的编译器选择逻辑140。
在特定说明性实施例中,客户机装置202可执行一个或一个以上应用程序210中的至少一者,以经由文件系统208检索存储在存储器中的源代码或中间表示字节代码。例如中央处理单元(CPU)等处理器可执行所述一个或一个以上应用程序210,且可产生与源代码有关的代码编译请求。所述代码编译请求可包含代码语言识别符(例如,着色器编程语言名称(例如,OpenGL着色语言(GLSL)、高级着色语言(HLSL)、Gg等)、高级编程语言名称(例如,C++)或其它编程语言识别符)、版本识别符、目标名称(例如,GPU名称或CPU名称)、目标版本、所支持的二进制代码名称以及版本识别符。客户机装置202尝试建立经由网络206到服务器204的连接。如果所述连接被建立,那么客户机装置202可经由网络206将代码编译请求发送到服务器204,以确定服务器204是否有能力编译所述代码。客户机装置202接收来自服务器204的响应。所述响应可为指示服务器204可编译所述代码的接受。或者,所述响应可包含请求的拒绝。如果响应指示服务器204接受,那么客户机装置202经由网络206将代码发送到服务器204,且等待经编译的结果。当客户机装置202接收到经编译的结果时,客户机装置202可执行所述经编译的结果。
在特定实例中,在客户机装置202(即,客户机)处执行的特定应用程序210可起始与服务器204的通信。举例来说,在执行中的特定点处,应用程序210可能需要执行源代码或中间表示字节代码。应用程序210可向服务器204起始对编译所述代码的请求。响应于接收到指示接受的响应,应用程序210可将代码发送到服务器204以供编译。应用程序210可接收经编译的代码。在应用程序210接收到经编译的结果之后,应用程序210将结果存储在本机文件系统208处(即,在存储器处),将经编译的结果提供给驱动程序212、将经编译的结果提供给应用处理单元214,或其任何组合。在特定说明性实施例中,应用程序210可检查经编译的结果,并在下次执行应用程序210时加载所述经编译的结果。在另一特定说明性实施例中,应用程序210可暂停执行,请求编译运行中的代码,接收经编译的代码,且使用所述经编译的代码来恢复执行。在又一特定说明性实施例中,客户机可向服务器204请求特定应用程序(服务器204根据所述请求来编译所请求的应用程序),且向客户机提供经编译的代码以供存储、执行或其任何组合。
图3说明利用基于服务器的编译的系统300的另一特定实施例的框图。系统300包含经由网络306与服务器304通信的客户机装置302。在特定实施例中,网络306可包含无线网络、有线网络或其任何组合。客户机装置302包含可用于将数据组织在客户机装置302的存储器(未图示)处的目录和文件中的文件系统308。客户机装置302还包含一个或一个以上应用程序310、一驱动程序312、一应用处理单元314和一安装程序(下载程序)316。在特定实施例中,应用处理单元314可包含图形处理单元(GPU)、视频处理单元、相机或图像处理单元、音频处理单元、另一专用处理单元或其任何组合。在特定实施例中,客户机装置302可包含CPU(未图示)、DSP(未图示)或其任何组合。在特定说明性实施例中,CPU、DSP和应用处理单元314中的每一者可以存取存储器、所述一个或一个以上应用程序310和驱动程序312,且CPU执行所述一个或一个以上应用程序310中的至少一者。在特定实施例中,安装程序316可为可执行以经由网络306与服务器304通信以下载经编译的代码的软件应用程序。服务器304包含前端318、第一编译器320和第二编译器322。前端318可包含编译器选择逻辑,例如图1中所说明的编译器选择逻辑140。
在特定说明性实施例中,安装程序316可起始与服务器304的通信。当安装软件时,安装程序316代表所述一个或一个以上应用程序310中的一应用程序收集数据,且将对编译服务的请求发送到服务器304。安装程序316接收来自服务器304的经编译的代码,且将所述经编译的代码存储在本机文件系统308处。所述一个或一个以上应用程序310中的一者可从本机文件系统308读取经编译的(二进制)代码和格式,且可将经编译的代码直接发送到驱动程序312。在另一特定实施例中,当从另一服务器(未图示)下载应用程序时,安装程序(下载程序)316可指示从中下载应用程序的服务器将编译请求发送到服务器304、将经编译的代码直接发送到客户机装置302。在另一特定实施例中,当从应用服务器(未图示)下载应用程序时,安装程序(下载程序)316可将编译信息提供给应用服务器,且应用服务器可将编译请求发送到服务器304。服务器304可将经编译的二进制代码传回到应用服务器,应用服务器可将应用程序和二进制代码打包在一起,以发送到客户机装置302。通过经由应用服务器将请求路由到服务器304,编译和安装可对客户机装置302透明。
在特定实施例中,客户机装置302可为在线游戏装置,且在应用程序正在客户机装置处运行且相对于玩家交互而推进的同时,可发生应用程序下载。当正被下载的应用程序的对应程序部分需要从源代码编译成可由客户机装置302处的一个或一个以上处理单元执行的机器代码时,下载可能经由网络306要求服务器304的编译服务。在此情况下,下载服务器或应用服务器可直接向服务器304起始编译请求,且在应用服务器处接收来自服务器304的经编译的代码。应用服务器可将经编译的代码发送到客户机装置302以供执行。从应用服务器下载的经编译的代码可连同应用程序可能需要的相关联的其它应用程序代码和数据或文件一起下载以供执行。在特定说明性实施例中,服务器304允许软件开发者编码特定应用程序,而无需关注所述应用程序将在上面执行的平台,因为服务器304经配置以确定请求客户机的平台,且选择适合将源代码编译成可由与请求客户机相关联的平台执行的目标代码的编译器。
图4说明利用基于服务器的编译的系统400的另一特定实施例的框图。系统400包含经由网络406与服务器404通信的客户机装置402。在特定实施例中,网络406可包含无线网络、有线网络或其任何组合。客户机装置402包含可用于将数据组织在客户机装置402的存储器(未图示)处的目录和文件中的文件系统408。客户机装置402还包含一个或一个以上应用程序410、一驱动程序412和一应用处理单元414。在特定实施例中,应用处理单元414可包含图形处理单元(GPU)、视频处理器、相机或成像处理器、音频处理器、另一专用处理器或其任何组合。在特定实施例中,客户机装置402可包含CPU(未图示)、DSP(未图示)或其任何组合。当一个或一个以上应用处理单元并非专用且不可有效地配置于客户机装置中时,CPU或DSP可执行所述应用处理单元的功能。在特定说明性实施例中,CPU、DSP和应用处理单元414可以存取存储器、所述一个或一个以上应用程序410和驱动程序412。在特定实施例中,驱动程序412可为可执行以经由网络406与服务器404通信以请求源代码编译、下载经编译的代码或其任何组合的软件应用程序。服务器404包含前端416、第一编译器418和第二编译器420。前端416可包含编译器选择逻辑,例如图1中所说明的编译器选择逻辑140。
在特定说明性实施例中,当应用程序410请求经编译的源代码时,驱动程序412起始与服务器404的通信。服务器404可为经配置以编译着色器程序以渲染图形效果且计算与图形元素相关联的色彩的着色器编译服务器。
在特定说明性实施例中,驱动程序412可接收来自服务器404的经编译的代码,且可使所述经编译的代码受到应用程序410的作用。应用程序410可读取经编译的结果,并将所述经编译的结果存储在本机文件系统408中。应用程序410接着可在应用程序410的后续执行期间,加载来自本机文件系统408的经编译的代码。在说明性实施例中,可仅在应用程序410在客户机装置402处的第一次执行期间,在服务器404处编译源代码。
在另一特定说明性实施例中,驱动程序412可不使经编译的代码受到应用程序410的作用。每当应用程序410被执行时,应用程序410可向驱动程序412请求源代码的编译。应用程序410可在运行时间请求经编译的代码,仿佛驱动程序适合于执行运行时间编译,而应用程序410无需了解服务器404。在特定说明性实施例中,驱动程序412可将编译请求直接发送到运行中的服务器404,且可按需要高速缓存经编译的代码。服务器404因此可起到驱动程序412的扩展的作用。在等待接收来自服务器404的经编译的代码的同时,驱动程序412可继续执行可与编译并行执行的操作。
在特定实施例中,应用处理单元414可包含GPU,其在等待来自服务器404的经编译的代码的同时,加载顶点和纹理着色数据。可实现此实施方案所提供的一个特定优点,因为通过使用驱动程序412来透明地向服务器404请求和从服务器404接收经编译的代码,与循序地执行顶点/纹理数据的编译和加载的系统相比,可改进用于应用程序410的图形的加载速度。另外,例如当游戏等级推进时,服务器404可用于提供按需编译。客户机装置402可仅针对特定游戏等级或特定细节,经由网络406将编译请求发送到服务器404。因此,可节省时间和存储。
图5说明概括标明为520的便携式通信装置的示范性非限制实施例。如图5中所说明,便携式通信装置包含芯片上系统522,所述芯片上系统522包含CPU(未图示)、数字信号处理器524和图形处理单元(GPU)526。在特定实施例中,CPU可经配置以起始与编译器服务器(例如,图1中所说明且本文中所描述的服务器120)的交互,以接收经编译的代码以供执行。图5还展示GPU 526耦合到数字信号处理器524和显示器528。输入装置530和存储器532也耦合到数字信号处理器524。另外,编码器/解码器(CODEC)534可耦合到数字信号处理器524。扬声器536和麦克风538可耦合到CODEC534。
图5还指示无线控制器540可耦合到数字信号处理器524和无线天线542。在特定实施例中,电源544耦合到芯片上系统522。此外,在特定实施例中,如图5中所说明,显示器528、输入装置530、扬声器536、麦克风538、无线天线542和电源544在芯片上系统522外部。然而,显示器528、输入装置530、扬声器536、麦克风538、无线天线542和电源544每一者均耦合到芯片上系统522的一组件。
在特定实施例中,数字信号处理器524利用经交错的多线程操作来处理与执行便携式通信装置520的各种组件所需的功能性和操作所必需的程序线程相关联的指令。举例来说,当经由无线天线建立无线通信会话时,用户可对着麦克风538说话。可将表示用户的语音的电子信号发送到CODEC 534以进行编码。数字信号处理器524可为CODEC534执行数据处理,以编码来自麦克风的电子信号。此外,可通过无线控制器540将经由无线天线542接收到的传入信号发送到CODEC 534,以进行解码且将其发送到扬声器536。数字信号处理器524还可在解码经由无线天线542接收到的信号时为CODEC 534执行数据处理。
此外,在无线通信会话之前、期间或之后,数字信号处理器524可处理从输入装置530接收到的输入。举例来说,在无线通信会话期间,用户可能正在使用输入装置530和显示器528,以经由嵌入便携式通信装置520的存储器532内的万维网浏览器在因特网上冲浪(surf)。数字信号处理器524可使如本文所描述的输入装置530、GPU 526、显示器528、CODEC 534和无线控制器540所使用的各种程序线程交错,以高效地控制便携式通信装置520和其中的各种组件的操作。在一个或一个以上时钟周期期间,同时执行与所述各种程序线程相关联的指令中的许多指令。由此,实质上减少因浪费的时钟周期而导致的功率和能量消耗。
参看图6,展示蜂窝式电话的示范性非限制实施例,且将其概括标明为620。如图所示,蜂窝式电话620包含芯片上系统622,芯片上系统622包含耦合在一起的数字基带处理器624和模拟基带处理器626。蜂窝式电话620还包含CPU(未图示)和图形处理单元(GPU)628。在特定说明性实施例中,CPU可经配置以起始与编译器服务器(例如图1中所说明且本文中所描述的服务器120)的交互,以接收经编译的代码以供执行。在特定实施例中,数字基带处理器624为数字信号处理器。如图6中所指示,GPU 628和触摸屏控制器630耦合到数字基带处理器624。又,在芯片上系统622外部的触摸屏显示器632耦合到GPU 628和触摸屏控制器630。
图6进一步指示视频编码器634(例如,逐行倒相(PAL)编码器、循序传送彩色与存储(sequential couleur a memoire,SECAM)编码器,或美国国家电视系统委员会(NTSC)编码器)耦合到数字基带处理器624。此外,视频放大器636耦合到视频编码器634和触摸屏显示器632。而且,视频端口638耦合到视频放大器636。如图6中所描绘,通用串行总线(USB)控制器640耦合到数字基带处理器624。而且,USB端口642耦合到USB控制器640。存储器644和订户识别模块(SIM)卡646也可耦合到数字基带处理器624。此外,如图6中所示,数字相机648可耦合到数字基带处理器624。在示范性实施例中,数字相机648为电荷耦合装置(CCD)相机或互补金属氧化物半导体(CMOS)相机。
如图6中进一步说明,立体声音频CODEC 650可耦合到模拟基带处理器626。此外,音频放大器652可耦合到立体声音频CODEC 650。在示范性实施例中,第一立体声扬声器654和第二立体声扬声器656耦合到音频放大器652。图6展示麦克风放大器658也可耦合到立体声音频CODEC 650。另外,麦克风660可耦合到麦克风放大器658。在特定实施例中,调频(FM)无线电调谐器662可耦合到立体声音频CODEC 650。而且,FM天线664耦合到FM无线电调谐器662。此外,立体声头戴式耳机666可耦合到立体声音频CODEC 650。
图6进一步指示射频(RF)收发器668可耦合到模拟基带处理器626。RF开关670可耦合到RF收发器668和RF天线672。如图6中所示,小键盘674可耦合到模拟基带处理器626。而且,具有麦克风的单声道头戴耳机676可耦合到模拟基带处理器626。此外,振动器装置678可耦合到模拟基带处理器626。图6还展示电源680可耦合到芯片上系统622。在特定实施例中,电源680为直流(DC)电源,其向蜂窝式电话620的需要电力的各个组件提供电力。此外,在特定实施例中,电源为可再充电DC电池或来源于连接到AC电源的交流(AC)到DC变换器的DC电源。
在特定实施例中,如图6中所描绘,触摸屏显示器632、视频端口638、USB端口642、相机648、第一立体声扬声器654、第二立体声扬声器656、麦克风、FM天线664、立体声头戴式耳机666、RF开关670、RF天线672、小键盘674、单声道头戴耳机676、振动器678和电源680在芯片上系统622的外部。此外,在特定实施例中,数字基带处理器624可使用本文所描述的经交错的多线程操作,以便处理与同蜂窝式电话620相关联的不同组件中的一者或一者以上相关联的各种程序线程。
在特定实施例中,蜂窝式电话620可经配置以经由网络向编译器服务器起始不同的编译请求,以针对在装置上运行的应用程序的不同程序组件请求不同的编译。举例来说,对于被指派为在GPU 628处执行的程序组件的计算任务,可在编译器服务器处选择着色器编译器。作为另一实例,对于被指派给视频CODEC、编码器或解码器(未图示)的程序组件的计算任务,可在编译器服务器处选择对应的视频编译器。作为又一实例,对于被指派给音频CODEC 650的程序组件的计算任务,可在编译器服务器处选择对应的音频编译器。作为又一实例,对于被指派为在DSP 624处执行的程序组件的计算任务,可在编译器服务器处选择DSP编译器。经编译的代码可在蜂窝式电话620处被接收,并被分配给一个或一个以上对应处理单元以供执行。
图7为说明执行基于服务器的编译的方法的特定说明性实施例的流程图。参看图7,基于服务器的编译方法包含:在具有多个编译器的服务器处接收代码编译请求(702处);以及将所述代码编译请求中的信息与存储在服务器处的所述多个编译器的列表进行比较,以确定服务器是否具有适合编译与所述代码编译请求相关联的源代码的编译器(704处)。所述方法进一步包含经由网络将对所述代码编译请求的响应从服务器传送到客户机,所述响应包含对代码编译请求的接受或拒绝的指示(706处)。
前进到决策节点708,当所述响应指示拒绝时,所述方法终止(716处)。返回708,当所述响应指示代码编译请求的接受时,所述方法继续进行到710,且包含在服务器处接收待编译的源代码。进行到712,所述方法还包含使用适合编译源代码的选定编译器来编译在服务器处接收到的源代码以产生经编译的代码。所述方法进一步包含经由网络将经编译的代码从服务器传送到客户机(714处)。所述方法结束(716处)。
图8是说明执行基于服务器的编译的方法的第二特定说明性实施例的流程图。在802处,所述方法包含在具有多个编译器的服务器处接收一个或一个以上代码编译请求。前进到804,与服务器相关联的逻辑从所述一个或一个以上代码编译请求中选择一代码编译请求。继续进行到806,所述逻辑将选定代码编译请求中的信息与存储在服务器处的所述多个编译器的列表进行比较,以确定服务器是否具有适合编译与所述选定代码编译请求相关联的源代码的编译器。移到808,所述逻辑经由网络将对选定代码编译请求的响应从服务器传送到请求客户机,所述响应包含对选定编译请求的接受或拒绝的指示。
在决策节点810处,当所述响应指示接受时,所述方法前进到812,且在服务器处接收待编译的源代码。继续进行到814,所述方法包含使用适合编译所述源代码的选定编译器来编译在服务器处接收到的源代码以产生经编译的代码。前进到816,所述方法包含经由网络将经编译的代码从服务器传送到请求客户机。继续进行到决策节点818,如果存在另一源编译请求,那么所述方法进行到820,且从一个或一个以上代码编译请求选择另一代码编译请求(即,第二代码编译请求)。所述方法进行到806,且将选定代码编译请求中的信息与存储在服务器处的多个编译器的列表进行比较,以确定服务器是否具有适合编译与选定代码编译请求相关联的源代码的编译器。
返回到810,如果所述响应指示拒绝,那么所述方法前进到决策节点818,其中所述方法确定是否存在另一源编译请求。如果存在另一源编译请求,那么所述方法进行到820。在818处,如果不存在其它源编译请求,那么所述方法在822处终止。
在特定实施例中,代码编译请求中的信息包含源代码语言名称、源代码语言版本、处理装置名称、处理装置版本、驱动程序名称、驱动程序版本、操作系统名称、操作系统版本或其任何组合。代码编译请求中的信息包含可由服务器用来识别特定编译器并从编译器库选择特定编译器的信息,其中所述选定编译器是合适的且与将客户机上执行的代码匹配。此信息可包含关于特定处理装置(例如,特定图形处理装置)的信息,其由处理装置的卖主提供。另外,处理装置的卖主可提供存储在服务器上的编译器,使得服务器可从客户机接收卖主提供的信息,且可将接收到的信息与编译器库中先前存储的信息进行匹配,以选择适当的编译器供使用。所述方法可用于来自多个装置的多个客户机,且第一和第二客户机的使用是出于说明性目的。
在特定实施例中,客户机是应用程序、安装程序或装置驱动程序。另外,客户机可加载或以其它方式安置在包含处理器的客户机装置上。在另一特定实施例中,源代码可包含着色语言,例如OpenGL着色语言、OpenGL顶点程序、OpenGL片段程序、OpenGLES着色语言、英伟达Cg编程语言(nVidia Cg programming language)、微软DirectX高级着色语言或另一着色语言,且被选择以供使用的基于服务器的编译器是着色器编译器。源代码可包含着色程序,例如可结合游戏应用程序使用的Open GL glFx、微软效应(Microsoft Effect)或英伟达效应CgFX(nVidia Effect CgFX)。服务器处的着色器编译器可用以编译用于着色程序的源代码,以产生可被传送且接着可在客户机(例如,包含图形处理单元的目标便携式装置或最终用户计算机)处执行的经编译的代码。
在特定实施例中,服务器包含充足的计算能力,且通信接口具有充足的频宽,使得源代码的编译响应于编译代码请求而在实时或近实时基础上执行。
图9是说明客户机所请求的编译的方法的流程图。参看图9,请求基于服务器的代码编译的方法包含:将代码编译请求发送到具有多个编译器的服务器(902处);以及从服务器接收对所述代码编译请求的响应,所述响应指示代码编译请求的接受或拒绝(904处)。如果在决策节点906处检测到代码编译请求的拒绝,那么所述方法在916处终止。否则,在决策节点906处,在检测到代码编译请求的接受后,所述方法包含:将源代码发送到服务器(908处);以及在服务器已编译源代码之后,从服务器接收经编译的代码(910处)。所述方法进一步包含:将经编译的代码存储在处理器可读存储器中(912处);以及执行经编译的代码(914处)。在特定实施例中,经编译的代码可在应用处理单元(例如,GPU)处执行。在另一实施例中,经编译的代码可在数字信号处理器(DSP)或中央处理单元(CPU)处执行。所述方法在916处终止。在特定实施例中,源代码为着色器程序代码,且经编译的代码包含着色器对象代码。
所属领域的技术人员将进一步了解,可将结合本文所揭示的实施例而描述的各种说明性逻辑块、配置、模块、电路和算法步骤实施为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件与软件的这种可互换性,上文已大体依据各种说明性组件、块、配置、模块、电路和步骤的功能性描述了各种说明性组件、块、配置、模块、电路和步骤。将此功能性实施为硬件还是软件取决于特定应用和强加在整个系统上的设计约束。所属领域的技术人员可针对每一特定应用以不同方式实施所描述的功能性,但此类实施决策不应被解译为导致偏离本发明的范围。
结合本文中所揭示的实施例而描述的方法或算法的步骤可直接以硬件、以由处理器执行的软件模块或以两者的组合来体现。软件模块可驻存在RAM存储器、快闪存储器、ROM存储器、PROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可装卸盘、CD-ROM或此项技术中已知的任何其它形式的存储媒体中。示范性存储媒体耦合到处理器,以使得处理器可从存储媒体读取信息且将信息写入到存储媒体。在替代方案中,存储媒体可与处理器成一体式。处理器和存储媒体可驻存在ASIC中。ASIC可驻存在计算装置或用户终端中。在替代方案中,处理器和存储媒体可作为离散组件驻存在计算装置或用户终端中。
提供对所揭示实施例的先前描述以使所属领域的任何技术人员能够制作或使用本发明。对这些实施例的各种修改对于所属领域的技术人员来说将是显而易见的,且本文中所界定的一般原理可在不脱离本发明的精神或范围的情况下应用于其它实施例。因此,本发明无意限于本文所示的实施例,而是将被赋予与如由权利要求书界定的原理和新颖特征一致的最宽范围。
Claims (25)
1.一种基于服务器的编译方法,其包括:
在具有多个编译器的服务器处接收代码编译请求;
将所述代码编译请求中的信息与存储在所述服务器处的所述多个编译器的列表进行比较,以确定所述服务器是否具有适合编译与所述代码编译请求相关联的源代码的编译器;
经由网络将对所述代码编译请求的响应从所述服务器传送到客户机,所述响应包含对所述代码编译请求的接受或拒绝的指示;
当所述响应包含对所述代码编译请求的接受的指示时:
在所述服务器处接收待编译的源代码;
使用适合编译所述源代码的选定编译器来编译所述在所述服务器处接收到的源代码,以产生经编译的代码;且
经由所述网络将所述经编译的代码从所述服务器传送到所述客户机。
2.根据权利要求1所述的方法,其中所述信息包含源代码语言名称、源代码语言版本、处理装置名称、处理装置版本、驱动程序名称、驱动程序版本或其任何组合。
3.根据权利要求1所述的方法,其中所述客户机为应用程序、安装程序或装置驱动程序中的一者,且其中所述客户机安置在包含处理器的装置上。
4.根据权利要求1所述的方法,其中所述网络为因特网协议网络。
5.根据权利要求1所述的方法,其中所述网络为无线网络,且其中所述服务器安置在无线基站内。
6.根据权利要求1所述的方法,其中从由以下各项组成的群组中选择所述源代码:着色语言代码、用以翻译为机器可执行代码的中间表示字节代码,以及c语言代码,且其中从由以下各项组成的群组中选择所述经编译的代码:图形处理单元(GPU)可执行代码、数字信号处理器(DSP)可执行代码,以及CPU可执行代码。
7.根据权利要求1所述的方法,其中所述源代码包含图形程序,且其中所述客户机为安装程序,其由分配器使用以结合将游戏应用程序安装到包含图形处理单元的目标装置上而请求对所述图形程序的编译。
8.根据权利要求1所述的方法,其中响应于所述编译代码请求而在实时或近实时基础上执行所述源代码的所述编译。
9.根据权利要求1所述的方法,其进一步包括:
在所述服务器处接收来自第二客户机的第二代码编译请求;
将所述第二代码编译请求中的信息与存储在所述服务器处的所述多个编译器的所述列表进行比较,以确定所述服务器是否具有适合编译与所述第二代码编译请求相关联的源代码的编译器;
经由所述网络将对所述第二代码编译请求的第二响应从所述服务器传送到所述第二客户机,所述第二响应包含对所述第二代码编译请求的接受或拒绝的指示;
当所述第二响应包含对所述第二代码编译请求的接受的指示时:
在所述服务器处接收待编译的第二源代码;
使用适合编译所述第二源代码的第二选定编译器来编译所述在所述服务器处接收到的第二源代码,以产生第二经编译的代码;以及
经由所述网络将所述第二经编译的代码从所述服务器传送到所述第二客户机。
10.一种服务器,其包括:
到数据通信网络的接口;
编译器库,其存储多个不同编译器;以及
编译器选择逻辑,其响应所述接口处所接收到的数据,且包含用以基于对所述所接收到的数据的评估来选择所述多个不同编译器中的一个编译器的逻辑,
其中由所述多个不同编译器中的所述选定编译器产生的经编译的输出数据经由所述数据通信网络被传送到客户机装置。
11.根据权利要求10所述的服务器,其中所述所接收到的数据包括来自客户机装置的编译请求,所述编译请求包含与所述客户机装置相关联的信息。
12.根据权利要求10所述的服务器,其中所述多个不同编译器中的所述选定编译器接收源代码数据,且编译所述源代码数据以产生经编译的输出数据。
13.根据权利要求12所述的服务器,其中所述客户机装置包含用以执行所述经编译的输出数据的图形处理单元。
14.根据权利要求13所述的服务器,其中所述通信网路为无线网络,且其中所述客户机装置为无线通信装置。
15.一种请求基于服务器的代码编译的方法,所述方法包括:
将代码编译请求发送到具有多个编译器的服务器;
从所述服务器接收对所述代码编译请求的响应,所述响应指示所述代码编译请求的接受或拒绝;
在检测到所述代码编译请求的接受后,将源代码发送到所述服务器,所述源代码将在所述服务器处编译;以及
在所述服务器已编译所述源代码之后,接收来自所述服务器的经编译的代码。
16.根据权利要求15所述的方法,其进一步包括将所述经编译的代码存储在处理器可读存储器中。
17.根据权利要求16所述的方法,其进一步包括在图形处理装置处执行所述经编译的代码,其中所述源代码包括着色器程序代码,且其中所述经编译的代码包括着色器对象代码。
18.一种计算装置,其包括:
处理器;
可由所述处理器存取的存储器;以及
通信接口,其经配置以:
将代码编译请求发送到具有多个编译器的服务器;
从所述服务器接收对所述代码编译请求的响应,所述响应指示所述代码编译请求的接受或拒绝;
将源代码发送到所述服务器,所述源代码将在所述服务器处编译;且
接收来自所述服务器的经编译的代码。
19.根据权利要求18所述的计算装置,其中从所述服务器接收到的所述经编译的代码存储在所述存储器中,且由所述处理器执行。
20.根据权利要求18所述的计算装置,其中所述存储器包含应用程序,且包含装置驱动程序。
21.根据权利要求20所述的计算装置,其中所述应用程序包含用以起始经由所述通信接口将所述代码编译请求发送到所述服务器的逻辑。
22.根据权利要求21所述的计算装置,其中所述处理器为图形处理单元、视频处理单元、数字信号处理器或相机图像处理单元中的一者,且其中与所述处理器相关联且存储在所述服务器处的编译器由所述处理器的卖主提供。
23.根据权利要求18所述的计算装置,其进一步包括存储在所述存储器中的文件系统。
24.根据权利要求18所述的计算装置,其进一步包括响应所述处理器以显示图形和数据的显示装置。
25.根据权利要求18所述的计算装置,其进一步包括:
麦克风,其耦合到所述处理器且适合于接收音频输入;以及
扬声器,其耦合到所述处理器且适合于产生音频输出。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/925,476 | 2007-10-26 | ||
US11/925,476 US8365153B2 (en) | 2007-10-26 | 2007-10-26 | Server-based code compilation |
PCT/US2008/081205 WO2009055731A1 (en) | 2007-10-26 | 2008-10-24 | Server-based code compilation |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101836188A true CN101836188A (zh) | 2010-09-15 |
CN101836188B CN101836188B (zh) | 2014-06-11 |
Family
ID=39484561
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200880113180.7A Active CN101836188B (zh) | 2007-10-26 | 2008-10-24 | 基于服务器的代码编译 |
Country Status (7)
Country | Link |
---|---|
US (1) | US8365153B2 (zh) |
EP (1) | EP2053506A1 (zh) |
JP (1) | JP5529027B2 (zh) |
KR (1) | KR101237177B1 (zh) |
CN (1) | CN101836188B (zh) |
TW (1) | TW200925997A (zh) |
WO (1) | WO2009055731A1 (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102339253A (zh) * | 2010-07-20 | 2012-02-01 | 通用电气公司 | 用于指示应用代码的执行的系统和方法 |
CN103777929A (zh) * | 2012-10-18 | 2014-05-07 | 中国移动通信集团公司 | 用于程序开发的模拟开发系统的实现方法及模拟开发系统 |
WO2015123956A1 (zh) * | 2014-02-19 | 2015-08-27 | 华为技术有限公司 | 一种数据处理方法及装置 |
CN105723336A (zh) * | 2013-10-04 | 2016-06-29 | 微软技术许可有限责任公司 | 构建时解析和类型检查引用 |
CN105893105A (zh) * | 2016-03-29 | 2016-08-24 | 乐视控股(北京)有限公司 | 一种针对多个编译平台的编译系统和方法 |
CN106648597A (zh) * | 2016-10-10 | 2017-05-10 | 许继集团有限公司 | 一种多用户并发式远程编译引擎架构 |
CN106980504A (zh) * | 2017-03-28 | 2017-07-25 | 腾讯科技(深圳)有限公司 | 一种应用程序开发方法及其工具、设备 |
CN107580024A (zh) * | 2017-08-04 | 2018-01-12 | 北京奇虎科技有限公司 | 一种远程主机的控制方法和装置 |
CN107592358A (zh) * | 2017-09-19 | 2018-01-16 | 广州视源电子科技股份有限公司 | 基于http服务的应用程序接口调用方法和装置 |
CN107810474A (zh) * | 2015-07-10 | 2018-03-16 | 谷歌有限责任公司 | 大规模源代码存储库中的自动导入及依赖性 |
CN107943486A (zh) * | 2017-12-19 | 2018-04-20 | 北京星河星云信息技术有限公司 | 一种多语言代码编译方法、分发方法、装置和系统 |
CN110096281A (zh) * | 2019-04-24 | 2019-08-06 | 深圳市码上趣学科技有限公司 | 代码解析方法、解析服务器、存储介质及装置 |
CN110995458A (zh) * | 2018-10-02 | 2020-04-10 | 恩德莱斯和豪瑟尔分析仪表两合公司 | 用于适配现场设备的功能的方法 |
CN112818176A (zh) * | 2021-02-08 | 2021-05-18 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置、设备及存储介质 |
Families Citing this family (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8189004B2 (en) * | 2007-11-09 | 2012-05-29 | Lucasfilm Entertainment Company Ltd. | Translating Renderman shading language code |
TWI521939B (zh) * | 2008-02-27 | 2016-02-11 | 恩康普丁公司 | 用於低頻寬顯示資訊傳輸之系統及方法 |
US8539464B2 (en) * | 2008-10-30 | 2013-09-17 | International Business Machines Corporation | Distributed just-in-time compilation |
US9134973B2 (en) * | 2009-02-26 | 2015-09-15 | Red Hat, Inc. | Dynamic compiling and loading at runtime |
US9117071B2 (en) | 2009-06-03 | 2015-08-25 | Apple Inc. | Methods and apparatuses for secure compilation |
US8677329B2 (en) * | 2009-06-03 | 2014-03-18 | Apple Inc. | Methods and apparatuses for a compiler server |
CA2698066A1 (en) * | 2009-07-31 | 2011-01-31 | Nitobi Software Inc. | System and method for remotely compiling multi-platform native applications for mobile devices |
JP2011034404A (ja) * | 2009-08-03 | 2011-02-17 | Funai Electric Co Ltd | 情報処理システムおよび情報処理方法 |
CA2783829C (en) * | 2009-12-11 | 2018-07-31 | Aerial Robotics, Inc. | Transparent network substrate system |
US8505001B2 (en) * | 2009-12-17 | 2013-08-06 | Broadcom Corporation | Method and system for utilizing data flow graphs to compile shaders |
EP2336882A1 (en) * | 2009-12-18 | 2011-06-22 | Telefonaktiebolaget L M Ericsson (PUBL) | Technique for run-time provision of executable code using off-device services |
US10114660B2 (en) * | 2011-02-22 | 2018-10-30 | Julian Michael Urbach | Software application delivery and launching system |
US20120284701A1 (en) * | 2011-05-06 | 2012-11-08 | Qualcomm Incorporated | Efficient conditional flow control compilation |
KR20130073374A (ko) * | 2011-12-23 | 2013-07-03 | 삼성전자주식회사 | 응용 프로그램의 분산형 컴파일 시스템, 장치 및 방법 |
US9489184B2 (en) * | 2011-12-30 | 2016-11-08 | Oracle International Corporation | Adaptive selection of programming language versions for compilation of software programs |
US8997067B2 (en) * | 2012-01-31 | 2015-03-31 | Sap Se | Unified software build system |
US9529575B2 (en) * | 2012-02-16 | 2016-12-27 | Microsoft Technology Licensing, Llc | Rasterization of compute shaders |
US9075913B2 (en) | 2012-02-27 | 2015-07-07 | Qualcomm Incorporated | Validation of applications for graphics processing unit |
EP2825952B1 (en) * | 2012-03-16 | 2017-03-15 | Intel Corporation | Techniques for a secure graphics architecture |
US8793276B2 (en) * | 2012-04-17 | 2014-07-29 | Sap Ag | Client-side statement routing in distributed database |
US8700660B2 (en) * | 2012-04-17 | 2014-04-15 | Sap Ag | Client-side statement routing for partitioned tables |
US9037677B2 (en) * | 2012-04-17 | 2015-05-19 | Sap Se | Update protocol for client-side routing information |
US9886734B2 (en) * | 2013-04-25 | 2018-02-06 | Intel Corporation | Techniques for graphics data prefetching |
US9720660B2 (en) * | 2013-05-21 | 2017-08-01 | Red Hat, Inc. | Binary interface instrumentation |
US20150347094A1 (en) * | 2014-05-30 | 2015-12-03 | Apple Inc. | Interactive learning tool using playground |
US9747084B2 (en) * | 2014-09-09 | 2017-08-29 | Google Inc. | Offline shader compilation |
US9786026B2 (en) | 2015-06-15 | 2017-10-10 | Microsoft Technology Licensing, Llc | Asynchronous translation of computer program resources in graphics processing unit emulation |
US9881351B2 (en) * | 2015-06-15 | 2018-01-30 | Microsoft Technology Licensing, Llc | Remote translation, aggregation and distribution of computer program resources in graphics processing unit emulation |
US10203943B2 (en) * | 2015-08-13 | 2019-02-12 | Samsung Electronics Co., Ltd. | Static analysis and reconstruction of deep link handling in compiled applications |
JP6740600B2 (ja) | 2015-12-09 | 2020-08-19 | 日本電気株式会社 | プログラム実行システム、プログラム実行方法、および、プログラム |
US10409559B2 (en) * | 2016-03-18 | 2019-09-10 | Oracle International Corporation | Single-source-base compilation for multiple target environments |
US20170286074A1 (en) * | 2016-03-29 | 2017-10-05 | Le Holdings (Beijing) Co., Ltd. | Electronic Device and Method for Multiple Compiling Platforms |
CN106445581A (zh) * | 2016-08-30 | 2017-02-22 | 宁波方太厨具有限公司 | 一种终端设备的软件发布管理方法 |
US10606565B2 (en) * | 2017-01-31 | 2020-03-31 | Stackery, Inc. | Visual devops systems and methods |
US10089082B2 (en) * | 2017-01-31 | 2018-10-02 | Stackery, Inc. | Visual devops systems and methods |
CN108626850B (zh) * | 2017-03-20 | 2020-06-12 | 台达电子工业股份有限公司 | 空调设备的远程智能有限状态机控制系统 |
US10996936B2 (en) * | 2017-06-27 | 2021-05-04 | Intel Corporation | Techniques for distributing code to components of a computing system |
WO2019028547A1 (en) * | 2017-08-08 | 2019-02-14 | Crypto4A Technologies Inc. | METHOD AND SYSTEM FOR DEPLOYING AND EXECUTING EXECUTABLE CODE BY SECURE MACHINE |
KR101967300B1 (ko) * | 2017-10-27 | 2019-04-09 | 아토리서치(주) | 가상머신 이미지 생성 자동화 방법 및 장치 |
US10668378B2 (en) * | 2018-01-26 | 2020-06-02 | Valve Corporation | Distributing shaders between client machines for precaching |
US10698668B1 (en) * | 2018-05-29 | 2020-06-30 | Amazon Technologies, Inc. | Custom code transformations during compilation process |
KR20200053318A (ko) | 2018-11-08 | 2020-05-18 | 삼성전자주식회사 | 인공 신경망의 연산 처리 그래프를 관리하는 시스템 및 이를 이용한 연산 처리 그래프를 관리하는 방법 |
CN110548285B (zh) * | 2019-09-03 | 2023-11-28 | 上海网之易璀璨网络科技有限公司 | 游戏通信控制方法及装置、介质及电子设备 |
CN110806870B (zh) * | 2019-10-09 | 2023-07-18 | 北京字节跳动网络技术有限公司 | 快捷应用实现方法、装置、电子设备、服务器及存储介质 |
CN110750282B (zh) * | 2019-10-14 | 2021-04-02 | 支付宝(杭州)信息技术有限公司 | 用于运行应用程序的方法、装置及gpu节点 |
CN112099800B (zh) * | 2020-09-27 | 2024-03-08 | 中国建设银行股份有限公司 | 代码数据的处理方法、装置和服务器 |
US11321907B1 (en) | 2021-03-02 | 2022-05-03 | Samsung Electronics Co., Ltd. | Method and apparatus for graphics driver optimization using daemon-based resources |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2665089B2 (ja) * | 1991-09-26 | 1997-10-22 | 三菱電機株式会社 | 分散環境下におけるコンパイル方式 |
JPH05342012A (ja) * | 1992-06-10 | 1993-12-24 | Sony Corp | コンパイル方法およびコンパイラ |
US5761512A (en) * | 1995-12-27 | 1998-06-02 | International Business Machines Corporation | Automatic client-server complier |
US5987256A (en) * | 1997-09-03 | 1999-11-16 | Enreach Technology, Inc. | System and process for object rendering on thin client platforms |
JP2000122871A (ja) | 1998-10-14 | 2000-04-28 | Hitachi Ltd | アプリケーション配布方法 |
JP2000215181A (ja) * | 1999-01-21 | 2000-08-04 | Fujitsu Ltd | ネットワ―クコンピュ―タシステム及び代理コンパイルサ―バ装置 |
JP2001195264A (ja) * | 2000-01-07 | 2001-07-19 | Toshiba Corp | コンパイル方法および計算機システム |
KR100441115B1 (ko) | 2001-06-27 | 2004-07-19 | 주식회사 인터와이즈 | 정보 단말기의 자바 프로그램 처리 속도 향상을 위한 자바컴파일 온 디멘드 서비스 시스템 및 그 방법 |
JP2003216434A (ja) * | 2002-01-25 | 2003-07-31 | Hewlett Packard Co <Hp> | 小型情報機器において、ユーザプロファイルデータの活用により、ダウンロードプログラムの最適化を図る方法およびシステム。 |
US7340730B2 (en) * | 2002-03-18 | 2008-03-04 | Sun Microsystems, Inc. | On demand, network accessible, run time compile server |
US7009605B2 (en) * | 2002-03-20 | 2006-03-07 | Nvidia Corporation | System, method and computer program product for generating a shader program |
US7707563B2 (en) * | 2003-01-10 | 2010-04-27 | Nexaweb Technologies Inc | System and method for network-based computing |
US7587712B2 (en) * | 2003-12-19 | 2009-09-08 | Marvell International Ltd. | End-to-end architecture for mobile client JIT processing on network infrastructure trusted servers |
US7248265B2 (en) | 2004-04-16 | 2007-07-24 | Apple Inc. | System and method for processing graphics operations with graphics processing unit |
US7548892B2 (en) * | 2004-04-30 | 2009-06-16 | Microsoft Corporation | Processing machine learning techniques using a graphics processing unit |
KR100590686B1 (ko) | 2004-07-15 | 2006-06-19 | 에스케이 텔레콤주식회사 | 이동통신 단말기에서 3d 관련 데이터를 표시하기 위한그래픽 가속기 제어 방법 |
US20060012604A1 (en) * | 2004-07-15 | 2006-01-19 | Avinash Seetharamaiah | Legacy processing for pixel shader hardware |
US7733347B2 (en) * | 2004-11-05 | 2010-06-08 | Microsoft Corporation | Automated construction of shader programs |
US7650639B2 (en) | 2005-03-31 | 2010-01-19 | Microsoft Corporation | System and method for protecting a limited resource computer from malware |
US8271964B2 (en) * | 2005-05-16 | 2012-09-18 | Microsoft Corporation | Extensible software development services |
US20070169066A1 (en) | 2005-11-17 | 2007-07-19 | Nielsen Spencer J | System and method for an extensible 3D interface programming framework |
US8764566B2 (en) * | 2006-02-24 | 2014-07-01 | Igt | Internet remote game server |
US8453104B2 (en) * | 2006-10-27 | 2013-05-28 | Microsoft Corporation | Thin client software development environment |
US7986325B1 (en) * | 2006-12-12 | 2011-07-26 | Nvidia Corporation | Loading integer-based data into a graphics processing system |
US20110102443A1 (en) | 2009-11-04 | 2011-05-05 | Microsoft Corporation | Virtualized GPU in a Virtual Machine Environment |
EP2336882A1 (en) | 2009-12-18 | 2011-06-22 | Telefonaktiebolaget L M Ericsson (PUBL) | Technique for run-time provision of executable code using off-device services |
-
2007
- 2007-10-26 US US11/925,476 patent/US8365153B2/en active Active
-
2008
- 2008-03-31 EP EP08006298A patent/EP2053506A1/en not_active Ceased
- 2008-10-24 KR KR1020107010539A patent/KR101237177B1/ko not_active IP Right Cessation
- 2008-10-24 WO PCT/US2008/081205 patent/WO2009055731A1/en active Application Filing
- 2008-10-24 TW TW097141107A patent/TW200925997A/zh unknown
- 2008-10-24 JP JP2010531292A patent/JP5529027B2/ja not_active Expired - Fee Related
- 2008-10-24 CN CN200880113180.7A patent/CN101836188B/zh active Active
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102339253A (zh) * | 2010-07-20 | 2012-02-01 | 通用电气公司 | 用于指示应用代码的执行的系统和方法 |
CN102339253B (zh) * | 2010-07-20 | 2016-03-23 | 通用电气公司 | 用于指示应用代码的执行的系统和方法 |
CN103777929A (zh) * | 2012-10-18 | 2014-05-07 | 中国移动通信集团公司 | 用于程序开发的模拟开发系统的实现方法及模拟开发系统 |
CN105723336B (zh) * | 2013-10-04 | 2019-11-05 | 微软技术许可有限责任公司 | 用于构建时解析和类型检查引用的方法和系统 |
CN105723336A (zh) * | 2013-10-04 | 2016-06-29 | 微软技术许可有限责任公司 | 构建时解析和类型检查引用 |
US9430198B2 (en) | 2014-02-19 | 2016-08-30 | Huawei Technologies Co., Ltd. | Data processing method and apparatus |
WO2015123956A1 (zh) * | 2014-02-19 | 2015-08-27 | 华为技术有限公司 | 一种数据处理方法及装置 |
CN107810474A (zh) * | 2015-07-10 | 2018-03-16 | 谷歌有限责任公司 | 大规模源代码存储库中的自动导入及依赖性 |
CN107810474B (zh) * | 2015-07-10 | 2020-12-29 | 谷歌有限责任公司 | 大规模源代码存储库中的自动导入及依赖性 |
CN105893105A (zh) * | 2016-03-29 | 2016-08-24 | 乐视控股(北京)有限公司 | 一种针对多个编译平台的编译系统和方法 |
CN106648597A (zh) * | 2016-10-10 | 2017-05-10 | 许继集团有限公司 | 一种多用户并发式远程编译引擎架构 |
CN106980504A (zh) * | 2017-03-28 | 2017-07-25 | 腾讯科技(深圳)有限公司 | 一种应用程序开发方法及其工具、设备 |
CN106980504B (zh) * | 2017-03-28 | 2022-07-01 | 腾讯科技(深圳)有限公司 | 一种应用程序开发方法及其工具、设备 |
CN107580024A (zh) * | 2017-08-04 | 2018-01-12 | 北京奇虎科技有限公司 | 一种远程主机的控制方法和装置 |
CN107592358A (zh) * | 2017-09-19 | 2018-01-16 | 广州视源电子科技股份有限公司 | 基于http服务的应用程序接口调用方法和装置 |
CN107943486B (zh) * | 2017-12-19 | 2020-12-18 | 北京微网通联股份有限公司 | 一种多语言代码编译方法、分发方法、装置和系统 |
CN107943486A (zh) * | 2017-12-19 | 2018-04-20 | 北京星河星云信息技术有限公司 | 一种多语言代码编译方法、分发方法、装置和系统 |
CN110995458A (zh) * | 2018-10-02 | 2020-04-10 | 恩德莱斯和豪瑟尔分析仪表两合公司 | 用于适配现场设备的功能的方法 |
US11288051B2 (en) | 2018-10-02 | 2022-03-29 | Endress+Hauser Conducta Gmbh+Co. Kg | Method for adapting functionalities of a field device |
CN110995458B (zh) * | 2018-10-02 | 2023-04-11 | 恩德莱斯和豪瑟尔分析仪表两合公司 | 用于适配现场设备的功能的方法 |
CN110096281A (zh) * | 2019-04-24 | 2019-08-06 | 深圳市码上趣学科技有限公司 | 代码解析方法、解析服务器、存储介质及装置 |
CN112818176A (zh) * | 2021-02-08 | 2021-05-18 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置、设备及存储介质 |
CN112818176B (zh) * | 2021-02-08 | 2023-12-12 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
JP5529027B2 (ja) | 2014-06-25 |
US20090113402A1 (en) | 2009-04-30 |
CN101836188B (zh) | 2014-06-11 |
JP2011501325A (ja) | 2011-01-06 |
US8365153B2 (en) | 2013-01-29 |
KR20100081347A (ko) | 2010-07-14 |
EP2053506A1 (en) | 2009-04-29 |
WO2009055731A1 (en) | 2009-04-30 |
TW200925997A (en) | 2009-06-16 |
KR101237177B1 (ko) | 2013-02-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101836188B (zh) | 基于服务器的代码编译 | |
US20170353397A1 (en) | Offloading Execution of an Application by a Network Connected Device | |
JP4216722B2 (ja) | ネットワーク接続されたリソース上の制約を有する装置の実行及びリソースをオフロードする方法及びシステム | |
JP4897837B2 (ja) | ユーザインターフェースコンポーネントをワイヤレスデバイスにダウンロードするシステムおよび方法 | |
US7747683B2 (en) | Method and system for operating applications for remote terminal devices | |
KR101735102B1 (ko) | 이동통신 시스템에서 응용 서비스를 제공하는 방법 및 장치 | |
CN112291363B (zh) | 无线通信的方法、装置、电子设备和计算机可读存储介质 | |
CN103440574A (zh) | 游戏支付处理方法、客户端及系统 | |
CN109933381B (zh) | 一种内核的加载方法及装置 | |
CN106598678A (zh) | 向终端设备提供应用程序安装包的方法及装置 | |
CN112988362A (zh) | 一种任务处理方法、装置、电子设备及存储介质 | |
CN111580883B (zh) | 应用程序启动方法、装置、计算机系统和介质 | |
CN104243568A (zh) | 一种数据流量分享方法和装置 | |
CN106954191A (zh) | 广播发送方法、装置和终端设备 | |
CN103631621A (zh) | 一种信息提示方法及装置 | |
CN112882826A (zh) | 一种资源协同调度方法以及装置 | |
CN102053917B (zh) | 一种降低内存占用的智能卡及其处理指令的方法 | |
CN117319388A (zh) | 算力服务方法、装置及终端 | |
CN113157375A (zh) | 一种内容显示方法、装置、设备、系统及存储介质 | |
CN110489488B (zh) | 一种数据处理方法和装置 | |
CN113050985A (zh) | 前端工程依赖自动注册方法及装置 | |
CN106034154A (zh) | 公交信息共享方法和装置 | |
CN105743929B (zh) | 一种终端互动的方法及装置 | |
US20070258480A1 (en) | Resource management system and method | |
CN102779065A (zh) | 一种数据处理方法及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |