用于图形处理单元的应用的验证.pdf

上传人:a*** 文档编号:177532 上传时间:2018-01-31 格式:PDF 页数:28 大小:1.69MB
返回 下载 相关 举报
摘要
申请专利号:

CN201380010829.3

申请日:

2013.01.30

公开号:

CN104137076A

公开日:

2014.11.05

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 11/07申请日:20130130|||公开

IPC分类号:

G06F11/07; G06F11/36; G06F21/53

主分类号:

G06F11/07

申请人:

高通股份有限公司

发明人:

阿列克谢·V·布尔德; 杰伊·春苏普·云

地址:

美国加利福尼亚州

优先权:

2012.02.27 US 13/406,272

专利代理机构:

北京律盟知识产权代理有限责任公司 11287

代理人:

宋献涛

PDF下载: PDF下载
内容摘要

本发明中所描述的技术针对于验证将在图形处理单元GPU上执行的应用。举例来说,验证服务器装置可接收所述应用的代码。所述验证服务器装置可提供所述应用满足一或多个性能准则的某一确保水平。以此方式,可减小有问题的应用在包含所述GPU的装置上执行的概率。

权利要求书

1.  一种方法,其包括:
使用服务器装置接收将由驻留于所述服务器装置外部的装置上的图形处理单元GPU执行的应用;
使用所述服务器装置执行以下各者中的至少一者:
在所述应用在所述服务器装置上的编译之前和期间对所述应用的分析;及
在所述应用在所述服务器装置上的执行期间对所述应用的分析;
基于所述分析中的至少一者来确定所述应用是否满足一或多个性能准则;及
在所述应用满足所述一或多个性能准则的情况下将对所述应用的验证传输到所述装置。

2.
  根据权利要求1所述的方法,其中所述性能准则包括以下各者中的至少一者:确定所述应用不存在恶意的代码,及确定所述应用不是易于出错的。

3.
  根据权利要求1所述的方法,其中所述性能准则包含以下各者中的一或多者:确定所述应用的代码不包含已知病毒的代码、确定在所述应用的所述代码的编译期间确定未发现错误、确定在所述应用的执行期间确定不存在出界的存储器存取、确定在所述应用的执行期间确定所述装置的系统总线未过载、确定所述应用的任务在阈值执行时间内完成执行,及确定所述应用的所述任务至少以阈值执行速率执行。

4.
  根据权利要求1所述的方法,其中在编译之前和期间执行对所述应用的所述分析包括将所述应用的代码与已知病毒的代码进行比较,且确定在所述应用的所述代码的编译期间是否发现任何错误。

5.
  根据权利要求1所述的方法,其中在所述应用的执行期间执行对所述应用的所述分析包括:
执行虚拟GPU模型;
在所述虚拟GPU模型上执行所述应用;及
在所述应用在所述GPU模型上的所述执行期间分析所述虚拟GPU模型的功能性。

6.
  根据权利要求5所述的方法,其进一步包括:
执行虚拟装置模型;及
在所述应用在所述GPU模型上的所述执行期间分析所述虚拟装置模型的功能性。

7.
  根据权利要求5所述的方法,其中在所述虚拟GPU模型上执行所述应用包括将GPU输入输入到在所述虚拟GPU模型上执行的所述应用。

8.
  根据权利要求5所述的方法,其进一步包括:
监视由所述所执行的应用执行的功能。

9.
  根据权利要求8所述的方法,其中监视功能包括以下各者中的一或多者:监视所述所执行的应用进行的存储器存取、监视执行的速率,及监视执行时间。

10.
  根据权利要求1所述的方法,其进一步包括:
修改所述应用的代码;及
将所述应用的所述经修改的代码传输到所述装置。

11.
  根据权利要求10所述的方法,其进一步包括:
确定所述应用将在所述GPU上低效地执行,
其中修改所述应用的所述代码包括基于所述确定来修改所述应用的所述代码。

12.
  根据权利要求1所述的方法,其中在所述应用的执行期间执行对所述应用的所述分析包括:
在硬件仿真板上执行所述应用;及
在所述执行期间分析所述硬件仿真板的功能性。

13.
  根据权利要求1所述的方法,其中接收所述应用包括接收所述应用的源代码和中间代码中的至少一者,所述方法进一步包括:
编译所述应用的所述源代码和所述中间代码中的至少一者以产生所述应用的目标代码;及
将所述应用的所述目标代码传输到所述装置。

14.
  一种设备,其包括:
仿真器单元,其可操作以:
接收将由驻留于所述设备外部的装置上的图形处理单元GPU执行的应用;
执行以下各者中的至少一者:
在所述应用在所述设备上的编译之前和期间对所述应用的分析;及
在所述应用在所述设备上的执行期间对所述应用的分析;
基于所述分析中的至少一者来确定所述应用是否满足一或多个性能准则;及
在所述应用满足所述一或多个性能准则的情况下将对所述应用的验证传输到所述装置。

15.
  根据权利要求14所述的设备,其中所述性能准则包括以下各者中的至少一者:确定所述应用不存在恶意的代码,及确定所述应用不是易于出错的。

16.
  根据权利要求14所述的设备,其中所述性能准则包含以下各者中的一或多者:确定所述应用的代码不包含已知病毒的代码、确定在所述应用的所述代码的编译期间确定未发现错误、确定在所述应用的执行期间确定不存在出界的存储器存取、确定在所述应用的执行期间确定所述装置的系统总线未过载、确定所述应用的任务在阈值执行时间内完成执行,及确定所述应用的所述任务至少以阈值执行速率执行。

17.
  根据权利要求14所述的设备,其中所述仿真器单元将所述应用的代码与已知病毒的代码进行比较,且确定在所述应用的所述代码的编译期间是否发现任何错误,以在编译之前和期间执行对所述应用的所述分析。

18.
  根据权利要求14所述的设备,其进一步包括存储器,其中为了在所述应用的执行期间执行对所述应用的所述分析,所述仿真器单元可操作以:
执行存储在所述存储器中的虚拟GPU模型;
在所述虚拟GPU模型上执行所述应用;及
在所述应用在所述GPU模型上的所述执行期间分析所述虚拟GPU模型的功能性。

19.
  根据权利要求18所述的设备,其中所述仿真器单元进一步可操作以:
执行存储在所述存储器中的虚拟装置模型;及
在所述应用在所述GPU模型上的所述执行期间分析所述虚拟装置模型的功能性。

20.
  根据权利要求18所述的设备,其进一步包括存储器,其中所述仿真器单元在所述应用在所述虚拟GPU模型上的所述执行期间将存储在所述存储器中的GPU输入输入到在所述虚拟GPU模型上执行的所述应用。

21.
  根据权利要求18所述的设备,其中所述仿真器单元进一步可操作以监视由所述所执行的应用执行的功能。

22.
  根据权利要求21所述的设备,其中所述仿真器单元可操作以监视以下各者中的一或多者:所述所执行的应用进行的存储器存取、执行的速率,及执行时间。

23.
  根据权利要求14所述的设备,其中所述仿真器单元进一步可操作以:
修改所述应用的代码;及
将所述应用的所述经修改的代码传输到所述装置。

24.
  根据权利要求23所述的设备,其中所述仿真器单元进一步可操作以确定所述应用将在所述GPU上低效地执行,且基于所述确定来修改所述应用的所述代码。

25.
  根据权利要求14所述的设备,其中所述仿真器单元包括硬件仿真板,且其中所述硬件仿真板执行所述应用以在所述应用的执行期间执行对所述应用的所述分析。

26.
  根据权利要求14所述的设备,其中所述仿真器单元接收所述应用的源代码和中间代码中的至少一者,且其中所述仿真器单元进一步可操作以:
编译所述应用的所述源代码和所述中间代码中的至少一者以产生所述应用的目标代码;及
将所述应用的所述目标代码传输到所述装置。

27.
  一种服务器装置,其包括:
用于接收将由驻留于所述服务器装置外部的装置上的图形处理单元GPU执行的应用的装置;
用于执行以下各者中的至少一者的装置:
在所述应用在所述服务器装置上的编译之前和期间对所述应用的分析;及
在所述应用在所述服务器装置上的执行期间对所述应用的分析;
用于基于所述分析中的至少一者来确定所述应用是否满足一或多个性能准则的装置;及
用于在所述应用满足所述一或多个性能准则的情况下将对所述应用的验证传输到所述装置的装置。

28.
  一种非暂时性计算机可读存储媒体,其包括致使一或多个处理器进行以下操作的指令:
使用服务器装置接收将由驻留于所述服务器装置外部的装置上的图形处理单元GPU执行的应用;
使用所述服务器装置执行以下各者中的至少一者:
在所述应用在所述服务器装置上的编译之前和期间对所述应用的分析;及
在所述应用在所述服务器装置上的执行期间对所述应用的分析;
基于所述分析中的至少一者来确定所述应用是否满足一或多个性能准则;及
在所述应用满足所述一或多个性能准则的情况下将对所述应用的验证传输到所述装置。

29.
  一种方法,其包括:
