CN111465923B - 用于捕获和执行图形处理操作的技术 - Google Patents

用于捕获和执行图形处理操作的技术 Download PDF

Info

Publication number
CN111465923B
CN111465923B CN201880080708.9A CN201880080708A CN111465923B CN 111465923 B CN111465923 B CN 111465923B CN 201880080708 A CN201880080708 A CN 201880080708A CN 111465923 B CN111465923 B CN 111465923B
Authority
CN
China
Prior art keywords
memory
sequence
graphics processing
gpu
processing operations
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.)
Active
Application number
CN201880080708.9A
Other languages
English (en)
Other versions
CN111465923A (zh
Inventor
J·A·古斯森
M·A·道赫蒂
C·J·布鲁金
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN111465923A publication Critical patent/CN111465923A/zh
Application granted granted Critical
Publication of CN111465923B publication Critical patent/CN111465923B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3414Workload generation, e.g. scripts, playback
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3471Address tracing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Image Generation (AREA)
  • Debugging And Monitoring (AREA)
  • Controls And Circuits For Display Device (AREA)

Abstract

本文所描述的示例总体上涉及捕获和执行图形处理操作。存储器陷阱功能可以被激活,以使图形处理单元(GPU)报告在执行图形处理操作中的存储器访问。基于激活存储器陷阱功能并且针对由GPU执行的已执行图形处理操作的序列中的每个已执行图形处理操作,存储器访问命令的序列以及基于执行已执行图形处理操作的序列而被修改的关联的存储器部分可以被接收。多个存储器访问命令的序列中的每个存储器访问命令以及关联的存储器部分可以被存储并被提供给GPU,以模拟GPU对已执行图形处理操作的序列的重新执行。

Description

用于捕获和执行图形处理操作的技术
背景技术
如今,计算设备的使用变得越来越普遍。计算设备的范围从标准台式计算机到可穿戴计算技术以及其他。近年来发展的计算设备的一个领域是在图像绘制的上下文中,诸如游戏、视频流等的绘制,这通常依赖于图形处理单元(GPU)基于从计算设备接收的绘制指令将图形从计算设备绘制到显示设备。应用可用于回放或重新执行被发送给GPU的绘制指令。例如,这样的应用可以捕获由中央处理单元(CPU)发送给GPU的图形处理操作,分析图形处理操作以确定在执行图形处理操作中由GPU修改的存储器,并相应地存储被发送给GPU的图形处理操作以及所确定的修改后的存储器。
后续通过基于所确定的修改后的存储器来重建存储器并将所存储的图形处理操作发送回GPU以供执行,应用可以回放图形处理操作。该过程在基于修改操作参数等来调试图形操作或以其他方式评估GPU性能时可能是有用的。但是,此过程在要求CPU分析每个可能的GPU图形处理操作方面可能会是耗时且专有的。
发明内容
以下呈现了一个或多个示例的简化概述,以提供对这样的示例的基本理解。该概述不是对所有预期示例的广泛综述,并且既不旨在标识所有示例的关键或重要元素,也不旨在描绘任何或所有示例的范围。其唯一目的是以简化的形式呈现一个或多个示例的一些概念,作为稍后呈现的更详细描述的序言。
在一个示例中,提供了一种用于捕获和执行图形处理操作的方法。该方法包括:激活存储器陷阱(trap)功能,以使图形处理单元(GPU)报告在执行图形处理操作中的存储器访问;基于激活存储器陷阱功能并且针对由GPU执行的已执行图形处理操作的序列中的每个已执行图形处理操作,接收存储器访问命令的序列以及基于执行已执行图形处理操作的序列而被修改的关联的存储器部分;在存储库中存储多个存储器访问命令的序列中的每个存储器访问命令和关联的存储器部分;以及向GPU提供多个存储器访问命令的序列的至少一部分以及关联的存储器部分,以模拟GPU对已执行图形处理操作的序列的重新执行。
在另一示例中,提供了一种用于捕获和执行图形处理操作的计算设备。该计算设备包括:存储器,其存储用于执行操作***和一个或多个应用的一个或多个参数或指令;显示接口,其被配置用于传送信号以在显示器上显示图像;以及耦合至存储器和显示接口的至少一个处理器。至少一个处理器被配置为:激活存储器陷阱功能,以使图形处理单元(GPU)报告在执行图形处理操作中的存储器访问;基于激活存储器陷阱功能并且针对由GPU执行的已执行图形处理操作的序列中的每个已执行图形处理操作,接收存储器访问命令的序列以及基于执行已执行图形处理操作的序列而被修改的关联的存储器部分;在存储库中存储多个存储器访问命令的序列中的每个存储器访问命令和关联的存储器部分;以及向GPU提供多个存储器访问命令的序列的至少一部分以及关联的存储器部分,以模拟GPU对已执行图形处理操作的序列的重新执行。
在另一示例中,提供了一种计算机可读介质,其包括由一个或多个处理器可执行以用于捕获和执行图形处理操作的代码。该代码包括用于以下各项的代码:激活存储器陷阱功能,以使图形处理单元(GPU)报告在执行图形处理操作中的存储器访问;基于激活存储器陷阱功能并且针对由GPU执行的已执行图形处理操作的序列中的每个已执行图形处理操作,接收存储器访问命令的序列以及基于执行已执行图形处理操作的序列而被修改的关联的存储器部分;在存储库中存储多个存储器访问命令的序列中的每个存储器访问命令和关联的存储器部分;以及向GPU提供多个存储器访问命令的序列的至少一部分以及关联的存储器部分,以模拟GPU对已执行图形处理操作的序列的重新执行。
为了实现前述的和相关的目的,一个或多个示例包括下文中充分描述并且在权利要求中特别指出的特征。以下描述和附图详细阐述了一个或多个示例的某些说明性特征。然而,这些特征仅指示其中可以采用各种示例的原理的各种方式中的几种方式,并且该描述旨在包括所有这样的示例及其等同物。
附图说明
图1是根据本文所描述的示例的用于显示图像和捕获图形处理操作的计算设备的示例的示意图。
图2是根据本文所描述的示例的用于捕获和提供与图形处理操作相关联的存储器访问命令的方法的示例的流程图。
图3是根据本文所描述的示例的用于回放与图形处理操作相关联的存储器访问命令的方法的示例的流程图。
图4图示了根据本文所描述的示例的用于捕获与图形处理操作相关联的存储器访问命令的通信流的示例的示意图。
图5图示了根据本文所描述的示例的用于回放与图形处理操作相关联的存储器访问命令的通信流的示例的示意图。
图6是用于执行本文所描述的功能的计算设备的示例的示意图。
具体实施方式
下面结合附图阐述的详细描述旨在作为对各种配置的描述,而不旨在表示可以实践本文所描述的概念的唯一配置。详细描述包括用于提供对各种概念的透彻理解的具体细节。然而,对于本领域技术人员将显而易见的是,可以在没有这些具体细节的情况下实践这些概念。在一些情形中,以框图的形式示出了众所周知的组件,以避免模糊这样的概念。
本文所描述的是与捕获和执行图形处理操作有关的各种示例。存储器陷阱功能可以被启用,以有利于报告图形处理单元(GPU)进行的存储器修改。存储器陷阱功能可以确定存储器的各部分何时被修改,并且对于存储器的给定部分可以至少报告修改的发生。在一个示例中,存储器的每个部分可以包括指示符,该指示符指定是否启用对存储器的该部分的陷阱,并且存储器陷阱功能可以确定基于该指示符报告存储器的修改。例如,存储器陷阱功能可以被实现在GPU的存储器分配器中,并且可以在由GPU执行的图形处理操作修改存储器时(例如,经由中断处置器)通知中央处理单元(CPU)。CPU可以相应地将存储器访问命令和相关联的修改后的存储器存储在存储库中,以用于后续回放存储器访问命令来模拟图形处理操作。
在GPU处执行存储器陷阱功能和通知可以提供一种快速且稳健的机制来捕获GPU处理操作,或者至少捕获由于GPU操作而发生的对存储器的修改,这与使用CPU分析被发送给GPU的绘制指令相反。例如,当GPU处理操作被发送给GPU时使用CPU分析GPU处理操作可能要求CPU上的复杂逻辑来解释每个GPU处理操作,并且可能还要求修改适应新的GPU命令。然而,在GPU处使用存储器陷阱可以更高效地被执行,并且可以允许实时地(或接近实时地)捕获存储器修改。
现在转到图1-图6,参考可以执行本文所描述的动作或操作的一个或多个组件和一个或多个方法来描绘示例,其中虚线的组件和/或动作/操作可以是可选的。虽然以下在图2-图5中描述的操作以特定的顺序被呈现和/或由示例组件执行,但是在一些示例中,取决于实现,动作的顺序和执行动作的组件可以变化。此外,在一些示例中,以下动作、功能和/或所描述的组件中的一个或多个可以由被专门编程的处理器、执行被专门编程的软件或计算机可读介质的处理器或由能够执行所描述的动作或功能的硬件组件和/或软件组件的任何其他组合来执行。
图1是用于绘制图像的计算设备100和/或相关组件的示例的示意图,该图像可以在显示设备(未示出)上被显示。例如,计算设备100可以包括处理器104和/或存储器106,或者可以以其他方式与处理器104和/或存储器106耦合,其中处理器104和/或存储器106可以被配置为执行或存储如本文所述的与生成用于绘制用于显示的图像的绘制指令相关的指令或其他参数。计算设备100可以执行操作***108(例如,经由处理器104和/或存储器106),以用于提供用于执行一个或多个应用110的环境,诸如产生或以其他方式获取用于显示的图像的一个或多个应用110。例如,应用110可以基本上包括生成用于以帧速率显示的图像流的任何应用,诸如游戏、视频流服务等。计算设备100还可以包括GPU 114,以用于处理绘制指令和/或将关联的命令传送到显示接口116以引起一个或多个图像在显示器上的显示,显示器可以经由显示端口被耦合到计算设备100。
在一个示例中,显示接口116可以与处理器104和/或存储器106通信地耦合,以经由显示端口118与显示器进行通信。本文所指的显示端口118可以包括各种类型的端口中的一个或多个,包括高清多媒体接口(HDMI)端口、显示串行接口(DSI)端口、移动工业处理器接口(MIPI)DSI端口、通用串行总线(USB)端口、火线端口或可以允许计算设备100与显示器之间的通信的其他嵌入式或外部有线或无线显示端口。
在一个示例中,GPU 114可以是显示接口116的一部分(例如,显示接口116的电路板上的处理器)。在另一示例中,GPU 114、显示接口116等可以与处理器104集成。基本上,硬件的任何组合都是可能的,以使得GPU 114、显示接口116等可以经由总线与处理器104进行通信以有利于向GPU 114提供绘制指令。GPU 114可以处理绘制指令以绘制图像,并且可以通过经由显示接口116的显示端口118将关联信号传输到显示器来发起图像的至少一部分在显示器上的显示。
在一个示例中,GPU 114可以包括存储器分配器120,以用于分配存储器(例如,存储器106)的各部分以在执行图形处理操作中使用。例如,存储器分配器120可以向与存储器106相关联的存储器控制器请求存储器的各部分,以获取与被指定给GPU 114以用于执行图形处理操作的虚拟存储器地址相对应的物理存储器。存储器分配器120还可以包括存储器陷阱功能122,以用于检测和报告存储器106的部分何时被GPU 114修改。例如,存储器陷阱功能122可以提供对修改后的存储器的部分的指示(例如,以一个或多个粒度级别,诸如可以是具有配置的大小的存储器的页面、存储器的字节等)和/或对存储器访问命令的指示(例如,读取、写入等)。另外,存储器陷阱功能122可以提供一种用于激活存储器陷阱以及用于指定回调功能、中断处置器或通道等的机制,以供存储器陷阱功能122在存储器修改被检测到时进行实例化。
应用110可以包括用于激活存储器陷阱功能122和/或跟踪由GPU 114报告的存储器修改的存储器修改跟踪组件140。存储器修改跟踪组件140可以包括:回调组件142,其可以是回调功能、中断处置器或通道等,并且可以在激活存储器陷阱功能122时被指定;以及日志记录组件144,其用于在命令/资源存储库146中记录由存储器陷阱功能122报告的存储器访问命令和相关的存储器资源。命令/资源存储库146可以基本上包括计算设备100中的任何数据存储机制,诸如存储器106、硬盘驱动器、数据库、文件等。此外,应用110可以可选地包括存储器陷阱功能150,以用于捕获由处理器104执行的对存储器106的修改(例如,在应用的上下文中或其他情况下)。在该示例中,应用110还可以向回调组件142(或另一回调组件142)注册存储器陷阱功能150,以用于检测和/或报告由处理器104执行的存储器修改。例如,被指派给存储器分配器120的存储器106的部分可以被标记用于如本文所述的陷阱功能性,并且存储器陷阱功能122和/或存储器陷阱功能150可以分别检测和/或报告由GPU114或处理器104对存储器106的部分进行的存储器修改。
应用110还可以包括回放组件148,以用于基于被存储在命令/资源存储库146中的存储器访问命令和对应的存储器资源来模拟图形处理操作的重新执行。在一个示例中,回放组件148可以允许修改GPU 114的设置,修改命令的部分等等,以在图形处理操作的重新执行期间调试或评估性能。在另一示例中,回放组件148可以基于存储器访问命令和相关联的修改后的存储器资源来生成图形处理操作以回放图形处理操作。在任何情况下,通过使用GPU 114中的存储器陷阱功能122,至少可以高效地发生图形处理操作或用于重新创建图形处理操作的数据的捕获和存储。
图2是用于高效且稳健地捕获和重新执行图形处理操作的方法200的示例的流程图。例如,作为用于执行方法200的环境的非限制性示例,方法200可以由计算设备100执行并且因此参考图1而被描述。
在方法200中,可选地在动作202处,存储器的初始状态被存储在存储库中。在示例中,例如与处理器104、存储器106等结合,存储器修改跟踪组件140可以在存储库(例如,命令/资源存储库146)中存储存储器(例如,存储器106和/或其一部分)的初始状态。例如,存储器修改跟踪组件140可以存储专用于GPU 114和/或专用于一组对应的图形处理操作的存储器106的一部分的初始状态,从而基于图形处理操作的执行来跟踪存储器的修改。例如,在GPU 114以存储器页面粒度(例如,4千字节(KB)页面、16KB页面、4兆字节(MB)页面等)进行操作的情况下,存储器修改跟踪组件140可以存储与执行图形处理操作相关的存储器106的多个页面的初始状态。
在动作204处,存储器陷阱功能可以被激活以使GPU报告在执行图形处理操作中的存储器访问。在一个示例中,例如与处理器104、存储器106等结合的存储器修改跟踪组件140可以激活存储器陷阱功能(例如,GPU 114上的存储器陷阱功能122)以使GPU(例如,GPU114)报告在执行图形处理操作中的存储器访问。例如,存储器修改跟踪组件140可以经由对GPU 114的功能调用来激活存储器陷阱功能。存储器修改跟踪组件140可以在发送给GPU 114的激活请求/命令中包括回调组件142的手柄(handle)或其他标识符,以允许存储器陷阱功能122在存储器修改被检测到时调用回调组件142。另外,例如,存储器修改跟踪组件140可以指示针对其激活存储器陷阱功能122的存储器的部分(例如,页面),和/或GPU114可以在指定部分上或者在与图形处理操作相关的所有部分上激活存储器陷阱功能122。
在另一示例中,处理器104(例如,经由应用110或另一应用)也可以执行图形处理操作,其引起修改存储器106的部分。在该示例中,未被示出的存储器陷阱功能也可以针对处理器(例如,CPU)104而被激活。在一个示例中,存储器陷阱功能122可以能够检测对存储器106的修改而不管GPU 114或处理器104是否修改了存储器,并且针对两种操作都可以充当存储器陷阱功能。
在一个示例中,在动作204处激活存储器陷阱功能可以可选地包括:在动作206处,针对存储器的多个部分中的每个部分,设置针对每个部分启用存储器陷阱功能的指示。例如,存储器的每个部分可以具有相关联的比特或其他指示符,其指定是否针对存储器的该部分启用了存储器陷阱。存储器修改跟踪组件140和/或GPU 114可以针对与图形处理操作相关的一组部分(例如,页面)或者针对在激活存储器陷阱功能122时可以被指示的特定部分设置该比特或其他指示符。
在动作208处,针对已执行图形处理操作的序列中的每个已执行图形处理操作,可以接收多个存储器访问命令的序列以及基于执行已执行图形处理操作的序列而被修改的关联的存储器部分。在一个示例中,例如与处理器104、存储器106等结合的存储器修改跟踪组件140可以针对已执行图形处理操作的序列中的每个已执行图形处理操作来接收多个存储器访问命令的序列以及基于执行已执行图形处理操作的序列而被修改的关联的存储器部分。例如,应用110和/或另一应用、处理器等可以向GPU 114提供图形处理操作(例如,作为一组绘制指令),以有利于图形的绘制以供显示。例如,GPU 114可以被设计来与CPU操作并发地(例如,与CPU操作分开地)高效地处理图形处理操作。
GPU 114可以相应地执行图形处理操作,并且针对每个存储器修改(例如,在设置了针对关联的存储器部分的比特指示符的情况下),存储器陷阱功能122可以经由指定的回调组件142回调到存储器修改跟踪组件140。回调可以包括对GPU在执行图形处理操作中修改的存储器的部分(例如页面)以及一个或多个相关联的存储器访问命令(例如,读取、写入等)的指示。因此,例如,存储器修改跟踪组件140可以经由回调组件142接收对被修改的存储器的部分和对应的(多个)存储器访问命令的指示。例如,在每个操作被执行时(例如,回调可以针对每个图形处理操作而发生),存储器修改跟踪组件140可以接收对GPU修改的存储器的部分以及与图形处理操作相对应的一个或多个关联的存储器访问命令的指示。在一个示例中,这可以允许按顺序存储存储器的部分的副本以及相关联的存储器访问命令。在其他示例中,如上所述,处理器104也可以执行图形处理操作,针对图形处理操作可以执行存储器陷阱,以报告存储器访问命令和/或关联的存储器部分(例如,经由回调组件142或另一注册的回调)。
在动作210处,多个存储器访问命令的序列中的每个存储器访问命令以及关联的存储器部分可以被存储在储存库中。在一个示例中,例如与处理器104、存储器106、存储器修改跟踪组件140等相结合的日志记录组件144可以在存储库(例如,命令/资源存储库146)中存储多个存储器访问命令的序列中的每个存储器访问命令和关联的存储器部分。例如,日志记录组件144可以存储在执行图形处理操作(例如,读取、写入等)时(例如,由GPU 114)执行的存储器访问命令以及被命令/资源存储库146中的存储器访问命令所影响的关联的存储器部分(例如,存储器106的页面)的副本。通过将存储器访问命令和/或存储器的相关部分提供给GPU 114以供重新执行,这可以允许模拟图形处理操作的回放,如本文中进一步描述的。此外,例如,GPU 114可以基于回调来阻止图形处理操作的处理,以允许应用110无冲突地复制存储器的该部分,并且一旦存储被完成,存储器修改跟踪组件140就可以相应地通知GPU 114(例如,通过基于存储的完成而设置GPU上的寄存器),以允许GPU 114解除阻止并继续处理图形处理操作。
附加地,可选地在动作212处,可以基于存储关联的存储器部分来设置针对存储器的每个部分禁用存储器陷阱功能的指示。在一个示例中,例如,与处理器104、存储器106等相结合的存储器修改跟踪组件140可以基于存储关联的存储器部分来设置针对存储器的每个部分禁用存储器陷阱功能的指示。在该示例中,存储器陷阱功能122不需要确定存储器的这些部分在后续的图形处理操作中是否被修改。然而,在本文进一步描述的一些示例中,CPU也可以执行图形处理操作或修改由GPU使用的资源,并且具有关联的存储器陷阱功能。在该示例中,存储器修改跟踪组件140(例如,基于例如经由应用110在处理器104上执行的存储器陷阱功能150的回调)可以启用CPU上(例如,处理器104上)的存储器陷阱功能,其中在执行图形处理操作中,CPU修改存储器的部分。因此,还可以使用回调组件142(或向存储器陷阱功能150注册的另一回调组件)捕获并报告CPU进行的这样的修改。
在动作214处,关联的存储器部分和多个存储器访问命令的序列的至少一部分可以被提供给GPU,以模拟GPU对已执行图形处理操作的序列的重新执行。在一个示例中,例如,与处理器104、存储器106等相结合的回放组件148可以向GPU(例如,GPU 114)提供关联的存储器部分和多个存储器访问命令的序列的至少一部分,以模拟GPU 114对已执行图形处理操作的序列的重新执行。例如,这可以允许GPU处理操作或者至少对存储器的对应修改的高效回放,以用于调试、评估GPU 114性能等。回放组件148还可以将存储器的初始状态提供给GPU 114,作为用于在关联的存储器部分上执行多个存储器访问命令的起点,以模拟已执行图形处理操作的序列的重新执行。另外,如本文中进一步描述的,可以在回放GPU处理操作时修改GPU设置、图形处理操作参数等,以评估修改可以如何影响GPU 114性能。
可选地,在动作216处(例如,作为向GPU提供存储器访问命令和关联的存储器部分的附加或备选),可以分析多个存储器访问命令的序列的一部分和关联的存储器部分,以生成已执行图形处理操作的序列的一部分。在一个示例中,例如与处理器104、存储器106等相结合的回放组件148可以分析多个存储器访问命令的序列的部分以及关联的存储器部分,以生成已执行图形处理操作的序列的一部分。例如,存储器访问命令的顺序可以指示某些GPU图形处理操作,并且存储器的各部分可以指示在存储器的哪些部分(例如,页面)上执行了图形处理操作。因此,已执行图形处理操作的序列可以被重建,以作为一组图形处理操作在GPU 114上回放(例如,与显式的存储器访问相反或者附加于显式的存储器访问)。
图3是用于回放或模拟图形处理操作的回放的方法300的示例的流程图。例如,作为用于执行方法300的环境的非限制性示例,方法300可以由计算设备100执行,并且因此参考图1而被描述。
在方法300中,在动作210处,多个存储器访问命令的序列中的每个存储器访问命令以及关联的存储器部分可以被存储在存储库中。在一个示例中,例如与处理器104、存储器106、存储器修改跟踪组件140等结合的日志记录组件144可以在存储库(例如,命令/资源存储库146)中存储多个存储器访问命令的序列中的每个存储器访问命令和关联的存储器部分,如先前参考图2所描述的。此外,可以发生图2中描述的动作中的一个或多个动作,以获取用于存储在存储库中的多个存储器访问命令的序列以及关联的存储器部分。如本文所述,可以在回放之前进行一个或多个修改以测试GPU 114在某些情形中的性能。
可选地,在动作302处,GPU的一个或多个设置可以被修改。在一个示例中,例如与处理器104、存储器106等结合的回放组件148可以修改GPU的一个或多个设置。例如,回放组件148可以修改GPU 114的缓存行为、GPU 114所使用的页面大小等。
可选地,在动作304处,多个存储器访问命令的序列的至少一部分中的一个或多个存储器访问命令可以被修改。在一个示例中,例如与处理器104、存储器106等结合的回放组件148可以修改多个存储器访问命令的序列的至少一部分中的一个或多个存储器访问命令。例如,回放组件148可以修改存储器访问命令来对应于不同的图形处理操作,以执行不同的存储器访问命令等,从而评估GPU 114响应的性能。在另一示例中,在基于存储器访问命令和关联的存储器部分来重新构建图形处理操作的情况下,回放组件148可以在回放之前在这方面修改图形处理操作的一个或多个参数。
在动作214处,多个存储器访问命令的序列的至少一部分和关联的存储器部分可以被提供给GPU,以模拟GPU对已执行图形处理操作的序列的重新执行。在一个示例中,例如与处理器104、存储器106等结合的回放组件148可以向GPU(例如,GPU 114)提供多个存储器访问命令的序列的至少一部分和关联的存储器部分,以模拟GPU 114对已执行图形处理操作的序列的重新执行。例如,回放组件148可以在修改一个或多个设置或存储器访问命令之后提供信息以模拟重新执行,以允许调试、评估GPU 114的性能等。
图4图示了根据本文所述的示例的用于将图形处理操作或至少相关的存储器修改捕获在存储库中的***的通信流400的示例。示出了CPU 402和GPU 404,其中CPU 402可以对应于处理器104(在图1中),GPU 404可以对应于GPU 114,其中CPU 402和GPU 404可以彼此通信以执行图形处理操作。还示出了存储器406,其可以对应于存储器106,并且CPU 402和/或GPU 404可以在执行图形处理操作时访问存储器406。例如,存储器406可以存储一个或多个资源,其可以对应于本文中所描述的存储器的部分(例如,页面),包括资源1408、……、资源N 410。存储器406还可以包括命令缓冲器412,其用于存储用于在GPU 404上执行图形处理操作的GPU命令。此外,示出了存储库414,其用于存储如本文所述的存储器访问命令416和存储器资源的副本,诸如资源副本1 418、……、资源副本N 420。
CPU 402可以在430处将存储器资源加载到存储器406中。例如,CPU 402可以加载用于执行一组图形处理操作的存储器,诸如用于图形处理操作的存储器的一个或多个页面或其他部分,其可以包括资源1 408、……、资源N 410。CPU 402还可以在432处编写用于执行图形处理操作的GPU命令,该GPU命令可以包括用于绘制要显示的图像的绘制指令。GPU命令可以被存储在存储器406中的命令缓冲器412中。CPU 402可以另外捕获可以被存储在存储库414中的(例如,诸如资源1 408、……、资源N 410的已加载资源的)存储器的初始状态。
CPU 402可以在436处指令GPU 404执行GPU命令,其可以包括:提供手柄、指针或有关命令缓冲器412的其他信息、对应资源(例如,资源1 408、……、资源N 410等)。因此,GPU404可以在438处从存储器406中的命令缓冲器412获取GPU命令。GPU 404然后可以执行GPU命令,这引起执行存储器访问。诸如读取操作440、写入操作442和读取操作444。在针对GPU404激活存储器陷阱的情况下,如所述的,读取操作440、写入操作442和读取操作444也可以被复制到存储库414中,其可以包括将命令本身(或其指示)复制到命令416中,以及将存储器的受影响部分的副本作为资源副本1418、……、资源副本N 420。
例如,在存储器陷阱处于页面级别的情况下,如上所述,执行读取操作440、写入操作442和读取操作444可以引起存储受每个操作影响的存储器的(多个)页面。如所描述的,这可以包括:当相关联的资源408、410被修改时,GPU 404在CPU 402上将回调功能调用回来,并且CPU 402可以将相关联的(多个)命令416和/或对应的资源副本418、420存储在存储库414中。在另一示例中,CPU 402可以在资源被创建(例如,被分配给GPU 404)时构建资源表,并且然后在资源被修改时使用由GPU 404实例化的回调功能中陷阱的页面地址,以查找用于修改资源的整体的存储器范围。然后,在该示例中,CPU 402可以捕获与修改后的资源的整体相对应的存储器范围,并将其写入存储库414。一旦被存储在存储库中,命令就可以从初始状态被回放,以模拟图形处理操作的重新执行。
图5图示了根据本文所述的示例的用于回放图形处理操作或至少相关的存储器修改的***的通信流500的示例。示出了CPU 402和GPU 404,其中CPU 402可以对应于处理器104(在图1中),GPU 404可以对应于GPU 114,其中CPU 402和GPU 404可以彼此通信以执行图形处理操作。还示出了存储器406,其可以对应于存储器106,并且CPU 402和/或GPU 404可以在执行图形处理操作时访问存储器406。另外,示出了存储库414,其用于存储如本文所述的存储器访问命令416和存储器资源的副本,诸如资源副本1 418、……、资源副本N 420。如上所述,可以生成存储库以包括来自图形处理操作的序列的各种存储器访问命令和/或相关的存储器资源副本。
CPU 402可以在502处为存储器406设置初始状态,其可以对应于在执行图形处理操作之前、诸如在图4中的434处所捕获的初始状态。CPU 402可以指令GPU 404在504处执行与先前执行的图形处理操作相对应的存储器访问命令,以模拟图形处理操作的重新执行。如所描述的,GPU 404的一个或多个设置、命令416等可以被修改以在不同的状态或环境中调试和/或测试GPU 114的性能。在这方面,GPU 404可以获取命令416,并且可以开始执行存储器访问命令,诸如读取操作508、写入操作510和读取操作512,其可以对应于读取操作440、写入操作442和读取操作444。例如,GPU 404可以基于操作508、510、512来修改存储器406以及包括资源副本1 418、……、资源副本N 420等等的对应的存储器资源副本(例如,存储器的页面或其他部分),以模拟图形处理操作的回放。
图6图示了计算设备100的示例,其包括如图1中所示的那些的附加可选组件细节。在一个示例中,计算设备100可以包括处理器104,以用于执行与本文中所描述的组件和功能中的一个或多个相关联的处理功能。处理器104可以包括单组或多组处理器或多核处理器。此外,处理器104可以被实现为集成处理***和/或分布式处理***。
计算设备100还可以包括存储器106,诸如用于存储由处理器104执行的应用的本地版本、相关指令、参数等。存储器106可以包括计算机可用的存储器类型,诸如随机存取存储器(RAM)、只读存储器(ROM)、磁带、磁盘、光盘、易失性存储器、非易失性存储器及其任何组合。另外,处理器104和存储器106可以包括并执行在如本文所述的处理器104上执行的操作***、一个或多个应用、显示驱动器等和/或计算设备100的其他组件。
此外,计算设备100可以包括通信组件602,该通信组件602利用本文所述的硬件、软件和服务来提供建立和维护与一个或多个其他设备、各方、各实体等等的通信。通信组件602可以携载计算设备100上的组件之间以及计算设备100与外部设备之间的通信,该外部设备诸如是位于通信网络上的设备和/或串行或本地连接到计算设备100的设备。例如,通信组件602可以包括一个或多个总线,并且还可以包括可操作用于与外部设备进行接口的、分别与无线或有线传输器和接收器相关联的传输链组件和接收链组件。
另外,计算设备100可以包括数据存储库604,该数据存储库604可以是硬件和/或软件的任何合适组合,其提供结合本文所描述的示例而被采用的信息、数据库和程序的大容量存储装置。例如,数据存储库604可以是或者可以包括用于当前未被处理器104执行的应用和/或相关参数的数据存储库。此外,数据存储库604可以是用于计算设备100的一个或多个其他组件和/或处理器104上执行的操作***、应用、显示驱动器等等的数据存储库。
计算设备100还可以包括用户接口组件606,该用户接口组件606可操作以从计算设备100的用户接收输入,并且还可操作以生成输出以呈现给用户(例如,经由到显示设备的显示接口116)。用户接口组件606可以包括一个或多个输入设备,包括但不限于键盘、数字键盘、鼠标、触敏显示器、导航键、功能键、麦克风、语音识别组件、手势识别组件、深度传感器、凝视跟踪传感器、能够从用户接收输入的任何其他机构或其任何组合。此外,用户接口组件606可以包括一个或多个输出设备,包括但不限于显示接口116、扬声器、触觉反馈机构、打印机、能够向用户呈现输出的任何其他机构或其任何组合。
计算设备100还可以包括如本文所述的GPU 114,以用于基于从处理器104接收到的绘制指令来绘制图像。GPU 114可以另外经由显示接口116发送信号,以引起绘制的图像在显示器上(未被示出)的显示。另外,计算设备100可以包括如本文所述的存储器修改跟踪组件140,以跟踪和捕获通过执行图形处理操作所引起的存储器(例如,存储器106)的修改。例如,存储器修改跟踪组件140可以将捕获信息存储在如本文所述的数据存储库604中,以供后续回放。计算设备100还可以包括回放组件148,以用于将捕获信息提供回GPU 114,以模拟所描述的图形处理操作的重新执行。
例如,可以用包括一个或多个处理器的“处理***”来实现一个元素、或元素的任何部分、或元素的任何组合。处理器的示例包括微处理器、微控制器、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、可编程逻辑设备(PLD)、状态机、门控逻辑、分立硬件电路以及被配置为执行在整个本公开中描述的各种功能性的其他合适硬件。处理***中的一个或多个处理器可以执行软件。软件应广义地被解释为意指指令、指令集、代码、代码段、程序代码、程序、子程序、软件模块、应用、软件应用、软件封装、例程、子例程、对象、可执行文件、执行线程、过程、功能等等,无论是被称为软件、固件、中间件、微代码、硬件描述语言还是其他。
因此,在一个或多个示例中,所描述的一个或多个功能可以以硬件、软件、固件或其任何组合来实现。如果以软件实现,则功能可以被存储在计算机可读介质上的一个或多个指令或代码上或者被编码为计算机可读介质上的一个或多个指令或代码。计算机可读介质包括计算机存储介质。存储介质可以是计算机可以访问的任何可用介质。作为示例而非限制,这样的计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储装置、磁盘存储装置或其他磁性存储设备、或者可以被用来以指令或数据结构的形式携载或存储所需的程序代码并且可以由计算机访问的任何其他介质。本文所使用的磁盘和光盘包括压缩盘(CD)、激光光盘、光盘、数字多功能光盘(DVD)和软盘,其中磁盘通常以磁性方式复制数据,而光盘通过激光以光学方式复制数据。上述的组合也应被包括在计算机可读介质的范围内。
先前的描述被提供来使本领域的任何技术人员能够实践本文所描述的各种示例。对这些示例的各种修改对于本领域技术人员将是显而易见的,并且本文中定义的一般原理可以被应用于其他示例。因此,权利要求书不旨在受限于本文中所示出的示例,而是符合与语言权利要求书相一致的完整范围,其中除非明确说明,否则以单数形式对元素的引用不旨在意指“一个且仅一个”,而是“一个或多个”。除非另有明确说明,否则术语“一些”是指一个或多个。本领域普通技术人员已知或以后知道的本文所述的各种示例的元素的所有结构和功能等同物通过引用被明确地并入本文,并且旨在由权利要求书所涵盖。而且,无论在权利要求书中是否明确记载了本文所公开的内容,这样的内容都不旨在捐献于公众。除非使用短语“用于……的装置”明确记载权利要求元素,否则任何权利要求元素都不应被解释为装置加功能。

Claims (21)

1.一种用于捕获和执行图形处理操作的方法,包括:
激活存储器陷阱功能,以使图形处理单元GPU报告在执行图形处理操作中的存储器访问;
基于激活所述存储器陷阱功能并且针对由所述GPU执行的已执行图形处理操作的序列中的每个已执行图形处理操作,接收多个存储器访问命令的序列以及关联的被修改存储器部分,其中所述关联的被修改存储器部分基于执行所述已执行图形处理操作的序列而从初始状态被修改;
在存储库中存储所述多个存储器访问命令的序列中的每个存储器访问命令以及关联的被修改存储器部分;以及
向所述GPU提供所述多个存储器访问命令的序列的至少一部分以及关联的被修改存储器部分,以基于多个存储器访问命令的序列的所述至少一部分以及关联的被修改存储器部分,模拟所述GPU对所述已执行图形处理操作的序列的重新执行。
2.根据权利要求1所述的方法,其中激活所述存储器陷阱功能包括向所述GPU提供中断通道,其中所述多个存储器访问命令的序列和关联的存储器部分通过所述中断通道而被接收。
3.根据权利要求2所述的方法,其中在所述存储库中存储所述多个存储器访问命令的序列中的每个存储器访问命令以及关联的存储器部分包括:基于所述存储的完成,设置所述GPU上的寄存器以允许所述GPU继续处理图形处理操作。
4.根据权利要求1所述的方法,其中存储器部分各自对应于存储器的页面,并且其中激活所述存储器陷阱功能包括设置针对所述存储器的每个页面的比特,所述比特指示是否针对存储器的所述页面执行所述存储器陷阱功能。
5.根据权利要求4所述的方法,还包括:基于存储所述存储器的每个页面,将针对所述存储器的每个页面的所述比特设置为指示不执行针对存储器的所述页面的所述存储器陷阱功能。
6.根据权利要求1所述的方法,还包括:在所述存储库中存储所述存储器的初始状态,并且在模拟所述已执行图形处理操作的序列的所述重新执行中向所述GPU提供所述存储器的所述初始状态。
7.根据权利要求1所述的方法,还包括:在至少部分地基于所述GPU的修改后的一个或多个设置来模拟所述已执行图形处理操作的序列的所述重新执行中、向所述GPU提供所述多个存储器访问命令的序列的所述至少一部分以及关联的存储器部分之前,修改所述GPU的所述一个或多个设置。
8.根据权利要求1所述的方法,还包括:在模拟包括修改后的所述多个存储器访问命令的序列的所述至少一部分中的一个或多个存储器访问命令的所述已执行图形处理操作的序列的所述重新执行中,在提供所述多个存储器访问命令的序列的所述至少一部分和关联的存储器部分之前,修改所述多个存储器访问命令的序列的所述至少一部分中的所述一个或多个存储器访问命令。
9.根据权利要求1所述的方法,还包括:分析所述多个存储器访问命令的序列的一部分以及关联的存储器部分,以生成所述已执行图形处理操作的序列的一部分。
10.根据权利要求1所述的方法,还包括:
针对由CPU执行的中央处理单元(CPU)执行的图形处理操作的序列中的每个图形处理操作,接收多个CPU存储器访问命令的序列以及基于执行所述CPU执行的图形处理操作的序列而被修改的关联的存储器CPU部分;以及
在所述存储库中存储所述多个CPU存储器访问命令的序列中的每个CPU存储器访问命令以及关联的存储器CPU部分。
11.根据权利要求1所述的方法,还包括:
使用多个存储器访问命令的序列的所述至少一部分以及所述关联的被修改存储器部分,对已执行图像处理操作进行模拟执行。
12.一种用于捕获和执行图形处理操作的计算设备,包括:
存储器,存储用于执行操作***和一个或多个应用的一个或多个参数或指令;
显示接口,被配置用于传送信号以在显示器上显示图像;以及
至少一个处理器,耦合到所述存储器和所述显示接口,其中所述至少一个处理器被配置为:
激活存储器陷阱功能,以使图形处理单元GPU报告在执行图形处理操作中的存储器访问;
基于激活所述存储器陷阱功能并且针对由所述GPU执行的已执行图形处理操作的序列中的每个已执行图形处理操作,接收多个存储器访问命令的序列以及关联的被修改存储器部分,其中所述关联的被修改存储器部分基于执行所述已执行图形处理操作的序列而从初始状态被修改;
在存储库中存储所述多个存储器访问命令的序列中的每个存储器访问命令以及关联的被修改存储器部分;以及
向所述GPU提供所述多个存储器访问命令的序列的至少一部分以及关联的被修改存储器部分,以基于所述多个存储器访问命令的序列的所述至少一部分以及所述关联的被修改存储器部分,模拟所述GPU对所述已执行图形处理操作的序列的重新执行。
13.根据权利要求12所述的计算设备,其中所述至少一个处理器被配置为至少部分地通过向所述GPU提供中断通道来激活所述存储器陷阱功能,其中所述多个存储器访问命令的序列和关联的存储器部分通过所述中断通道而被接收。
14.根据权利要求12所述的计算设备,其中存储器部分各自对应于存储器的页面,并且其中所述至少一个处理器被配置为:至少部分地通过设置针对所述存储器的每个页面的比特来激活所述存储器陷阱功能,所述比特指示是否针对存储器的所述页面执行所述存储器陷阱功能。
15.根据权利要求12所述的计算设备,其中所述至少一个处理器还被配置为:在所述存储库中存储所述存储器的初始状态,并且在模拟所述已执行图形处理操作的序列的所述重新执行中向所述GPU提供所述存储器的所述初始状态。
16.根据权利要求12所述的计算设备,其中所述至少一个处理器还被配置为:在至少部分地基于所述GPU的修改后的一个或多个设置来模拟所述已执行图形处理操作的序列的所述重新执行中、向所述GPU提供所述多个存储器访问命令的序列的所述至少一部分以及关联的存储器部分之前,修改所述GPU的所述一个或多个设置。
17.根据权利要求12所述的计算设备,其中所述至少一个处理器还被配置为:在模拟包括修改后的所述多个存储器访问命令的序列的所述至少一部分中的一个或多个存储器访问命令的所述已执行图形处理操作的序列的所述重新执行中,在提供所述多个存储器访问命令的序列的所述至少一部分和关联的存储器部分之前,修改所述多个存储器访问命令的序列的所述至少一部分中的所述一个或多个存储器访问命令。
18.根据权利要求12所述的计算设备,其中所述至少一个处理器还被配置为:分析所述多个存储器访问命令的序列的一部分以及关联的存储器部分,以生成所述已执行图形处理操作的序列的一部分。
19.一种非瞬态计算机可读介质,包括由一个或多个处理器可执行的用于捕获和执行图形处理操作的代码,所述代码包括用于以下各项的代码:
激活存储器陷阱功能,以使图形处理单元GPU报告在执行图形处理操作中的存储器访问;
基于激活所述存储器陷阱功能并且针对由所述GPU执行的已执行图形处理操作的序列中的每个已执行图形处理操作,接收多个存储器访问命令的序列以及关联的被修改存储器部分,其中所述关联的被修改存储器部分基于执行所述已执行图形处理操作的序列而从初始状态被修改;
在存储库中存储所述多个存储器访问命令的序列中的每个存储器访问命令以及关联的被修改存储器部分;以及
向所述GPU提供所述多个存储器访问命令的序列的至少一部分以及关联的被修改存储器部分,以基于多个存储器访问命令的序列的所述至少一部分以及关联的被修改存储器部分,模拟所述GPU对所述已执行图形处理操作的序列的重新执行。
20.根据权利要求19所述的非瞬态计算机可读介质,其中用于激活所述存储器陷阱功能的所述代码包括,用于向所述GPU提供中断通道的代码,其中所述多个存储器访问命令的序列和关联的存储器部分通过所述中断通道而被接收。
21.根据权利要求19所述的非瞬态计算机可读介质,其中存储器部分各自对应于存储器的页面,并且其中用于激活所述存储器陷阱功能的代码包括,用于设置针对所述存储器的每个页面的比特的代码,所述比特指示是否针对存储器的所述页面执行所述存储器陷阱功能。
CN201880080708.9A 2017-12-13 2018-11-23 用于捕获和执行图形处理操作的技术 Active CN111465923B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/840,658 2017-12-13
US15/840,658 US10593010B2 (en) 2017-12-13 2017-12-13 Techniques for capturing and executing graphics processing operations
PCT/US2018/062385 WO2019118148A1 (en) 2017-12-13 2018-11-23 Techniques for capturing and executing graphics processing operations

Publications (2)

Publication Number Publication Date
CN111465923A CN111465923A (zh) 2020-07-28
CN111465923B true CN111465923B (zh) 2024-03-19

Family

ID=64949377

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880080708.9A Active CN111465923B (zh) 2017-12-13 2018-11-23 用于捕获和执行图形处理操作的技术

Country Status (4)

Country Link
US (1) US10593010B2 (zh)
EP (1) EP3724765A1 (zh)
CN (1) CN111465923B (zh)
WO (1) WO2019118148A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10733076B2 (en) * 2018-03-02 2020-08-04 Microsoft Technology Licensing, Llc Techniques for detecting faults in rendering graphics
JP7367365B2 (ja) * 2019-07-23 2023-10-24 富士通株式会社 タスク実行管理装置、タスク実行管理方法、および、タスク実行管理プログラム
LU101770B1 (en) * 2020-05-05 2021-11-05 Microsoft Technology Licensing Llc Memory page markings as logging cues for processor-based execution tracing

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7095416B1 (en) * 2003-09-22 2006-08-22 Microsoft Corporation Facilitating performance analysis for processing
US7711990B1 (en) * 2005-12-13 2010-05-04 Nvidia Corporation Apparatus and method for debugging a graphics processing unit in response to a debug instruction
CN103902369A (zh) * 2012-12-27 2014-07-02 辉达公司 陷阱处理期间的协作线程阵列的粒度上下文切换

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5369744A (en) * 1989-10-16 1994-11-29 Hitachi, Ltd. Address-translatable graphic processor, data processor and drawing method with employment of the same
US7133820B2 (en) * 2000-03-15 2006-11-07 Arc International Method and apparatus for debugging programs in a distributed environment
US6947051B2 (en) * 2003-02-18 2005-09-20 Microsoft Corporation Video memory management
US7533371B1 (en) * 2003-09-22 2009-05-12 Microsoft Corporation User interface for facilitating performance analysis for processing
US8872823B2 (en) * 2009-10-09 2014-10-28 Microsoft Corporation Automatic real-time shader modification for texture fetch instrumentation
US8935671B2 (en) 2011-10-11 2015-01-13 Apple Inc. Debugging a graphics application executing on a target device
WO2016082073A1 (en) * 2014-11-24 2016-06-02 Intel Corporation Support for application transparent, high available gpu computing with vm checkpointing
US9626313B2 (en) * 2014-12-18 2017-04-18 Qualcomm Incorporated Trace buffer based replay for context switching

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7095416B1 (en) * 2003-09-22 2006-08-22 Microsoft Corporation Facilitating performance analysis for processing
US7711990B1 (en) * 2005-12-13 2010-05-04 Nvidia Corporation Apparatus and method for debugging a graphics processing unit in response to a debug instruction
CN103902369A (zh) * 2012-12-27 2014-07-02 辉达公司 陷阱处理期间的协作线程阵列的粒度上下文切换

Also Published As

Publication number Publication date
EP3724765A1 (en) 2020-10-21
US10593010B2 (en) 2020-03-17
WO2019118148A1 (en) 2019-06-20
US20190180407A1 (en) 2019-06-13
CN111465923A (zh) 2020-07-28

Similar Documents

Publication Publication Date Title
EP3788490B1 (en) Execution control with cross-level trace mapping
CN108717393B (zh) 一种应用程序测试方法及移动终端
US8719800B2 (en) Accelerating replayed program execution to support decoupled program analysis
US9747191B1 (en) Tool to replicate actions across devices in real time for improved efficiency during manual application testing
CN111465923B (zh) 用于捕获和执行图形处理操作的技术
US9436449B1 (en) Scenario-based code trimming and code reduction
US9819758B2 (en) Remote debugging into mobile web applications across devices
US20120239987A1 (en) System and Method of Manipulating Virtual Machine Recordings for High-Level Execution and Replay
CN110998541B (zh) 调试器中的代码的试验性执行
US20160300044A1 (en) Anti-debugging method
JP4846493B2 (ja) デバッグシステム及びデバッグ回路
KR20210032379A (ko) 이미지 광선 추적과 연관된 셰이더 테이블을 디스플레이하기 위한 기술들
US8752027B2 (en) Injecting faults into program for testing software
US20160077850A1 (en) Methods, systems, and media for binary compatibility
US10394680B2 (en) Techniques for tracking graphics processing resource utilization
US20150143342A1 (en) Functional validation of software
US20060265718A1 (en) Injection-based simulation for button automation on button-aware computing platforms
US10733076B2 (en) Techniques for detecting faults in rendering graphics
US10546416B2 (en) Techniques for modifying graphics processing unit (GPU) operations for tracking in rendering images
Sironi et al. Capturing information flows inside android and qemu environments
KR101976993B1 (ko) 모바일 코드 자동 분석을 위한 동적 바이너리 계측 코드추출장치 및 그 방법
JP6907624B2 (ja) 再現装置、再現方法及び再現プログラム
Abdallah et al. Performance Impact of Fuzz Testing Windows Embedded Handheld Applications.
CN112667357A (zh) 基于虚拟机的数据处理方法和装置、网络设备和存储介质
WO2019036101A1 (en) CORRELATION OF FUNCTION CALLS WITH FUNCTIONS IN ASYNCHRONOUSLY EXECUTED SONES

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant