《用于图形处理单元的应用的验证.pdf》由会员分享,可在线阅读,更多相关《用于图形处理单元的应用的验证.pdf(28页珍藏版)》请在专利查询网上搜索。
1、10申请公布号CN104137076A43申请公布日20141105CN104137076A21申请号201380010829322申请日2013013013/406,27220120227USG06F11/07200601G06F11/36200601G06F21/5320060171申请人高通股份有限公司地址美国加利福尼亚州72发明人阿列克谢V布尔德杰伊春苏普云74专利代理机构北京律盟知识产权代理有限责任公司11287代理人宋献涛54发明名称用于图形处理单元的应用的验证57摘要本发明中所描述的技术针对于验证将在图形处理单元GPU上执行的应用。举例来说,验证服务器装置可接收所述应用的代码。所。
2、述验证服务器装置可提供所述应用满足一或多个性能准则的某一确保水平。以此方式,可减小有问题的应用在包含所述GPU的装置上执行的概率。30优先权数据85PCT国际申请进入国家阶段日2014082586PCT国际申请的申请数据PCT/US2013/0238742013013087PCT国际申请的公布数据WO2013/130212EN2013090651INTCL权利要求书5页说明书18页附图4页19中华人民共和国国家知识产权局12发明专利申请权利要求书5页说明书18页附图4页10申请公布号CN104137076ACN104137076A1/5页21一种方法,其包括使用服务器装置接收将由驻留于所述服务。
3、器装置外部的装置上的图形处理单元GPU执行的应用;使用所述服务器装置执行以下各者中的至少一者在所述应用在所述服务器装置上的编译之前和期间对所述应用的分析;及在所述应用在所述服务器装置上的执行期间对所述应用的分析;基于所述分析中的至少一者来确定所述应用是否满足一或多个性能准则;及在所述应用满足所述一或多个性能准则的情况下将对所述应用的验证传输到所述装置。2根据权利要求1所述的方法,其中所述性能准则包括以下各者中的至少一者确定所述应用不存在恶意的代码,及确定所述应用不是易于出错的。3根据权利要求1所述的方法,其中所述性能准则包含以下各者中的一或多者确定所述应用的代码不包含已知病毒的代码、确定在所述。
4、应用的所述代码的编译期间确定未发现错误、确定在所述应用的执行期间确定不存在出界的存储器存取、确定在所述应用的执行期间确定所述装置的系统总线未过载、确定所述应用的任务在阈值执行时间内完成执行,及确定所述应用的所述任务至少以阈值执行速率执行。4根据权利要求1所述的方法,其中在编译之前和期间执行对所述应用的所述分析包括将所述应用的代码与已知病毒的代码进行比较,且确定在所述应用的所述代码的编译期间是否发现任何错误。5根据权利要求1所述的方法,其中在所述应用的执行期间执行对所述应用的所述分析包括执行虚拟GPU模型;在所述虚拟GPU模型上执行所述应用;及在所述应用在所述GPU模型上的所述执行期间分析所述虚。
5、拟GPU模型的功能性。6根据权利要求5所述的方法,其进一步包括执行虚拟装置模型;及在所述应用在所述GPU模型上的所述执行期间分析所述虚拟装置模型的功能性。7根据权利要求5所述的方法,其中在所述虚拟GPU模型上执行所述应用包括将GPU输入输入到在所述虚拟GPU模型上执行的所述应用。8根据权利要求5所述的方法,其进一步包括监视由所述所执行的应用执行的功能。9根据权利要求8所述的方法,其中监视功能包括以下各者中的一或多者监视所述所执行的应用进行的存储器存取、监视执行的速率,及监视执行时间。10根据权利要求1所述的方法,其进一步包括修改所述应用的代码;及将所述应用的所述经修改的代码传输到所述装置。11。
6、根据权利要求10所述的方法,其进一步包括确定所述应用将在所述GPU上低效地执行,其中修改所述应用的所述代码包括基于所述确定来修改所述应用的所述代码。权利要求书CN104137076A2/5页312根据权利要求1所述的方法,其中在所述应用的执行期间执行对所述应用的所述分析包括在硬件仿真板上执行所述应用;及在所述执行期间分析所述硬件仿真板的功能性。13根据权利要求1所述的方法,其中接收所述应用包括接收所述应用的源代码和中间代码中的至少一者,所述方法进一步包括编译所述应用的所述源代码和所述中间代码中的至少一者以产生所述应用的目标代码;及将所述应用的所述目标代码传输到所述装置。14一种设备,其包括仿真。
7、器单元,其可操作以接收将由驻留于所述设备外部的装置上的图形处理单元GPU执行的应用;执行以下各者中的至少一者在所述应用在所述设备上的编译之前和期间对所述应用的分析;及在所述应用在所述设备上的执行期间对所述应用的分析;基于所述分析中的至少一者来确定所述应用是否满足一或多个性能准则;及在所述应用满足所述一或多个性能准则的情况下将对所述应用的验证传输到所述装置。15根据权利要求14所述的设备,其中所述性能准则包括以下各者中的至少一者确定所述应用不存在恶意的代码,及确定所述应用不是易于出错的。16根据权利要求14所述的设备,其中所述性能准则包含以下各者中的一或多者确定所述应用的代码不包含已知病毒的代码。
8、、确定在所述应用的所述代码的编译期间确定未发现错误、确定在所述应用的执行期间确定不存在出界的存储器存取、确定在所述应用的执行期间确定所述装置的系统总线未过载、确定所述应用的任务在阈值执行时间内完成执行,及确定所述应用的所述任务至少以阈值执行速率执行。17根据权利要求14所述的设备,其中所述仿真器单元将所述应用的代码与已知病毒的代码进行比较,且确定在所述应用的所述代码的编译期间是否发现任何错误,以在编译之前和期间执行对所述应用的所述分析。18根据权利要求14所述的设备,其进一步包括存储器,其中为了在所述应用的执行期间执行对所述应用的所述分析,所述仿真器单元可操作以执行存储在所述存储器中的虚拟GP。
9、U模型;在所述虚拟GPU模型上执行所述应用;及在所述应用在所述GPU模型上的所述执行期间分析所述虚拟GPU模型的功能性。19根据权利要求18所述的设备,其中所述仿真器单元进一步可操作以执行存储在所述存储器中的虚拟装置模型;及在所述应用在所述GPU模型上的所述执行期间分析所述虚拟装置模型的功能性。20根据权利要求18所述的设备,其进一步包括存储器,其中所述仿真器单元在所述应用在所述虚拟GPU模型上的所述执行期间将存储在所述存储器中的GPU输入输入到在所述虚拟GPU模型上执行的所述应用。权利要求书CN104137076A3/5页421根据权利要求18所述的设备,其中所述仿真器单元进一步可操作以监视。
10、由所述所执行的应用执行的功能。22根据权利要求21所述的设备,其中所述仿真器单元可操作以监视以下各者中的一或多者所述所执行的应用进行的存储器存取、执行的速率,及执行时间。23根据权利要求14所述的设备,其中所述仿真器单元进一步可操作以修改所述应用的代码;及将所述应用的所述经修改的代码传输到所述装置。24根据权利要求23所述的设备,其中所述仿真器单元进一步可操作以确定所述应用将在所述GPU上低效地执行,且基于所述确定来修改所述应用的所述代码。25根据权利要求14所述的设备,其中所述仿真器单元包括硬件仿真板,且其中所述硬件仿真板执行所述应用以在所述应用的执行期间执行对所述应用的所述分析。26根据权。
11、利要求14所述的设备,其中所述仿真器单元接收所述应用的源代码和中间代码中的至少一者,且其中所述仿真器单元进一步可操作以编译所述应用的所述源代码和所述中间代码中的至少一者以产生所述应用的目标代码;及将所述应用的所述目标代码传输到所述装置。27一种服务器装置,其包括用于接收将由驻留于所述服务器装置外部的装置上的图形处理单元GPU执行的应用的装置;用于执行以下各者中的至少一者的装置在所述应用在所述服务器装置上的编译之前和期间对所述应用的分析;及在所述应用在所述服务器装置上的执行期间对所述应用的分析;用于基于所述分析中的至少一者来确定所述应用是否满足一或多个性能准则的装置;及用于在所述应用满足所述一或。
12、多个性能准则的情况下将对所述应用的验证传输到所述装置的装置。28一种非暂时性计算机可读存储媒体,其包括致使一或多个处理器进行以下操作的指令使用服务器装置接收将由驻留于所述服务器装置外部的装置上的图形处理单元GPU执行的应用;使用所述服务器装置执行以下各者中的至少一者在所述应用在所述服务器装置上的编译之前和期间对所述应用的分析;及在所述应用在所述服务器装置上的执行期间对所述应用的分析;基于所述分析中的至少一者来确定所述应用是否满足一或多个性能准则;及在所述应用满足所述一或多个性能准则的情况下将对所述应用的验证传输到所述装置。29一种方法,其包括接收将由装置的图形处理单元GPU执行的应用;将所述应。
13、用传输到在所述装置外部的服务器装置以用于验证所述应用;及权利要求书CN104137076A4/5页5从所述服务器装置接收指示所述应用满足在所述GPU上执行的一或多个准则的验证。30根据权利要求29所述的方法,其进一步包括基于所述所接收的验证在所述GPU上执行所述应用。31根据权利要求29所述的方法,其中接收所述应用包括接收以下各者中的至少一者所述应用的源代码、所述应用的中间代码,及所述应用的经编译的代码,且其中传输所述应用包括传输以下各者中的至少一者所述应用的所述源代码、所述应用的中间代码,及所述应用的所述经编译的代码。32根据权利要求29所述的方法,其进一步包括从所述服务器装置接收所述应用的。
14、经修改的版本;及在所述GPU上执行所述应用的所述经修改的版本。33根据权利要求29所述的方法,其中传输所述应用包括传输所述应用的源代码和所述应用的中间代码中的至少一者,所述方法进一步包括从所述服务器装置接收所述应用的经编译的目标代码;及在所述GPU上执行所述应用的所述经编译的目标代码。34根据权利要求29所述的方法,其中将所述应用传输到所述服务器装置包括仅将所述应用传输到所述服务器装置一次,且其中从所述服务器装置接收所述验证包括仅从所述服务器装置接收所述验证一次。35一种设备,其包括图形处理单元GPU;装置存储器,其可操作以存储将由所述GPU执行的应用;及处理器,其可操作以将所述应用传输到在所。
15、述设备外部的服务器装置;及从所述服务器装置接收指示所述应用满足在所述GPU上执行的一或多个准则的验证。36根据权利要求35所述的设备,其中所述处理器进一步可操作以指令所述GPU基于所述所接收的验证而执行所述应用,且其中所述GPU可操作以响应于来自所述处理器的所述指令而执行所述应用。37根据权利要求35所述的设备,其中所述处理器接收以下各者中的至少一者所述应用的源代码、所述应用的中间代码,及所述应用的经编译的代码,且其中所述处理器传输以下各者中的至少一者所述应用的所述源代码、所述应用的中间代码,及所述应用的所述经编译的代码。38根据权利要求35所述的设备,其中所述处理器进一步可操作以从所述服务器。
16、装置接收所述应用的经修改的版本,且其中所述GPU进一步可操作以执行所述应用的所述经修改的版本。39根据权利要求35所述的设备,其中所述处理器传输所述应用的源代码和所述应用的中间代码中的至少一者,其中所述处理器进一步可操作以接收所述应用的经编译的目标代码,且其中所述GPU进一步可操作以执行所述应用的所述经编译的目标代码。40根据权利要求35所述的设备,其中所述处理器仅将所述应用传输到所述服务器装置一次,且其中所述处理器仅从所述服务器装置接收所述验证一次。41一种装置,其包括权利要求书CN104137076A5/5页6图形处理单元GPU;用于接收将由所述GPU执行的应用的装置;用于将所述应用传输到。
17、在所述装置外部的服务器装置以用于验证所述应用的装置;及用于从所述服务器装置接收指示所述应用满足在所述GPU上执行的一或多个准则的验证的装置。42一种非暂时性计算机可读存储媒体,其包括致使一或多个处理器进行以下操作的指令接收将由装置的图形处理单元GPU执行的应用;将所述应用传输到在所述装置外部的服务器装置以用于验证所述应用;及从所述服务器装置接收指示所述应用满足在所述GPU上执行的一或多个准则的验证。权利要求书CN104137076A1/18页7用于图形处理单元的应用的验证技术领域0001本发明针对于在图形处理单元GPU上执行的应用,且更特定来说,针对于此些应用的验证。背景技术0002图形处理单。
18、元GPU传统上已经受限于仅在固定功能管线中执行图形相关处理,这提供非常有限的功能灵活性。较新的GPU包含执行程序的可编程核心,且进而提供与传统GPU相比的更大的功能灵活性。所述可编程核心可执行图形相关应用和非图形相关应用两者。发明内容0003一般来说,本发明涉及用于在执行之前识别将在图形处理单元GPU上执行的潜在有问题的应用。有问题的应用的实例包含,但不限于,恶意应用以及低效或者易于出错的应用。举例来说,在收容GPU的装置外部的服务器装置可验证所述应用。对所述应用的验证可意味着所述应用满足一或多个准则。作为一个实例,验证可指以某一确保水平确定所述应用不是恶意应用、易于出错的应用,或低效的应用。。
19、所述服务器装置可将指示传输到所述装置,所述指示指示GPU执行所述应用是否为安全的或不妥当的。所述装置可随后基于所接收的指示而选择在GPU上执行程序。0004在一个实例中,本发明描述一种方法,其包含使用服务器装置接收将由驻留于所述服务器装置外部的装置上的图形处理单元GPU执行的应用。所述方法还包含使用所述服务器装置执行以下各者中的至少一者在所述应用在所述服务器装置上的编译之前和期间执行对所述应用的分析,及在所述应用在所述服务器装置上的执行期间执行对所述应用的分析。所述方法进一步包含基于所述分析中的至少一者来确定所述应用是否满足一或多个性能准则,且在所述应用满足所述一或多个性能准则的情况下将对所述。
20、应用的验证传输到所述装置。0005在另一实例中,本发明描述一种设备,其包含仿真器单元,所述仿真器单元可操作以接收将由驻留于所述设备外部的装置上的图形处理单元GPU执行的应用。所述仿真器单元还可操作以执行以下各者中的至少一者在所述应用在所述设备上的编译之前和期间执行对所述应用的分析,及在所述应用在所述设备上的执行期间执行对所述应用的分析。所述仿真器单元还可操作以基于所述分析中的至少一者来确定所述应用是否满足一或多个性能准则,且在所述应用满足所述一或多个性能准则的情况下将对所述应用的验证传输到所述装置。0006在另一实例中,本发明描述一种服务器装置,其包含用于接收将由驻留于所述服务器装置外部的装置。
21、上的图形处理单元GPU执行的应用的装置。所述服务器装置还包含用于执行以下各者中的至少一者的装置在所述应用在所述服务器装置上的编译之前和期间执行对所述应用的分析,及在所述应用在所述服务器装置上的执行期间执行对所述应用说明书CN104137076A2/18页8的分析。所述服务器装置进一步包含用于基于所述分析中的至少一者来确定所述应用是否满足一或多个性能准则的装置,及用于在所述应用满足所述一或多个性能准则的情况下将对所述应用的验证传输到所述装置的装置。0007在另一实例中,本发明描述一种非暂时性计算机可读存储媒体,其包括指令,所述指令致使一或多个处理器使用服务器装置接收将由驻留于所述服务器装置外部的。
22、装置上的图形处理单元GPU执行的应用。所述指令进一步致使一或多个处理器使用所述服务器装置执行以下各者中的至少一者在所述应用在所述服务器装置上的编译之前和期间执行对所述应用的分析,及在所述应用在所述服务器装置上的执行期间执行对所述应用的分析。所述指令还致使所述一或多个处理器基于所述分析中的至少一者来确定所述应用是否满足一或多个性能准则,且在所述应用满足所述一或多个性能准则的情况下将对所述应用的验证传输到所述装置。0008在另一实例中,本发明描述一种方法,其包含接收将由装置的图形处理单元GPU执行的应用,且将所述应用传输到在所述装置外部的服务器装置以用于验证所述应用。所述方法进一步包含从所述服务器。
23、装置接收指示所述应用满足在GPU上执行的一或多个准则的验证。0009在另一实例中,本发明描述一种设备,其包含图形处理单元GPU及可操作以存储将由所述GPU执行的应用的装置。所述设备还包含处理器,所述处理器可操作以将所述应用传输到在所述设备外部的服务器装置,且从所述服务器装置接收指示所述应用满足在GPU上执行的一或多个准则的验证。0010在另一实例中,本发明描述一种包含图形处理单元GPU的装置。所述装置还包含用于接收将由所述GPU执行的应用的装置,及用于将所述应用传输到在所述装置外部的服务器装置以用于验证所述应用的装置。所述装置进一步包含用于从所述服务器装置接收指示所述应用满足在GPU上执行的一。
24、或多个准则的验证的装置。0011在另一实例中,本发明描述一种非暂时性计算机可读存储媒体,其包括指令,所述指令致使一或多个处理器接收将由装置的图形处理单元GPU执行的应用且将所述应用传输到在所述装置外部的服务器装置以用于验证所述应用。所述指令进一步致使所述处理器从所述服务器装置接收指示所述应用满足在GPU上执行的一或多个准则的验证。0012本发明的一或多个方面的细节在附图及以下描述中陈述。本发明的其它特征、目标和优点将从所述描述和图式且从权利要求书变得显而易见。附图说明0013图1是说明可操作以实施本发明的一或多个方面的系统的实例的框图。0014图2是说明可操作以实施本发明的一或多个方面的装置的。
25、实例操作的流程图。0015图3是说明可操作以实施本发明的一或多个方面的服务器的实例操作的流程图。0016图4是说明可操作以实施本发明的一或多个方面的服务器的另一实例操作的流程图。0017图5是进一步详细地说明图1中所说明的实例装置的框图。具体实施方式说明书CN104137076A3/18页90018一般来说,本发明涉及用以确保将在图形处理单元GPU上执行的应用的适当功能性的技术。一些先前的GPU仅包含固定功能硬件管线,其不提供编程能力。然而,为了增加功能灵活性,较新的GPU允许可编程着色器核心。举例来说,这些GPU执行例如顶点着色器及片段着色器等应用,所述应用执行先前委托给固定功能硬件管线的组。
26、件的功能。0019虽然可编程着色器核心允许功能灵活性,但它们也会招致GPU的误用或次最佳使用。举例来说,恶意开发者可能开发出产生拒绝服务攻击或病毒的应用。在一些例子中,可能不具有恶意意图的开发者可能仍然无意地开发低效或易于出错的应用。有问题的应用例如,恶意、低效或易于出错的应用可实质上破坏GPU或其中提供有GPU的装置的操作。0020本发明的技术可辅助在由GPU执行之前识别可能恶意的、低效的和/或易于出错的GPU执行的应用。举例来说,本发明的技术可针对于基于云的解决方案,其中在收容GPU的装置外部且经由一或多个网络连接而耦合到收容所述GPU的装置的服务器装置充当应用的执行的仿真器。所述服务器可。
27、仿真所述应用的结果,如同所述应用正在所述GPU上执行一般。基于所述结果,所述服务器可验证所述应用例如,确定程序是否为恶意的、低效的或易于出错的,且如此向收容GPU的装置进行指示。所述GPU可随后基于所接收的指示来执行所述应用。0021可存在服务器可执行验证过程来验证所述应用的各种方式。所述验证过程可为软件过程。所述软件过程可结合通用处理器和/或专用硬件来执行。举例来说,所述服务器可执行虚拟模型软件。所述虚拟模型致使所述服务器仿真所述GPU或包含所述应用将在其上执行的GPU的实际装置。在替代实例中,作为虚拟模型的替代或补充,所述服务器可包含硬件仿真板来验证所述应用。所述服务器还可包含经特定设计以。
28、测试由GPU执行的应用的安全违背的应用。0022为了验证将由GPU执行的应用,所述服务器可执行静态分析、动态分析,或其组合。静态分析涉及对可在不执行应用的情况下执行的所述应用的分析。举例来说,静态分析可在编译期间执行。在所述编译期间,所述服务器可识别所述应用中的错误,例如程序中的无限循环或对应用内的阵列位置的出界的存取作为两个非限制性实例。0023动态分析涉及在执行期间对应用的分析,其可另外导致识别出有问题的应用例如,恶意的、低效的且易于出错的应用。举例来说,所述服务器可执行经编译的代码,且所述服务器可向所执行的代码提供假定输入值。所述假定输入值可为例如不同的输入图像、具有不同大小的输入图像等。
29、。0024执行验证过程的所述服务器可监视由执行代码执行的结果和功能。举例来说,所述服务器可监视GPU的虚拟模型进行的存储器存取,且确定所述存储器存取是否为出界的存储器存取。所述服务器还可监视GPU的虚拟模型正在那里写入信息的存储器地址。基于GPU的虚拟模型的存储器存取及GPU的虚拟模型正在那里写入信息的存储器地址,所述服务器可能够确定所述应用是否为易于出错的。此类存储器跟踪在所述应用使用指针读取或写入到变量时可为特别有用的。0025所述服务器还可检测产生或实现拒绝服务攻击的应用。举例来说,所述服务器可监视GPU的虚拟模型能够执行所述应用的速率。如果所述服务器检测到缓慢响应、意外的终止,或悬挂,。
30、那么所述服务器可确定所述应用是针对拒绝服务攻击而设计的应用,或设计得非常差的应用。在任一情况下,此类应用的执行可能负面地影响用户的体验。说明书CN104137076A4/18页100026除了验证所述应用之外,在一些实例中,所述服务器可还能够调谐并优化所述应用。举例来说,所述服务器可插入或取代源代码,或源代码的部分,或收集统计数据以确定经编译的代码运作的良好程度。在一些实例中,所述服务器可一次验证所述应用且优化或调谐所述应用。所述装置可在用户想要的时候执行所述应用,而不需要进一步验证或优化。而且,在一些实例中,在验证某一应用之后,所述服务器可存储指示此应用已被验证的指示。如果所述服务器再次接受。
31、相同的源代码或预先编译的目标代码,那么所述服务器可首先确保所述代码是等同的,且如果是等同的,那么立即验证所述应用。0027图1是说明可为可操作的以实施本发明的一或多个方面的系统的实例的框图。举例来说,图1说明系统10,所述系统包含装置12、网络22、验证服务器装置24、及应用服务器装置38。虽然在图1中仅说明一个装置12、验证服务器装置24及应用服务器装置38,但在其它实例中,系统10可包含多个装置12、验证服务器24及应用服务器38。系统10可被称作基于云的系统以指示对应用20的验证发生在装置12外部的验证服务器装置24中,如更详细地描述。举例来说,本发明的技术可针对于验证云中例如,在装置1。
32、2外部的验证服务器装置24中的应用20。0028装置12的实例包含,但不限于,例如媒体播放器等视频装置、机顶盒、例如移动电话等无线手持机、个人数字助理PDA、桌上型计算机、膝上型计算机、游戏控制台、视频会议单元、平板计算装置等。验证服务器装置24的及应用服务器装置38的实例包含,但不限于,膝上型计算机、桌上型计算机、网络服务器等。一般来说,验证服务器装置24及应用服务器装置38可为能够执行归于本发明中的验证服务器装置24及应用服务器装置38的功能的任何类型的装置。0029网络22可允许装置12与验证服务器装置24及应用服务器装置38安全地通信。出于安全的目的,装置12与验证服务器装置24及应用。
33、服务器装置38之间的任何通信可经过加密或以其它方式受保护。而且,为了进一步保护,装置12与验证服务器装置24及应用服务器装置38之间的任何通信可需要用户授权。0030在一些实例中,网络22可确保由装置12、验证服务器装置24及应用服务器装置38中的任一者传输的信息仅由既定装置且不由其它装置接收。网络22可为局域网LAN、广域网WAN、因特网等。装置12、验证服务器装置24及应用服务器装置38可无线地或通过有线链路而耦合到网络22。在一些实例中,装置12可有可能直接耦合到验证服务器装置24和/或应用服务器装置38。举例来说,装置12可通过无线或有线连接直接与验证服务器装置24和/或应用服务器装置。
34、38通信。在这些实例中,系统10中可能不需要网络22。0031如图1中所说明,装置12可包含GPU14、处理器16及装置存储器18。装置12可包含除了图1中所说明的组件之外的组件。举例来说,图5说明包含比图1中所说明的组件更多的组件的装置12的实例。0032GPU14和处理器16的实例包含,但不限于,数字信号处理器DSP、通用微处理器、专用集成电路ASIC、现场可编程逻辑阵列FPGA或其它等效集成或离散逻辑电路。此外,虽然GPU14和处理器16被说明为单独的组件,但本发明的方面不限于此。在替代性实例中,GPU14和处理器16可为共同集成电路的部分。出于说明且易于描述的目的,GPU14和处理器1。
35、6被说明为单独的组件。0033装置存储器18的实例包含,但不限于,随机存取存储器RAM、只读存储器ROM,说明书CN104137076A105/18页11或电可擦除可编程只读存储器EEPROM。装置存储器18的实例还可包含例如CDROM或其它光盘存储装置、磁盘存储装置,或其它磁性存储装置、快闪存储器等存储装置。一般来说,装置存储器18可包含可用于以指令或数据结构的形式存储所需的程序代码且可由GPU14和处理器16存取的媒体。在一些实例中,装置存储器18可包括一或多个计算机可读存储媒体,例如计算机可读存储装置。举例来说,在一些实例实施方案中,装置存储器18可包含致使GPU14和处理器16执行归于。
36、本发明中的GPU14和处理器16的功能的指令。0034在一些实例中,装置存储器18可被视为非暂时性存储媒体。术语“非暂时性”可指示所述存储媒体未体现于载波或所传播信号中。然而,术语“非暂时性”不应被解释为意味着装置存储器18是非可移动的。作为一个实例,装置存储器18可从装置12被移除,且移动到另一装置。作为另一实例,大体上类似于装置存储器18的存储装置可插入到装置12中。在某些实例中,非暂时性存储媒体可存储可随着时间改变的数据例如,在RAM中。0035GPU14可为可操作的,以执行一或多个软件应用。举例来说,GPU14可包含处理器核心,一或多个软件应用可在所述处理器核心上执行。在GPU14上执。
37、行的应用可为用于产生图形数据的例如顶点着色器和片段着色器等图形应用。然而,在GPU14上执行的应用可有可能不与图形处理相关。举例来说,开发者可认为利用GPU14的大规模并行度可为有益的,且开发与利用GPU14的大规模并行度的图形处理无关的软件应用。在这些情况下,GPU14可被称作通用GPUGPGPU。0036作为一个实例,图1说明执行应用20的GPU14。应用20可为在GPU14上执行的图形应用或非图形应用。应用20以虚线框图示于GPU14内以指示应用20正在GPU14上执行。GPU14实际上不包含应用20。举例来说,应用20可存储在装置存储器18中,如图1中所说明。0037可使用广泛多种不同。
38、的编程应用处理接口API来开发应用20。举例来说,开发者可能已使用例如OPENGL、OPENCL、WEBGL和WEBCL等任何编程API开发出应用20。一般来说,使用OPENGL或WEBGLAPI开发的应用是针对图形处理而设计的。使用OPENCL或WEBCLAPI开发的应用是针对与图形处理无关的处理而设计的。OPENGL、OPENCL、WEBGL和WEBCLAPI是出于说明的目的而提供且不应被视为是限制性的。本发明的技术可以可扩展到除了上文提供的实例之外的API。一般来说,本发明的技术可以可扩展到开发者用于开发应用20的任何技术。0038如所说明,装置存储器18可存储应用20。举例来说,装置1。
39、2的用户可致使装置12经由网络22从应用服务器装置38下载应用20。装置12又可将应用20存储在装置存储器18中。可存在装置12将应用20存储在装置存储器18中的各种方式。举例来说,装置12的用户可将存储应用20的快闪驱动器插入到装置12中,且装置12可从快闪驱动器检索应用20且将应用20存储在装置存储器18中。在此实例中,可能不需要应用服务器装置38。描述装置12将应用20存储在装置存储器18中的方式的以上实例是出于说明的目的而提供,且不应被视为是限制性的。本发明的技术可适用于将应用20加载到装置存储器18中的任何技术。0039装置存储器18可存储应用20的源代码、应用20的中间表示,或应用。
40、20的目标代码。应用20的源代码可为按照在其中开发应用20的编程语言的文本。应用20的源代码可为由于对应用20的编译而产生的二进制位。举例来说,应用服务器装置38可编译应用说明书CN104137076A116/18页1220的源代码、且装置12可下载应用20的此经编译的目标代码。应用20的中间表示可为源代码与目标代码之间的中间物。举例来说,在应用20的中间表示中,应用20的源代码的变量可用寄存器或存储器识别符取代,所述变量将针对所述识别符存储在装置存储器18中。0040GPU14的可编程核心执行应用例如,应用20的能力增加了GPU14的功能性。然而,GPU14执行应用的能力可招致GPU14的误。
41、用或次最佳使用,且使得装置12更易受到恶意的应用或易于出错的应用影响。举例来说,仅在例如处理器16等中央处理单元CPU上执行的应用在虚拟机器环境中执行应用,所述虚拟机器环境分配装置存储器18的存储器的量及装置存储器18内的所述应用可存取的存储位置。因为所述应用受限于处理器16的虚拟机器,所以所述应用不能存取出界的存储器地址且被限制于存取由处理器16的虚拟机器特定提供给它的存储器地址。以此方式,在处理器16上执行的应用可难以通过负面的方式剧烈地影响处理器16且进而影响装置12。0041在一些例子中,在GPU14上实施虚拟机器可为不实际的。举例来说,GPU14的大规模并行处理能力可能不良好地适合于。
42、执行虚拟机器。举例来说,如果虚拟机器将在GPU14上执行,那么所述虚拟机器将支配GPU14的资源,有可能限制其它应用在GPU14上执行。因此,在一些例子中,虚拟机器可能不能够限制在GPU14上执行的恶意或易于出错的应用的负面影响。0042在GPU14上执行的应用例如,应用20可被视为“原生地”执行的应用即,不局限于虚拟机器。应用20的原生执行可允许应用20存取装置存储器18的较大部分。此存取可允许例如恶意的应用或较差设计的例如,易于出错的应用等有问题的应用负面地影响GPU14和装置12的性能能力。0043作为一个实例,应用20的开发者可开发应用20以使得应用20在被执行时引起拒绝对装置12的服。
43、务攻击,或传播影响装置12的性能的病毒。举例来说,当GPU14执行应用20时,应用20可控制GPU14以使得GPU14可能不能够执行任何其它任务,例如再现用于用户接口的图形内容。此可致使装置12“悬挂”,这可强烈地影响装置12的功能性。在一些情况下,应用20的开发者可开发应用20以存取装置存储器18的应被限制存取的部分。应用20可将用于病毒的指令存储在装置存储器18的这些部分中。随后,当处理器16或GPU14存取装置存储器18的这些部分时,处理器16或GPU14可无意地执行所存储的病毒。可存在恶意的应用的额外实例,且本发明的方面不应被视为受限于拒绝服务攻击或病毒。0044作为另一实例,应用20。
44、的开发者可能无意地开发应用20以使得应用20是低效的或易于出错的。举例来说,易于出错的应用可包含无限循环、对阵列的出界的存取,或对装置存储器18的存储器位置的出界的存取。低效的应用可能不会适当地利用GPU14的功能性。举例来说,低效的应用可能不会适当地使用GPU14的可编程功能性。0045在以下情况下,应用服务器装置38可潜在地对抗恶意的且易于出错的应用的少量保护。举例来说,应用服务器装置38的拥有者可保证存储在应用服务器装置38上的应用都不是恶意的或易于出错的应用。然而,在每个例子中可能不是这样例如,应用服务器装置38的拥有者可能未提供安全且适当操作的保证,或来自应用服务器装置38的拥有者的。
45、声称的“保证”可能并不可信。0046本发明的技术可辅助在执行之前识别将在GPU14上执行的应用例如,应用20说明书CN104137076A127/18页13是否为有问题的应用,例如恶意的应用以及低效的且易于出错的应用。举例来说,本发明的技术可在GPU14执行应用20之前验证应用20。对应用20的验证可意味着应用20满足一或多个性能准则。举例来说,验证可指以某一确保水平确定应用20不是恶意的应用、低效的应用,或易于出错的应用。本发明中所描述的技术可将指示传输到装置12,所述指示指示GPU14执行应用20是否为安全的或不妥当的。处理器16可随后基于所接收的指示而选择指令GPU14执行应用20。00。
46、47举例来说,在所述指示是有利的,即指示程序不是恶意的、不是低效的且/或不是易于出错的情况下,处理器16可指令GPU14执行应用20。在一些实例中,即使所述指示是不利的,处理器16也可指令GPU14执行应用20。举例来说,如果应用20不是恶意的或易于出错的,但是低效的,那么处理器16可指令GPU14执行应用20,因为此执行可潜在地不会伤害GPU14或装置12,但可能不够有效地执行。0048在一些实例中,本发明的技术还可调谐或以其它方式优化将在GPU14上执行的低效的应用。举例来说,应用20的开发者可能不具有任何恶意的意图,且可能已开发出应用20以使得应用20不易于出错。虽然如此,应用20可有可。
47、能不可有效地利用GPU14的资源。0049作为一个实例,应用20的功能中的一者可为将任务划分为多个工作群组,且对所述工作群组执行并行处理以利用GPU14的并行度。举例来说,应用20可将图像划分为多个块,且对所述块执行并行处理。块中的每一者的大小可基于GPU14上可用的本地存储器的量。0050因为应用20的开发者可能想要设计应用20以在多种不同的GPU上执行,所以所述开发者可能事先不知道特定GPU例如,GPU14上有多少可用的本地存储器,因为不同的GPU可包含不同量的本地存储器。为了解决这个问题,开发者可开发应用20来利用可变大小的块。在一些例子中,利用可变大小的块可能比利用固定大小的块低效。本。
48、发明的技术可调谐或优化应用20,使得应用20基于GPU14中的可用存储器的量来利用固定大小的块。0051作为另一实例,应用20可执行矩阵操作。应用20的开发者可能已开发出应用20来执行基于行的矩阵操作或基于列的矩阵操作。在一些例子中,与基于列的矩阵操作相比,GPU14可更好地适合于执行基于行的矩阵操作,或反之亦然。在此实例中,如果应用20使用基于列的矩阵操作,那么本发明的技术可修改应用20以执行基于行的矩阵操作,从而更有效地利用GPU14。0052作为又另一实例,开发者可能已针对GPU的较旧版本开发出应用20,且应用20可能未针对GPU14进行优化。本发明的技术可修改应用20以使得应用20针对。
49、较新的GPU例如,GPU14更加优化。GPU14可随后执行应用20,所述应用经优化以在较新的GPU上执行。0053根据本发明的技术,验证服务器装置24可验证应用20,且在一些实例中,优化或调谐应用20。为了验证应用20,验证服务器装置24可实施验证过程,所述验证过程确定应用20是否满足一或多个性能准则。举例来说,验证服务器装置24可以某一合理的确保水平确定应用20是否为恶意的应用、易于出错的应用,或低效的应用。在其中应用20是易于出错的应用或低效的应用的实例中,验证服务器装置24可尝试校正应用20中的错误,或优说明书CN104137076A138/18页14化应用20以更有效。0054一般可能。
50、难以绝对保证应用20不是有问题的应用,因为可能难以测量应用20可影响GPU14和装置12的所有各种方式。虽然应用20不是有问题的应用的绝对保证可能是困难的,但验证服务器装置24可使用不同类型的分析来以某一合理的肯定量来确保应用20不是有问题的应用。0055如图1中所说明,验证服务器装置24在装置12的外部。因此,应用20的验证及应用20的优化可从装置12卸载,其可被称作在“云”中验证应用20,因为验证服务器装置24是在装置12外部的服务器。通过将对应用20的验证卸载到验证服务器装置24,在其中应用20是恶意的应用或易于出错的应用的情况下,可减少应用20负面地影响GPU14和装置12的概率。而且。