接收将由装置的图形处理单元GPU执行的应用;
将所述应用传输到在所述装置外部的服务器装置以用于验证所述应用;及
从所述服务器装置接收指示所述应用满足在所述GPU上执行的一或多个准则的验证。

30.
  根据权利要求29所述的方法,其进一步包括:
基于所述所接收的验证在所述GPU上执行所述应用。

31.
  根据权利要求29所述的方法,其中接收所述应用包括接收以下各者中的至少一者:所述应用的源代码、所述应用的中间代码,及所述应用的经编译的代码,且其中传输所述应用包括传输以下各者中的至少一者:所述应用的所述源代码、所述应用的中间代码,及所述应用的所述经编译的代码。

32.
  根据权利要求29所述的方法,其进一步包括:
从所述服务器装置接收所述应用的经修改的版本;及
在所述GPU上执行所述应用的所述经修改的版本。

33.
  根据权利要求29所述的方法,其中传输所述应用包括传输所述应用的源代码和所述应用的中间代码中的至少一者,所述方法进一步包括:
从所述服务器装置接收所述应用的经编译的目标代码;及
在所述GPU上执行所述应用的所述经编译的目标代码。

34.
  根据权利要求29所述的方法,其中将所述应用传输到所述服务器装置包括仅将所述应用传输到所述服务器装置一次,且其中从所述服务器装置接收所述验证包括仅从所述服务器装置接收所述验证一次。

35.
  一种设备,其包括:
图形处理单元GPU;
装置存储器,其可操作以存储将由所述GPU执行的应用;及
处理器,其可操作以:
将所述应用传输到在所述设备外部的服务器装置;及
从所述服务器装置接收指示所述应用满足在所述GPU上执行的一或多个准则的验证。

36.
  根据权利要求35所述的设备,其中所述处理器进一步可操作以指令所述GPU基于所述所接收的验证而执行所述应用,且其中所述GPU可操作以响应于来自所述处理器的所述指令而执行所述应用。

37.
  根据权利要求35所述的设备,其中所述处理器接收以下各者中的至少一者:所述 应用的源代码、所述应用的中间代码,及所述应用的经编译的代码,且其中所述处理器传输以下各者中的至少一者:所述应用的所述源代码、所述应用的中间代码,及所述应用的所述经编译的代码。

38.
  根据权利要求35所述的设备,其中所述处理器进一步可操作以从所述服务器装置接收所述应用的经修改的版本,且其中所述GPU进一步可操作以执行所述应用的所述经修改的版本。

39.
  根据权利要求35所述的设备,其中所述处理器传输所述应用的源代码和所述应用的中间代码中的至少一者,其中所述处理器进一步可操作以接收所述应用的经编译的目标代码,且其中所述GPU进一步可操作以执行所述应用的所述经编译的目标代码。

40.
  根据权利要求35所述的设备,其中所述处理器仅将所述应用传输到所述服务器装置一次,且其中所述处理器仅从所述服务器装置接收所述验证一次。

41.
  一种装置,其包括:
图形处理单元GPU;
用于接收将由所述GPU执行的应用的装置;
用于将所述应用传输到在所述装置外部的服务器装置以用于验证所述应用的装置;及
用于从所述服务器装置接收指示所述应用满足在所述GPU上执行的一或多个准则的验证的装置。

42.
  一种非暂时性计算机可读存储媒体,其包括致使一或多个处理器进行以下操作的指令:
接收将由装置的图形处理单元GPU执行的应用;
将所述应用传输到在所述装置外部的服务器装置以用于验证所述应用;及
从所述服务器装置接收指示所述应用满足在所述GPU上执行的一或多个准则的验证。

说明书

用于图形处理单元的应用的验证
技术领域
本发明针对于在图形处理单元(GPU)上执行的应用,且更特定来说,针对于此些应用的验证。
背景技术
图形处理单元(GPU)传统上已经受限于仅在固定功能管线中执行图形相关处理,这提供非常有限的功能灵活性。较新的GPU包含执行程序的可编程核心,且进而提供与传统GPU相比的更大的功能灵活性。所述可编程核心可执行图形相关应用和非图形相关应用两者。
发明内容
一般来说,本发明涉及用于在执行之前识别将在图形处理单元(GPU)上执行的潜在有问题的应用。有问题的应用的实例包含,但不限于,恶意应用以及低效或者易于出错的应用。举例来说,在收容GPU的装置外部的服务器装置可验证所述应用。对所述应用的验证可意味着所述应用满足一或多个准则。作为一个实例,验证可指以某一确保水平确定所述应用不是恶意应用、易于出错的应用,或低效的应用。所述服务器装置可将指示传输到所述装置,所述指示指示GPU执行所述应用是否为安全的或不妥当的。所述装置可随后基于所接收的指示而选择在GPU上执行程序。
在一个实例中,本发明描述一种方法,其包含使用服务器装置接收将由驻留于所述服务器装置外部的装置上的图形处理单元(GPU)执行的应用。所述方法还包含使用所述服务器装置执行以下各者中的至少一者:在所述应用在所述服务器装置上的编译之前和期间执行对所述应用的分析,及在所述应用在所述服务器装置上的执行期间执行对所述应用的分析。所述方法进一步包含基于所述分析中的至少一者来确定所述应用是否满足一或多个性能准则,且在所述应用满足所述一或多个性能准则的情况下将对所述应用的验证传输到所述装置。
在另一实例中,本发明描述一种设备,其包含仿真器单元,所述仿真器单元可操作 以接收将由驻留于所述设备外部的装置上的图形处理单元(GPU)执行的应用。所述仿真器单元还可操作以执行以下各者中的至少一者:在所述应用在所述设备上的编译之前和期间执行对所述应用的分析,及在所述应用在所述设备上的执行期间执行对所述应用的分析。所述仿真器单元还可操作以基于所述分析中的至少一者来确定所述应用是否满足一或多个性能准则,且在所述应用满足所述一或多个性能准则的情况下将对所述应用的验证传输到所述装置。
在另一实例中,本发明描述一种服务器装置,其包含用于接收将由驻留于所述服务器装置外部的装置上的图形处理单元(GPU)执行的应用的装置。所述服务器装置还包含用于执行以下各者中的至少一者的装置:在所述应用在所述服务器装置上的编译之前和期间执行对所述应用的分析,及在所述应用在所述服务器装置上的执行期间执行对所述应用的分析。所述服务器装置进一步包含用于基于所述分析中的至少一者来确定所述应用是否满足一或多个性能准则的装置,及用于在所述应用满足所述一或多个性能准则的情况下将对所述应用的验证传输到所述装置的装置。
在另一实例中,本发明描述一种非暂时性计算机可读存储媒体,其包括指令,所述指令致使一或多个处理器使用服务器装置接收将由驻留于所述服务器装置外部的装置上的图形处理单元(GPU)执行的应用。所述指令进一步致使一或多个处理器使用所述服务器装置执行以下各者中的至少一者:在所述应用在所述服务器装置上的编译之前和期间执行对所述应用的分析,及在所述应用在所述服务器装置上的执行期间执行对所述应用的分析。所述指令还致使所述一或多个处理器基于所述分析中的至少一者来确定所述应用是否满足一或多个性能准则,且在所述应用满足所述一或多个性能准则的情况下将对所述应用的验证传输到所述装置。
在另一实例中,本发明描述一种方法,其包含接收将由装置的图形处理单元(GPU)执行的应用,且将所述应用传输到在所述装置外部的服务器装置以用于验证所述应用。所述方法进一步包含从所述服务器装置接收指示所述应用满足在GPU上执行的一或多个准则的验证。
在另一实例中,本发明描述一种设备,其包含图形处理单元(GPU)及可操作以存储将由所述GPU执行的应用的装置。所述设备还包含处理器,所述处理器可操作以将所述应用传输到在所述设备外部的服务器装置,且从所述服务器装置接收指示所述应用满足在GPU上执行的一或多个准则的验证。
在另一实例中,本发明描述一种包含图形处理单元(GPU)的装置。所述装置还包含用于接收将由所述GPU执行的应用的装置,及用于将所述应用传输到在所述装置外部 的服务器装置以用于验证所述应用的装置。所述装置进一步包含用于从所述服务器装置接收指示所述应用满足在GPU上执行的一或多个准则的验证的装置。
在另一实例中,本发明描述一种非暂时性计算机可读存储媒体,其包括指令,所述指令致使一或多个处理器接收将由装置的图形处理单元(GPU)执行的应用且将所述应用传输到在所述装置外部的服务器装置以用于验证所述应用。所述指令进一步致使所述处理器从所述服务器装置接收指示所述应用满足在GPU上执行的一或多个准则的验证。
本发明的一或多个方面的细节在附图及以下描述中陈述。本发明的其它特征、目标和优点将从所述描述和图式且从权利要求书变得显而易见。
附图说明
图1是说明可操作以实施本发明的一或多个方面的系统的实例的框图。
图2是说明可操作以实施本发明的一或多个方面的装置的实例操作的流程图。
图3是说明可操作以实施本发明的一或多个方面的服务器的实例操作的流程图。
图4是说明可操作以实施本发明的一或多个方面的服务器的另一实例操作的流程图。
图5是进一步详细地说明图1中所说明的实例装置的框图。
具体实施方式
一般来说,本发明涉及用以确保将在图形处理单元(GPU)上执行的应用的适当功能性的技术。一些先前的GPU仅包含固定功能硬件管线,其不提供编程能力。然而,为了增加功能灵活性,较新的GPU允许可编程着色器核心。举例来说,这些GPU执行例如顶点着色器及片段着色器等应用,所述应用执行先前委托给固定功能硬件管线的组件的功能。
虽然可编程着色器核心允许功能灵活性,但它们也会招致GPU的误用或次最佳使用。举例来说,恶意开发者可能开发出产生拒绝服务攻击或病毒的应用。在一些例子中,可能不具有恶意意图的开发者可能仍然无意地开发低效或易于出错的应用。有问题的应用(例如,恶意、低效或易于出错的应用)可实质上破坏GPU或其中提供有GPU的装置的操作。
本发明的技术可辅助在由GPU执行之前识别可能恶意的、低效的和/或易于出错的GPU执行的应用。举例来说,本发明的技术可针对于基于云的解决方案,其中在收容GPU的装置外部且经由一或多个网络连接而耦合到收容所述GPU的装置的服务器装置 充当应用的执行的仿真器。所述服务器可仿真所述应用的结果,如同所述应用正在所述GPU上执行一般。基于所述结果,所述服务器可验证所述应用(例如,确定程序是否为恶意的、低效的或易于出错的),且如此向收容GPU的装置进行指示。所述GPU可随后基于所接收的指示来执行所述应用。
可存在服务器可执行验证过程来验证所述应用的各种方式。所述验证过程可为软件过程。所述软件过程可结合通用处理器和/或专用硬件来执行。举例来说,所述服务器可执行虚拟模型软件。所述虚拟模型致使所述服务器仿真所述GPU或包含所述应用将在其上执行的GPU的实际装置。在替代实例中,作为虚拟模型的替代或补充,所述服务器可包含硬件仿真板来验证所述应用。所述服务器还可包含经特定设计以测试由GPU执行的应用的安全违背的应用。
为了验证将由GPU执行的应用,所述服务器可执行静态分析、动态分析,或其组合。静态分析涉及对可在不执行应用的情况下执行的所述应用的分析。举例来说,静态分析可在编译期间执行。在所述编译期间,所述服务器可识别所述应用中的错误,例如程序中的无限循环或对应用内的阵列位置的出界的存取(作为两个非限制性实例)。
动态分析涉及在执行期间对应用的分析,其可另外导致识别出有问题的应用(例如,恶意的、低效的且易于出错的应用)。举例来说,所述服务器可执行经编译的代码,且所述服务器可向所执行的代码提供假定输入值。所述假定输入值可为(例如)不同的输入图像、具有不同大小的输入图像等。
执行验证过程的所述服务器可监视由执行代码执行的结果和功能。举例来说,所述服务器可监视GPU的虚拟模型进行的存储器存取,且确定所述存储器存取是否为出界的存储器存取。所述服务器还可监视GPU的虚拟模型正在那里写入信息的存储器地址。基于GPU的虚拟模型的存储器存取及GPU的虚拟模型正在那里写入信息的存储器地址,所述服务器可能够确定所述应用是否为易于出错的。此类存储器跟踪在所述应用使用指针读取或写入到变量时可为特别有用的。
所述服务器还可检测产生或实现拒绝服务攻击的应用。举例来说,所述服务器可监视GPU的虚拟模型能够执行所述应用的速率。如果所述服务器检测到缓慢响应、意外的终止,或悬挂,那么所述服务器可确定所述应用是针对拒绝服务攻击而设计的应用,或设计得非常差的应用。在任一情况下,此类应用的执行可能负面地影响用户的体验。
除了验证所述应用之外,在一些实例中,所述服务器可还能够调谐并优化所述应用。举例来说,所述服务器可插入或取代源代码,或源代码的部分,或收集统计数据以确定经编译的代码运作的良好程度。在一些实例中,所述服务器可一次验证所述应用且优化 或调谐所述应用。所述装置可在用户想要的时候执行所述应用,而不需要进一步验证或优化。而且,在一些实例中,在验证某一应用之后,所述服务器可存储指示此应用已被验证的指示。如果所述服务器再次接受相同的源代码或预先编译的目标代码,那么所述服务器可首先确保所述代码是等同的,且如果是等同的,那么立即验证所述应用。
图1是说明可为可操作的以实施本发明的一或多个方面的系统的实例的框图。举例来说,图1说明系统10,所述系统包含装置12、网络22、验证服务器装置24、及应用服务器装置38。虽然在图1中仅说明一个装置12、验证服务器装置24及应用服务器装置38,但在其它实例中,系统10可包含多个装置12、验证服务器24及应用服务器38。系统10可被称作基于云的系统以指示对应用20的验证发生在装置12外部的验证服务器装置24中,如更详细地描述。举例来说,本发明的技术可针对于验证云中(例如,在装置12外部的验证服务器装置24中)的应用20。
装置12的实例包含,但不限于,例如媒体播放器等视频装置、机顶盒、例如移动电话等无线手持机、个人数字助理(PDA)、桌上型计算机、膝上型计算机、游戏控制台、视频会议单元、平板计算装置等。验证服务器装置24的及应用服务器装置38的实例包含,但不限于,膝上型计算机、桌上型计算机、网络服务器等。一般来说,验证服务器装置24及应用服务器装置38可为能够执行归于本发明中的验证服务器装置24及应用服务器装置38的功能的任何类型的装置。
网络22可允许装置12与验证服务器装置24及应用服务器装置38安全地通信。出于安全的目的,装置12与验证服务器装置24及应用服务器装置38之间的任何通信可经过加密或以其它方式受保护。而且,为了进一步保护,装置12与验证服务器装置24及应用服务器装置38之间的任何通信可需要用户授权。
在一些实例中,网络22可确保由装置12、验证服务器装置24及应用服务器装置38中的任一者传输的信息仅由既定装置且不由其它装置接收。网络22可为局域网(LAN)、广域网(WAN)、因特网等。装置12、验证服务器装置24及应用服务器装置38可无线地或通过有线链路而耦合到网络22。在一些实例中,装置12可有可能直接耦合到验证服务器装置24和/或应用服务器装置38。举例来说,装置12可通过无线或有线连接直接与验证服务器装置24和/或应用服务器装置38通信。在这些实例中,系统10中可能不需要网络22。
如图1中所说明,装置12可包含GPU 14、处理器16及装置存储器18。装置12可包含除了图1中所说明的组件之外的组件。举例来说,图5说明包含比图1中所说明的组件更多的组件的装置12的实例。
GPU 14和处理器16的实例包含,但不限于,数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效集成或离散逻辑电路。此外,虽然GPU 14和处理器16被说明为单独的组件,但本发明的方面不限于此。在替代性实例中,GPU 14和处理器16可为共同集成电路的部分。出于说明且易于描述的目的,GPU 14和处理器16被说明为单独的组件。
装置存储器18的实例包含,但不限于,随机存取存储器(RAM)、只读存储器(ROM),或电可擦除可编程只读存储器(EEPROM)。装置存储器18的实例还可包含例如CD-ROM或其它光盘存储装置、磁盘存储装置,或其它磁性存储装置、快闪存储器等存储装置。一般来说,装置存储器18可包含可用于以指令或数据结构的形式存储所需的程序代码且可由GPU 14和处理器16存取的媒体。在一些实例中,装置存储器18可包括一或多个计算机可读存储媒体,例如计算机可读存储装置。举例来说,在一些实例实施方案中,装置存储器18可包含致使GPU 14和处理器16执行归于本发明中的GPU 14和处理器16的功能的指令。
在一些实例中,装置存储器18可被视为非暂时性存储媒体。术语“非暂时性”可指示所述存储媒体未体现于载波或所传播信号中。然而,术语“非暂时性”不应被解释为意味着装置存储器18是非可移动的。作为一个实例,装置存储器18可从装置12被移除,且移动到另一装置。作为另一实例,大体上类似于装置存储器18的存储装置可插入到装置12中。在某些实例中,非暂时性存储媒体可存储可随着时间改变的数据(例如,在RAM中)。
GPU 14可为可操作的,以执行一或多个软件应用。举例来说,GPU 14可包含处理器核心,一或多个软件应用可在所述处理器核心上执行。在GPU 14上执行的应用可为用于产生图形数据的例如顶点着色器和片段着色器等图形应用。然而,在GPU 14上执行的应用可有可能不与图形处理相关。举例来说,开发者可认为利用GPU 14的大规模并行度可为有益的,且开发与利用GPU 14的大规模并行度的图形处理无关的软件应用。在这些情况下,GPU 14可被称作通用GPU(GP-GPU)。
作为一个实例,图1说明执行应用20的GPU 14。应用20可为在GPU 14上执行的图形应用或非图形应用。应用20以虚线框图示于GPU 14内以指示应用20正在GPU 14上执行。GPU 14实际上不包含应用20。举例来说,应用20可存储在装置存储器18中,如图1中所说明。
可使用广泛多种不同的编程应用处理接口(API)来开发应用20。举例来说,开发者可能已使用例如OpenGL、OpenCL、WebGL和WebCL等任何编程API开发出应用20。 一般来说,使用OpenGL或WebGL API开发的应用是针对图形处理而设计的。使用OpenCL或WebCL API开发的应用是针对与图形处理无关的处理而设计的。OpenGL、OpenCL、WebGL和WebCLAPI是出于说明的目的而提供且不应被视为是限制性的。本发明的技术可以可扩展到除了上文提供的实例之外的API。一般来说,本发明的技术可以可扩展到开发者用于开发应用20的任何技术。
如所说明,装置存储器18可存储应用20。举例来说,装置12的用户可致使装置12经由网络22从应用服务器装置38下载应用20。装置12又可将应用20存储在装置存储器18中。可存在装置12将应用20存储在装置存储器18中的各种方式。举例来说,装置12的用户可将存储应用20的快闪驱动器插入到装置12中,且装置12可从快闪驱动器检索应用20且将应用20存储在装置存储器18中。在此实例中,可能不需要应用服务器装置38。描述装置12将应用20存储在装置存储器18中的方式的以上实例是出于说明的目的而提供,且不应被视为是限制性的。本发明的技术可适用于将应用20加载到装置存储器18中的任何技术。
装置存储器18可存储应用20的源代码、应用20的中间表示,或应用20的目标代码。应用20的源代码可为按照在其中开发应用20的编程语言的文本。应用20的源代码可为由于对应用20的编译而产生的二进制位。举例来说,应用服务器装置38可编译应用20的源代码、且装置12可下载应用20的此经编译的目标代码。应用20的中间表示可为源代码与目标代码之间的中间物。举例来说,在应用20的中间表示中,应用20的源代码的变量可用寄存器或存储器识别符取代,所述变量将针对所述识别符存储在装置存储器18中。
GPU 14的可编程核心执行应用(例如,应用20)的能力增加了GPU 14的功能性。然而,GPU 14执行应用的能力可招致GPU 14的误用或次最佳使用,且使得装置12更易受到恶意的应用或易于出错的应用影响。举例来说,仅在例如处理器16等中央处理单元(CPU)上执行的应用在虚拟机器环境中执行应用,所述虚拟机器环境分配装置存储器18的存储器的量及装置存储器18内的所述应用可存取的存储位置。因为所述应用受限于处理器16的虚拟机器,所以所述应用不能存取出界的存储器地址且被限制于存取由处理器16的虚拟机器特定提供给它的存储器地址。以此方式,在处理器16上执行的应用可难以通过负面的方式剧烈地影响处理器16且进而影响装置12。
在一些例子中,在GPU 14上实施虚拟机器可为不实际的。举例来说,GPU 14的大规模并行处理能力可能不良好地适合于执行虚拟机器。举例来说,如果虚拟机器将在GPU 14上执行,那么所述虚拟机器将支配GPU 14的资源,有可能限制其它应用在GPU 14上执行。因此,在一些例子中,虚拟机器可能不能够限制在GPU 14上执行的恶意或易于出错的应用的负面影响。
在GPU 14上执行的应用(例如,应用20)可被视为“原生地”执行的应用(即,不局限于虚拟机器)。应用20的原生执行可允许应用20存取装置存储器18的较大部分。此存取可允许例如恶意的应用或较差设计的(例如,易于出错的)应用等有问题的应用负面地影响GPU 14和装置12的性能能力。
作为一个实例,应用20的开发者可开发应用20以使得应用20在被执行时引起拒绝对装置12的服务攻击,或传播影响装置12的性能的病毒。举例来说,当GPU 14执行应用20时,应用20可控制GPU 14以使得GPU 14可能不能够执行任何其它任务,例如再现用于用户接口的图形内容。此可致使装置12“悬挂”,这可强烈地影响装置12的功能性。在一些情况下,应用20的开发者可开发应用20以存取装置存储器18的应被限制存取的部分。应用20可将用于病毒的指令存储在装置存储器18的这些部分中。随后,当处理器16或GPU 14存取装置存储器18的这些部分时,处理器16或GPU 14可无意地执行所存储的病毒。可存在恶意的应用的额外实例,且本发明的方面不应被视为受限于拒绝服务攻击或病毒。
作为另一实例,应用20的开发者可能无意地开发应用20以使得应用20是低效的或易于出错的。举例来说,易于出错的应用可包含无限循环、对阵列的出界的存取,或对装置存储器18的存储器位置的出界的存取。低效的应用可能不会适当地利用GPU 14的功能性。举例来说,低效的应用可能不会适当地使用GPU 14的可编程功能性。
在以下情况下,应用服务器装置38可潜在地对抗恶意的且易于出错的应用的少量保护。举例来说,应用服务器装置38的拥有者可保证存储在应用服务器装置38上的应用都不是恶意的或易于出错的应用。然而,在每个例子中可能不是这样(例如,应用服务器装置38的拥有者可能未提供安全且适当操作的保证),或来自应用服务器装置38的拥有者的声称的“保证”可能并不可信。
本发明的技术可辅助在执行之前识别将在GPU 14上执行的应用(例如,应用20)是否为有问题的应用,例如恶意的应用以及低效的且易于出错的应用。举例来说,本发明的技术可在GPU 14执行应用20之前验证应用20。对应用20的验证可意味着应用20满足一或多个性能准则。举例来说,验证可指以某一确保水平确定应用20不是恶意的应用、低效的应用,或易于出错的应用。本发明中所描述的技术可将指示传输到装置12,所述指示指示GPU 14执行应用20是否为安全的或不妥当的。处理器16可随后基于所接收的指示而选择指令GPU 14执行应用20。
举例来说,在所述指示是有利的,即指示程序不是恶意的、不是低效的且/或不是易于出错的情况下,处理器16可指令GPU 14执行应用20。在一些实例中,即使所述指示是不利的,处理器16也可指令GPU 14执行应用20。举例来说,如果应用20不是恶意的或易于出错的,但是低效的,那么处理器16可指令GPU 14执行应用20,因为此执行可潜在地不会伤害GPU 14或装置12,但可能不够有效地执行。
在一些实例中,本发明的技术还可调谐或以其它方式优化将在GPU 14上执行的低效的应用。举例来说,应用20的开发者可能不具有任何恶意的意图,且可能已开发出应用20以使得应用20不易于出错。虽然如此,应用20可有可能不可有效地利用GPU 14的资源。
作为一个实例,应用20的功能中的一者可为将任务划分为多个工作群组,且对所述工作群组执行并行处理以利用GPU 14的并行度。举例来说,应用20可将图像划分为多个块,且对所述块执行并行处理。块中的每一者的大小可基于GPU 14上可用的本地存储器的量。
因为应用20的开发者可能想要设计应用20以在多种不同的GPU上执行,所以所述开发者可能事先不知道特定GPU(例如,GPU 14)上有多少可用的本地存储器,因为不同的GPU可包含不同量的本地存储器。为了解决这个问题,开发者可开发应用20来利用可变大小的块。在一些例子中,利用可变大小的块可能比利用固定大小的块低效。本发明的技术可调谐或优化应用20,使得应用20基于GPU 14中的可用存储器的量来利用固定大小的块。
作为另一实例,应用20可执行矩阵操作。应用20的开发者可能已开发出应用20来执行基于行的矩阵操作或基于列的矩阵操作。在一些例子中,与基于列的矩阵操作相比,GPU 14可更好地适合于执行基于行的矩阵操作,或反之亦然。在此实例中,如果应用20使用基于列的矩阵操作,那么本发明的技术可修改应用20以执行基于行的矩阵操作,从而更有效地利用GPU 14。
作为又另一实例,开发者可能已针对GPU的较旧版本开发出应用20,且应用20可能未针对GPU 14进行优化。本发明的技术可修改应用20以使得应用20针对较新的GPU(例如,GPU 14)更加优化。GPU 14可随后执行应用20,所述应用经优化以在较新的GPU上执行。
根据本发明的技术,验证服务器装置24可验证应用20,且在一些实例中,优化或调谐应用20。为了验证应用20,验证服务器装置24可实施验证过程,所述验证过程确定应用20是否满足一或多个性能准则。举例来说,验证服务器装置24可以某一合理的 确保水平确定应用20是否为恶意的应用、易于出错的应用,或低效的应用。在其中应用20是易于出错的应用或低效的应用的实例中,验证服务器装置24可尝试校正应用20中的错误,或优化应用20以更有效。
一般可能难以绝对保证应用20不是有问题的应用,因为可能难以测量应用20可影响GPU 14和装置12的所有各种方式。虽然应用20不是有问题的应用的绝对保证可能是困难的,但验证服务器装置24可使用不同类型的分析来以某一合理的肯定量来确保应用20不是有问题的应用。
如图1中所说明,验证服务器装置24在装置12的外部。因此,应用20的验证及应用20的优化可从装置12卸载,其可被称作在“云”中验证应用20,因为验证服务器装置24是在装置12外部的服务器。通过将对应用20的验证卸载到验证服务器装置24,在其中应用20是恶意的应用或易于出错的应用的情况下,可减少应用20负面地影响GPU 14和装置12的概率。而且,通过将对应用20的优化卸载到验证服务器装置24,可实现电力节约和处理效率,因为处理器16不需要消耗验证或优化应用20的电力和时钟循坏。
可存在应用20可能需要满足以供验证服务器装置24验证应用20的性能准则的各种实例。一般来说,性能准则可为统计分析、动态分析或其组合的部分。统计分析是指对可在不执行应用20的情况下执行的应用20的分析,以确保应用20满足与统计分析相关联的一或多个性能准则。动态分析是指在执行期间对应用20的分析,以确保应用20满足与动态分析相关联的一或多个性能准则。
验证服务器装置24可为可操作的,以执行静态分析、动态分析,或静态分析和动态分析两者。出于说明的目的,验证服务器装置24被描述为可操作以执行静态分析和动态分析两者,且因此,可操作以确保应用20满足与静态分析和动态分析两者相关联的性能准则。在替代实例中,验证服务器装置24可为可操作的,以执行静态分析和动态分析中的一者,且在这些替代实例中,验证服务器装置24可为可操作的,以确保应用20满足与验证服务器装置24可操作以执行的分析的类型相关联的性能准则(例如,与静态分析或动态分析相关联的性能准则)。
如图1中所说明,验证服务器装置24包含仿真器单元26和服务器存储器28。服务器存储器28可包含界定一或多个GPU模型30、一或多个GPU输入32及一或多个装置模型34的数据和/或指令。仿真器单元26可为可操作以执行GPU模型30和装置模型34中的一或多者的处理单元。作为另一实例,仿真器单元26可为硬件仿真板,其可为GPU。在一些实例中,仿真器单元26可包含两个部分,所述两个部分可为同一电路或 单独的不同电路的部分,其中第一部分是可操作以执行GPU模型30和装置模型34中的一或多者的处理单元,且第二部分是硬件仿真板(例如,GPU)。仿真器单元26的实例包含,但不限于,DSP、通用微处理器、ASIC、FPGA或其它等效集成或离散逻辑电路。
服务器存储器28可类似于装置存储器18。举例来说,服务器存储器18可为可用于以指令、数据和/或数据结构的形式存储所需的程序代码且可由仿真器单元26存取且致使仿真器单元26执行归于仿真器单元26的一或多个功能的任何媒体。类似于装置存储器18,在一些实例中,服务器存储器28可被视为非暂时性存储媒体,如上文关于装置存储器18所描述。
如所说明,服务器存储器28可存储界定一或多个GPU模型30、GPU输入32及装置模型34的数据和/或指令。服务器存储器28可能不需要在每个实例中存储一或多个GPU模型30、GPU输入32及装置模型34。举例来说,服务器存储器28可存储GPU模型30及GPU输入32,但可不存储装置模型34。如果验证服务器装置24可操作以仅执行静态分析,那么可能不需要GPU模型30、GPU输入32及装置模型34。在一些实例中,仿真器单元26用GPU模型30、GPU输入32及装置模型34执行动态分析。
一或多个GPU模型30中的每一者可对应于特定GPU类型,且一或多个装置模型34中的每一者可对应于特定装置类型。举例来说,GPU模型30中的每一者可按照并行处理能力、本地存储器可用性及界定所述GPU类型的GPU的功能性的任何其它相关特性而将其对应的GPU类型的配置模型化。装置模型34中的每一者可按照存储器配置、处理器速度、系统总线速度、装置存储器及界定所述装置类型的装置的功能性的任何其它相关特性而将其对应的装置类型的配置模型化。举例来说,不同的供应商提供具有不同功能特性的不同类型的装置,且装置模型34可为用于这些不同装置类型中的每一者的模型。
一或多个GPU模型30及装置模型34可各自被视为仿真器单元26可执行的虚拟模型软件。举例来说,当仿真器单元26执行GPU模型30中的一者时,仿真器单元26仿真所执行的GPU模型30所对应的GPU。当仿真器单元26执行GPU模型30中的一者及装置模型34中的一者时,仿真器单元26仿真所执行的装置模型34所对应的装置,如同所述装置包含所执行的GPU模型30所对应的GPU一般。在一些实例中,GPU供应商及装置供应商可分别供应GPU模型30及装置模型34。可存在服务器存储器28存储GPU模型30及装置模型34的其它方式,且本发明的方面不限于其中供应商提供GPU模型30及装置模型34的特定实例。
举例来说,当仿真器单元26执行GPU模型30中的一者时,仿真器单元26可如同 仿真器单元26的并行处理能力和本地存储器可用性(作为两个实例)在功能上等效于与GPU模型30中的所执行的一者相关联的GPU类型一般起作用。类似地,当仿真器单元26执行装置模型34中的一者时,仿真器单元26可如同仿真器单元26的存储器配置、处理器速度、系统总线速度及装置存储器(作为四个实例)在功能上等效于与装置模型34中的所执行的一者相关联的装置类型一般起作用。换句话说,GPU模型30中的一者的执行致使仿真器单元26充当与GPU模型30中的所执行的一者相关联的GPU。GPU模型30中的一者及装置模型34中的一者的执行致使仿真器单元26充当与装置模型34中的包含与GPU模型30中的所执行的一者相关联的GPU的所执行的装置模型相关联的装置。
多个GPU模型30中的一者可为通用GPU模型30,且多个装置模型34中的一者可为通用装置模型34。在一些实例中,服务器存储器28可存储通用GPU模型及通用装置模型而不是多个GPU模型及装置模型。所述通用GPU模型及装置模型可能不对应于特定GPU或装置类型,但可适合于静态和动态分析。在一些实例中,如果服务器存储器28未存储对应于GPU 14的GPU模型,那么通用GPU模型可适合于验证目的。通用GPU模型和通用装置模型可符合大多数GPU或装置常见的操作的基础简档。
可存在可由通用GPU和通用装置模型模型化的各种类型的GPU和装置。作为一个实例,通用GPU模型可以与其它GPU相比的平均的并行处理能力和本地存储器可用性将GPU模型化。通用装置模型可以与其它装置相比的平均的存储器配置、处理器速度、系统总线速度及装置存储器将装置模型化。
作为用于验证和/或优化应用20以用于在GPU 14上执行的说明性实例,装置12可从应用服务器装置38下载应用20。应用20可为源代码、中间表示,或预先编译的目标代码,如上文所描述。处理器16可随后将应用20安装在装置12上。如果应用20呈源代码或呈中间表示,例如,不是预先编译的目标代码,那么安装的部分可为处理器16执行编译器来编译应用20的代码。
在一些实例中,在应用20的所下载的代码是源代码或中间表示的情况下,处理器16在编译之前可致使装置12将应用20的所下载的代码传输到验证服务器装置24以进行验证。在一些实例中,在应用20的所下载的代码是预先编译的目标代码的情况下,在允许GPU 14执行应用20之前,处理器16可致使装置12将预先编译的目标代码传输到验证服务器装置24以进行验证。
为了安全目的,处理器16可加密装置12传输到验证服务器装置24的应用20的所下载的代码或以其它方式使所述代码安全。在一些实例中,处理器16可在将应用20的 所下载的代码传输到验证服务器装置24之前需要来自用户的授权。此外,在动态分析一些实例中,处理器16可致使装置12将GPU 14的GPU类型或GPU 14的GPU类型及装置12的装置类型两者传输到验证服务器装置24。在这些例子中的一些例子中,处理器16可在将GPU 14的GPU类型或GPU 14的GPU类型及装置12的装置类型两者传输到验证服务器装置24之前需要来自用户的验证。
仿真器单元26可为可操作的,以执行对应用20的静态分析,从而确定应用20是否满足与静态分析相关联的性能准则。举例来说,仿真器单元26可在不执行应用20的情况下分析应用20。作为一个实例,仿真器单元26可解析通过应用20的所下载的代码以识别已知为用于病毒的代码的代码。举例来说,服务器存储器28可存储已知病毒的代码,且仿真器单元26可将应用20的所下载的代码与已知病毒的代码进行比较。确定应用20的所下载的代码未包含已知病毒的代码可为需要得到满足以验证应用20的性能准则的一个实例。
作为静态分析的部分,仿真器单元26可在其中应用20的所下载的代码是应用20的源代码或中间表示的实例中对应用20的所下载的代码进行编译,从而在编译期间识别应用20中的错误。举例来说,仿真器单元26可执行编译器36,如由仿真器单元26内的虚线所指示。通过编译器36对应用20的编译可识别应用20中的任何无限循环或对应用20内的存储器阵列位置的出界的存取。在此实例中,确定在应用20中不存在错误(所述错误可在编译期间发现)可为需要得到满足以验证应用20的性能准则的另一实例。
静态分析可在可被发现的错误、低效及恶意代码的类型方面受到限制。举例来说,如果应用20的所下载的代码是预先编译的目标代码,那么仿真器单元26可不可能在编译期间识别应用20中的错误,因为用于应用20的代码已经是预先编译的目标代码。作为另一实例,如果应用20依赖于存储的指针,那么可不可能仅基于编译应用20来确定应用20中的任何出界的存储器存取错误
为了进一步确定应用20是否为有问题的(例如,低效的、易于出错的或恶意的),仿真器单元26可执行动态分析。如上所述,动态分析是指在执行期间对应用20的分析。在一些实例中,为了执行动态分析,仿真器单元26可致使自身显得它如同是GPU 14。举例来说,在一些例子中,除了传输应用20的所下载的代码之外,处理器16可致使装置12经由网络22将GPU 14的GPU类型传输到验证服务器装置24的仿真器单元26,或将GPU 14的GPU类型及装置12的装置类型两者传输到验证服务器装置24的仿真器单元26。仿真器单元26又可识别GPU模型30中的哪一者对应于GPU 14的GPU类型, 且可执行GPU模型30中的所述一者以在验证服务器装置24上仿真GPU 14。在其中仿真器单元26还接收装置类型的实例中,仿真器单元26可识别装置模型34中的哪一者对应于装置12的装置类型,且可执行装置模型34中的所述一者以在验证服务器装置24上仿真装置12。
在其中装置12不传输GPU 14的GPU类型和/或装置12的装置类型的实例中,仿真器单元26可执行通用GPU模型和/或通用装置模型。或者,如果装置12传输GPU 14的GPU类型和/或装置12的装置类型,但GPU模型30和装置模型34中的任一者都不对应于GPU和装置类型,那么仿真器单元26可执行通用GPU模型和/或通用装置模型。在其中仿真器单元26是或包含硬件仿真板的实例中,此硬件仿真板可被设计成至少部分充当通用装置上的通用GPU。
一旦仿真器单元26自身仿真为GPU 14,或作为装置12的部分的GPU 14,仿真器单元26便可执行应用20。举例来说,如果仿真器单元26接收了应用20的源代码或中间代码,那么仿真器单元26可经由编译器36编译源代码,且执行所得的目标代码。如果仿真器单元26接收了应用20的预先编译的目标代码,那么仿真器单元26可执行应用20的预先编译的目标代码。
在一些实例中,本发明的技术可被视为至少部分由基于GPU 14的类型(例如,GPU模型30中的一者)执行虚拟模型的仿真器单元26执行。随后,当仿真器单元26执行应用20时,应用20可被视为在虚拟模型(例如,GPU模型30中正在仿真器单元26上执行的一者)中执行。举例来说,GPU模型30中的对应于GPU 14和应用20的两个GPU模型正在仿真器单元26上执行。在本发明的技术中,因为仿真器单元26如同其为GPU14而起作用,所以归因于对应于GPU 14的GPU模型的执行,当仿真器单元26执行应用20时,应用20可在对应于GPU 14的GPU模型上执行。
作为动态分析的部分,仿真器单元26可接收正在仿真器单元26上执行的应用20的假设输入值。如所说明,服务器存储器28可存储一或多个GPU输入32。这些一或多个GPU输入32可为不同的图形图像或对象的值。在一些实例中,这些不同的图像中的每一者可具有不同的大小。在其中应用20与图形处理不相关的实例中,GPU输入32可为非图形输入。可能难以确保仿真器单元26测试可能的输入值的每个排列及组合。因此,服务器存储器28可存储充分数目和/或范围的GPU输入32(例如,作为样本或测试输入),从而提供应用20不是恶意的或高度易于出错的应用(例如,有问题的应用)的某一合理的确保水平。GPU输入32可包含将由GPU 14处理和再现的不同类型的图像或对象。
在应用20的执行期间,仿真器单元26可输入GPU输入32的值且可分析GPU模型30中的所执行的GPU模型的功能性。在其中仿真器单元26是硬件仿真板的实例中,仿真器单元26可分析硬件仿真板的功能性。举例来说,仿真器单元26可监视GPU模型30中的所执行的GPU模型进行的存储器存取。在此实例中,仿真器单元26可确定GPU模型30中的所执行的GPU模型进行的存储器存取中的任一者是否为对服务器存储器28的出界的存储器存取。作为另一实例,仿真器单元26可监视GPU模型30中的所执行的GPU模型正在那里将信息写入服务器存储器28中的存储器地址。基于GPU模型的存储器存取及GPU模型正在那里写入信息的存储器地址,仿真器单元26可能够确定应用20是否为易于出错的。此类存储器跟踪在应用20使用指针读取或写入到变量时可为特别有用的。
举例来说,如果所执行的GPU模型将信息写入到出界的存储器位置或从出界的存储器位置读取信息,那么仿真器单元26可确定应用20是易于出错的且可能是恶意的。举例来说,如果所执行的GPU模型将信息写入到不存在的存储器位置或从不存在的存储器位置读取信息,那么仿真器单元26可确定应用20是易于出错的。如果所执行的GPU模型将信息写入到未为GPU模型保留的存储器位置,那么仿真器单元26可确定应用20是易于出错的且可能是恶意的。举例来说,仿真器单元26可确定应用20正在试图将病毒写入到应用20应该不能存取的存储器位置。
应用20在执行期间可将信息写入到哪里或从哪里读取信息(例如,存取)的限制可为与动态分析相关联的性能准则的实例。举例来说,所述性能准则可为对允许应用20存取的存储器位置的限制。如果GPU模型30的GPU模型归因于应用20的执行而存取受限的存储器位置之外的存储器位置,那么应用20可违背性能准则。举例来说,根据所述性能准则,可存在可允许的受限的存储器位置之外的阈值数目的存取。所述阈值数目可为零,以提供应用20不试图存取受限的存储器位置之外的存储器位置的最高确保水平。
在其中仿真器单元26还执行装置模型34中的一者的实例中,仿真器单元26可类似地分析装置模型34中的所执行的装置模型的功能性。举例来说,在仿真器单元26执行GPU模型30中的一者时,仿真器单元26可监视装置模型34中的所执行的一者所执行的功能。举例来说,装置模型34中的一者的执行可导致仿真器单元26包含系统总线的装置12。仿真器单元26可确定应用20的执行是否致使系统总线过载,从而导致装置12减慢。
监视系统总线以确定系统总线是否过载可为与动态分析相关联的性能准则的实例。 举例来说,如果应用20的执行致使系统总线过载,那么应用20可违背性能准则。在此实例中,性能准则可允许系统总线的某一水平的过载,因为可能不可能不允许系统总线的任何过载。举例来说,执行准则可建立系统总线过载的百分比量阈值。如果系统总线过载低于可允许的百分比,那么性能准则得到满足。否则,性能准则未得到满足。
仿真器单元26可类似地检测恶意的应用,例如拒绝服务攻击。举例来说,仿真器单元26可监视GPU模型30中的GPU模型能够执行应用20的速率。如果仿真器单元26检测到缓慢响应、意外的终止,或悬挂,那么仿真器单元26可确定应用20是针对拒绝服务攻击而设计的应用,或设计得非常差的应用。在此实例中,性能准则可为应用20的特定任务的阈值执行时间或执行速率。如果应用20花费比阈值执行时间长的时间来完成特定任务,或以比阈值执行速率小的比率执行任务,那么应用20可违背性能准则。
作为仿真器单元26检测恶意的应用或易于出错的应用的另一实例,仿真器单元26可监视由应用20发出的指令。举例来说,在一些实例中,由应用20发出的指令可为96位字。然而,不是96位的所有组合都表示有效指令。在一些实例中,GPU 14可经设计以忽视无效指令;然而,对于GPU 14的每个实例可不是这种情况。为了避免GPU 14无意地执行无效指令,仿真器单元26可确定由应用20在执行期间发出的指令是否为有效或无效指令。如果仿真器单元26确定应用20正发出无效指令,那么仿真器单元26可确定应用20是恶意的应用、易于出错的应用,或低效的应用。
作为另一实施例,在执行期间,应用20可将数据写入到寄存器且从寄存器读取数据。恶意的应用、易于出错的应用,或低效的应用可从未写入的寄存器读取数据。如果应用20试图从先前未写入到的寄存器读取数据,那么由应用20读取的数据可为无意义的数据(即,未初始化的数据)。对未初始化的数据的此读取可导致不可预测的行为。在一些实例中,仿真器单元26可监视应用20在执行期间写入到哪些寄存器,且可确定应用20是否从先前尚未写入到的寄存器进行读取。如果仿真器单元26确定应用20正从未写入的寄存器进行读取,那么仿真器单元26可确定应用20是恶意的应用、易于出错的应用,或低效的应用。
如果仿真器单元26确定符合与静态分析和动态分析相关联的性能准则,那么验证服务器装置24可将指示传输到装置12,所述指示指示应用20以某一确保水平满足与静态分析、动态分析或静态分析和动态分析(例如,验证应用20)两者相关联的一或多个性能准则。在此情况下,验证服务器装置24可提供应用20被验证以供GPU 14使用的指示。否则,在一些实例中,验证服务器装置24可将指示传输到装置12,所述指示指示应用20无效以供GPU 14使用,使得不建议GPU 14执行应用20。作为响应,处理器 16可基于所接收的指示而指令GPU 14执行应用20。
在其中验证服务器装置24接收应用20的源代码或中间代码的实例中,仿真器单元26还可传输如由编译器36编译的应用20的经编译的目标代码。以此方式,对应用20的编译还可从装置12卸载,且卸载到外部装置,例如验证服务器装置24。
验证服务器装置24还可被委派优化或调谐应用20的任务。举例来说,仿真器单元26可接收应用20的源代码或中间代码。作为静态分析和/或动态分析的部分,仿真器单元26可确定应用20略微易于出错或将低效地利用GPU 14的能力。在这些实例中,不将指示不建议GPU 14执行应用20的指示传输到装置12,仿真器单元26可在确定应用20在GPU 14上低效地执行或带错地执行时尝试校正应用20的错误或尝试调谐用于GPU 14的应用20。
如果仿真器单元26能够校正错误或使应用20更有效,那么仿真器单元26可编译应用20的经修改的代码以产生GPU 14应执行的目标代码。仿真器单元26可随后将所得的目标代码与GPU 14应执行所得的目标代码的指示一起传输到装置12。在此情况下,GPU 14可执行从经修改的代码产生的目标代码,而不是从应用20的原始代码产生的目标代码。或者,仿真器单元26可在不编译的情况下传输应用20的经修改的代码。
在这些实例中的任一者中,对应用20的验证可被视为传输应用20的经修改的代码(例如,传输经修改的代码或所得的目标代码)的部分。举例来说,当装置12从验证服务器装置24接收到应用20的经修改的代码时,因为装置12从验证服务器装置24接收到应用20的经修改的代码,所以装置12可自动地确定应用20的经修改的代码适合于执行。在此意义上,装置12从验证服务器装置24接收的验证可为显式验证或隐式验证。在任一情况下,即,显式验证或隐式验证,仿真器单元26可以某一确保水平确定应用20或应用20的经修改的版本满足一或多个性能准则。
如果仿真器单元26不能够校正应用20的错误,那么仿真器单元26可传输指示不建议在GPU 14上执行应用20的指示。如果仿真器单元26不能使应用20更有效,那么仿真器单元26可仍将指示GPU 14执行应用20可为合适的指示传输到装置12,因为虽然应用20可能不完全有效,但应用20可不是易于出错的或恶意的。
为了调谐或优化应用20,仿真器单元26可以某一其它方式插入代码(例如,源代码或中间代码)、取代代码或修改应用20的代码。在一些实例中,仿真器单元26可收集统计数据以确定应用20的经编译的代码运作的良好程度。举例来说,应用20可利用阵列索引来用于将变量值存储在阵列中。仿真器单元26可将代码添加到应用20的源代码中,所述代码检查由应用20利用的阵列索引在范围内。仿真器单元26可将代码添加到应用 20的源代码中,所述代码致使应用20在阵列索引不在范围内时中止。仿真器单元26可随后编译经修改的源代码以产生供GPU 14执行应用20的目标代码。
优化或调谐可基于以下假设:例如应用20等应用一般经开发以利用GPU 14的高并行度水平。如果开发者无意利用GPU 14的并行度,那么开发者将不让所开发的应用20在GPU 14上执行,而是在处理器16上执行。
举例来说,应用20的开发者可能已开发出应用20以对图像的块并行地执行图像处理。如上文所描述,图像的块的大小可基于GPU 14上可用的本地存储器的量。因为开发者可能不知道GPU 14上有多少可用的存储器,所以开发者可开发应用20以使用可变大小的块,而不是更有效的固定大小的块。举例来说,固定大小的块可更有效,因为所述块的大小不在执行期间改变。
在一些实例中,仿真器单元26可确定所述块的最佳大小,因为GPU模型30中的对应于GPU 14的GPU模型可包含指示GPU 14的本地存储器的大小的信息。在此实例中,仿真器单元26可基于GPU 14上可用的本地存储器的量、写入到GPU 14的本地存储器或从GPU 14的本地存储器读取所需的数据量,及可能不可用于应用20的开发者的其它此类信息而选择所述块的最佳大小。在本发明的方面中,仿真器单元26将知道有多少本地存储器可用及需要从本地存储器写入或读取多少数据,因为仿真器单元26可在GPU模型30中的对应于GPU 14的GPU模型上执行应用20。
在这些实例中,仿真器单元26可更新或以其它方式修改应用20的源代码或中间代码以将块大小固定为最佳确定的大小。换句话说,仿真器单元26可确定所述块的最佳大小以最佳地利用GPU 14的并行度。仿真器单元26可随后编译应用20的此经修改的源代码且将所得的目标代码传输到装置12以供GPU 14执行。以此方式,当GPU 14执行经修改的应用20时,与原始应用20相比,经修改的应用20可在GPU 14上更有效地执行。
在针对优化的另一实例中,如上文所描述,应用20可执行矩阵操作。在此实例中,仿真器单元26可确定基于列的矩阵操作或基于行的矩阵操作是否被GPU 14更容易地处置。举例来说,仿真器单元26可致使GPU模型30中的对应于GPU 14的GPU模型使用基于行的矩阵操作且使用基于列的矩阵操作来执行应用20。仿真器单元26可比较基于列的矩阵操作和基于行的矩阵操作的效率(例如,对存储器的存取的数目、处理时间量,及其它此类效率量度)。基于所测量的效率,仿真器单元26可修改应用20的代码。举例来说,如果基于列的操作比基于行的操作更有效地执行,那么仿真器单元26可修改应用20的代码以使得将矩阵操作执行为基于列的操作。类似地,如果基于行的操作比基 于列的操作更有效地执行,那么仿真器单元26可修改应用20的代码以使得将矩阵操作执行为基于行的操作。
在针对优化的另一实例中,如上文所描述,应用20的开发者可让所开发的应用20在GPU的较旧版本上执行。在此情况下,应用20可在例如GPU 14等GPU上适当地执行;然而,应用20可能未完全利用GPU 14的功能性。举例来说,应用20可能不必要地限制GPU 14应并行处理的图形或非图形数据的量,因为GPU的较旧版本可能在处理能力方面受到限制。在此实例中,仿真器单元26可修改应用20的代码,使得在执行应用20时,应用20致使GPU 14并行地处理更多数据。可存在仿真器单元26可修改应用20以使得应用20更好地适合在较新的GPU上执行的方式的其它实例,且本发明的方面不应被视为受限于以上实例。
在优化应用20之后,仿真器单元26可将应用20的经修改或经更新的代码传输到装置12。在此实例中,处理器16可编译从仿真器单元26接收的应用20的代码,且指令GPU 14执行所得的目标代码。在一些其它实例中,仿真器单元26可经由编译器36编译经修改的应用20,且将所得的目标代码传输到装置12。在此实例中,处理器16可指令GPU 14执行应用20的所接收的目标代码。
在一些实例中,仿真器单元26可一次验证应用20且优化或调谐应用20。在此验证之后,GPU 14可在需要时执行应用20,而不需要进一步验证或优化。而且,在一些实例中,在仿真器单元26验证应用20之后,仿真器单元26可将指示此应用20已被验证的指示存储在服务器存储器28中。在这些实例中,当仿真器单元26接收用于验证的代码时,仿真器单元26可首先基于存储在服务器存储器28中的指示来确定仿真器单元26先前是否验证了所述代码。如果仿真器单元26先前验证了所述代码,那么仿真器单元26可立即使所述所接收的代码有效。举例来说,仿真器单元26可验证从装置12接收的应用20。随后,仿真器单元26可从除了装置12之外的装置接收用于应用20的代码。在此情况下,仿真器单元26可首先确定所接收的代码与仿真器单元26先前验证的代码相同,且如果相同,那么可立即验证所接收的代码。以此方式,仿真器单元26可不需要针对先前验证的代码再次执行静态和/或动态分析。
图2是说明装置12的实例操作的流程图。仅出于说明的目的,参考图1。装置12可接收将由GPU 14执行的应用20(40)。举例来说,装置12可从应用服务器装置38下载应用20。作为另一实例,应用20可被预先加载在装置存储器18上。如上文所描述,装置12可接收应用20的源代码、中间代码(例如,应用20的中间表示),或目标代码。
装置12可将应用20的代码传输到验证服务器装置24(42)。举例来说,装置12可 将应用20的源代码、中间代码或目标代码传输到验证服务器装置24以用于验证应用20。在一些实例中,装置12可将应用20的代码传输到验证服务器装置24一次以用于验证。装置12的GPU 14可随后在需要时执行应用20,而不需要后续验证。
响应于将应用20的代码传输到验证服务器装置24以进行验证,装置12可从验证服务器装置24接收验证(44)。或者,装置12可接收无效,或验证或无效中的任一者。来自服务器装置24的验证可指示应用20满足一或多个性能准则。如果应用20未满足一或多个性能准则,那么验证服务器装置24可指示应用20未满足性能准则。举例来说,验证可指示应用20满足与静态分析、动态分析或静态分析和动态分析两者相关联的性能准则。在一些实例中,验证服务器装置24可优化或调谐应用20以使应用20更有效或较不易出错。在此情况下,所述验证可指示应用20的经修改的版本满足一或多个性能准则。
在一些实例中,装置12的处理器16可基于所述验证而指令装置12的GPU 14执行应用20(48)。举例来说,如果验证服务器装置24指示应用20满足性能准则,那么处理器16可指令GPU 14执行应用20。否则,处理器16可不允许GPU 14执行应用20。
在一些替代实例中,在执行之前,装置12可接收应用20的经修改的版本(46)。在图2中,从框44到框46以及从框46到框48的虚线用于指示框46的功能在每个实例中可不是必要的。举例来说,验证服务器装置24可能够优化或调谐应用20,且可传输应用20的经修改的版本。作为另一实例,装置12可传输应用20的源代码或中间代码,且从验证服务器装置24接收应用20的经编译的版本。作为又另一实例,装置12可接收如由验证服务器装置24修改的代码的经编译的版本(例如,经修改以用于优化或调谐)。在这些实例中,处理器16可指令GPU 14执行应用20的经修改的版本(48)。
图3是说明验证服务器装置24的实例操作的流程图。仅出于说明的目的,参考图1。验证服务器装置24可从装置12接收将由GPU 14执行的应用20(50)。举例来说,验证服务器装置24可经由网络22从装置12接收应用20的源代码、中间代码或目标代码。
验证服务器装置24可对应用20执行静态分析和动态分析中的至少一者(52)。举例来说,作为静态分析的部分,验证服务器装置24的仿真器单元26可编译应用20的代码,且监视应用20的编译期间的任何错误。作为动态分析的部分,验证服务器装置24的仿真器单元26可执行GPU 14的虚拟模型或GPU 14的虚拟模型及装置12的虚拟模型。如上文所描述,GPU模型30及装置模型34可分别包含GPU 14及装置12的虚拟模型。在一些实例中,GPU模型30及装置模型34可包含通用GPU模型及通用装置模型。
举例来说,仿真器单元26可从装置12接收GPU 14和/或装置12的识别。仿真器单元26可识别GPU模型30中的哪一者对应于GPU 14及装置模型34中的哪一者对应于装置12,且执行对应的GPU模型及装置模型。如果不存在用于GPU 14及装置12的对应的GPU和/或装置模型,或如果仿真器单元26未接收GPU 14和/或装置12的识别,那么仿真器单元26可执行通用GPU及装置模型。
作为动态分析的部分,仿真器单元26可执行应用20且用GPU输入32输入应用20以用于分析应用20。在这些实例中,应用20可被视为在于仿真器单元26上执行的GPU14的对应虚拟模型上执行。以此方式,仿真器单元26可执行应用20,如同应用20正在GPU 14上执行一般。仿真器单元26可监视由GPU 14的对应虚拟模型执行的功能,例如存储器存取、执行的速率、终止例子,及与GPU 14的功能性相关的其它功能。
仿真器单元26可确定应用20是否满足一或多个性能准则(54)。所述一或多个性能准则可为与静态分析相关联的性能准则及与动态分析相关联的性能准则。举例来说,所述一或多个性能准则可为如通过在静态分析期间编译应用20而评估的在应用20的编译中不存在错误。作为另一实例,所述一或多个性能准则可为以下准则:应用20不存取出界的存储器位置且不用完GPU 14的资源以使得GPU 14不能够并行地执行其它任务,这是通过在动态分析期间执行应用20且向应用20提供GPU输入32来评估的。可存在仿真器单元26可确定应用20满足的性能准则的其它实例。
验证服务器装置24可基于所述确定将应用20的验证传输到装置12(56)。举例来说,验证服务器装置24可在应用20满足一或多个性能准则的情况下将应用20的验证传输到装置12。否则,验证服务器装置24可在应用20不满足一或多个性能准则的情况下传输无效。举例来说,如果仿真器单元26确定应用20满足一或多个性能准则,那么验证服务器装置24可将指示这种情况的指示传输到装置12。或者,如果仿真器单元26确定应用20不满足一或多个性能准则,那么验证服务器装置24可将指示这种情况的指示传输到装置12。
图4是说明验证服务器装置24的另一实例操作的流程图。仅出于说明的目的,参考图1和3。类似于图3,验证服务器装置24可从装置12接收将由GPU 14执行的应用20(58)。在此实例中,仿真器单元26可修改应用20(例如,应用20的源代码或中间代码)以优化或调谐应用20。举例来说,仿真器单元26可修改应用20的代码以使得应用20在GPU 14上更有效地执行。验证服务器装置24可随后将经修改的应用20传输到装置12(62)。在一些实例中,验证服务器装置24可传输经修改的应用20的源代码或中间代码。作为另一实例,验证服务器装置24可编译应用的经修改的代码且将所得的目标代 码传输到装置12。
图5是进一步详细地说明图1的实例装置的框图。举例来说,图5进一步详细地说明图1的装置12。举例来说,如上文所指示,装置12的实例包含,但不限于,移动无线电话、PDA、包含视频显示器的视频游戏控制台、移动视频会议单元、膝上型计算机、桌上型计算机、电视机顶盒等。
如图5中所说明,装置12可包含GPU 14、处理器16、装置存储器18、收发器模块64、用户接口66、显示器68及显示器处理器70。GPU 14、处理器16及装置存储器18可实质上类似于或等同于图1中所说明的那些。出于简明起见,仅详细描述图5中展示但图1中未展示的组件。
装置12可包含图5中出于清楚起见而未展示的额外模块或单元。举例来说,装置12可包含扬声器和麦克风(其任一者都未在图5中展示),从而在其中装置12是移动无线电话或其中装置12是媒体播放器的扬声器的实例中实现电话通信。此外,装置12中所展示的各种模块和单元在装置12的每个实例中可能不是必需的。举例来说,在其中装置12是桌上型计算机或经配备以与用户接口或显示器介接的其它装置的实例中,用户接口66和显示器68可在装置12外部。
用户接口66的实例包含(但不限于)跟踪球、鼠标、键盘,以及其它类型的输入装置。用户接口66还可为触摸屏且可被集成为显示器68的一部分。收发器模块64可包含用以允许装置12与另一装置或网络之间的无线或有线通信的电路。收发器模块64可包含一或多个调制器、解调器、放大器、天线以及用于有线或无线通信的其它此类电路。显示器68可包括液晶显示器(LCD)、有机发光二极管(OLED)、阴极射线管(CRT)显示器、等离子显示器、极化显示器,或另一类型的显示器装置。
在一些实例中,在GPU 14产生图形数据以供在显示器68上显示之后,GPU 14可将所得的图形数据输出端装置存储器18以进行临时存储。显示器处理器70可从装置存储器18检索图形数据、对图形数据执行任何后处理,且将所得的图形数据输出到显示器68。举例来说,显示器处理器70可执行任何进一步增强或缩放由GPU 14产生的图形数据。
在一或多个实例中,所描述的功能可以硬件、软件、固件或其任何组合来实施。如果以软件来实施,则可将功能作为一或多个指令或代码存储在计算机可读媒体上。计算机可读媒体可包含计算机数据存储媒体。数据存储媒体可为可由一或多个计算机或一或多个处理器存取以检索指令、代码和/或数据结构来用于实施本发明中所描述的技术的任何可用媒体。举例来说(且并非限制),所述计算机可读媒体可包括随机存取存储器 (RAM)、只读存储器(ROM)、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置,或可用于存储呈指令或数据结构的形式的所要程序码且可由计算机存取的任何其它媒体。在本文中使用时,磁盘及光盘包含压缩光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软性磁盘及蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘使用激光以光学方式再现数据。以上各者的组合也应包含在计算机可读媒体的范围内。
所述代码可由一或多个处理器执行,例如,一或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效集成或离散的逻辑电路。因此,如本文中所使用的术语“处理器”可指上述结构或适合于实施本文中所描述的技术的任一其它结构中的任一者。并且,可将所述技术完全实施于一或多个电路或逻辑元件中。
本发明的技术可实施于广泛多种装置或设备中,包含无线手持机、集成电路(IC)或IC组(即,芯片组)。本发明中描述各种组件、模块或单元来强调经配置以执行所揭示的技术的装置的若干功能性方面,但不一定需要通过不同的硬件单元来实现。而是,如上文所描述,各种单元可联合合适的软件和/或固件而组合于硬件单元中或通过互操作的硬件单元的集合(包含如上文所描述的一或多个处理器)来提供。
已描述各种实例。这些及其它实例属于所附权利要求书的范围内。

用于图形处理单元的应用的验证.pdf_第1页
第1页 / 共28页
用于图形处理单元的应用的验证.pdf_第2页
第2页 / 共28页
用于图形处理单元的应用的验证.pdf_第3页
第3页 / 共28页
点击查看更多>>
资源描述

《用于图形处理单元的应用的验证.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的概率。而且。

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

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


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