当前位置: 首页 > 专利查询>英特尔公司专利>正文

生成图形处理器代码的不同踪迹制造技术

技术编号:27571866 阅读:18 留言:0更新日期:2021-03-09 22:19
系统、方法、计算机程序产品和设备用于:确定在图形处理器上执行的经插桩的二进制代码的多个块中的每个块所生成的踪迹记录的计数,每个踪迹记录包括踪迹记录类型,踪迹记录类型具有多个踪迹记录类型;确定要在图形处理器上执行的经插桩的二进制代码的多个块中的每个块的相应执行计数;以及基于确定的每个块生成的踪迹记录的计数和每个块的执行计数来确定要在存储器中分配的多个踪迹缓冲区中每个踪迹缓冲区的相应大小,每个踪迹缓冲区存储多个踪迹记录类型中的相应一个踪迹记录类型的踪迹记录。迹记录。迹记录。

【技术实现步骤摘要】
生成图形处理器代码的不同踪迹
相关申请的交叉引用
[0001]本申请涉及2019年3月8日提交的题为“用于追踪图形处理器代码的二进制插桩(BINARY INSTRUMENTATION TO TRACE GRAPHICS PROCESSOR CODE)”的美国专利申请第16/296,357号。前述专利申请通过引用整体并入本文中。

技术介绍

[0002]由于当在计算系统上执行代码时可以生成剖析数据,动态剖析成为分析和调整计算机代码的有用手段。一些此类解决方案需要捕获踪迹,诸如控制流踪迹和/或存储器访问踪迹。随着诸如图形处理器之类的现代系统实现可并行执行代码的多个处理元件,捕获此类踪迹数据的复杂度增加了。
附图说明
[0003]图1示出系统的实施例。
[0004]图2示出第一逻辑流程的示例。
[0005]图3示出用于生成图形处理器代码的不同踪迹的预处理阶段的实施例。
[0006]图4A-4B示出处理阶段期间用于收集数据的动态踪迹缓冲区的实施例。
[0007]图5示出用于组合图形处理器代码的不同踪迹的后处理阶段的示例。
[0008]图6示出第二逻辑流程的示例。
[0009]图7示出第三逻辑流程的示例。
[0010]图8示出第四逻辑流程的示例。
[0011]图9示出存储介质的实施例。
[0012]图10示出系统的实施例。
具体实施方式
[0013]本文公开的实施例提供了经由二进制代码的插桩,从在一个或多个图形处理器(GPU)的多个执行单元上执行的二进制代码动态地生成不同类型和/或大小的多个踪迹的技术。通常,本文公开的实施例可以为每个类型的踪迹在共享存储器中分配踪迹缓冲区。在GPU上执行经插桩的二进制代码期间,可以在相应的缓冲区中收集和存储踪迹数据。一旦经插桩的二进制代码的执行完成,本文公开的实施例就可以组合存储在每个缓冲区中的数据以生成最终踪迹。
[0014]更一般地,本文公开的实施例可包括三个处理阶段,即预处理阶段、处理阶段和后处理阶段。在预处理阶段,本文公开的实施例可以分析二进制代码以确定二进制代码的一个或多个基本块,以及执行每个基本块的频率。基于该分析,本文公开的实施例可以针对每个踪迹类型确定共享存储器中相对应的踪迹缓冲区的大小。在处理阶段,在共享存储器中分配不同的踪迹缓冲区,并且由GPU执行经插桩的二进制代码。这样做并行地生成踪迹数据,可以将其存储在相对应的踪迹缓冲区中。在后处理阶段,基于经插桩的二进制代码的执
行顺序来解析、分析来自每个踪迹缓冲区的踪迹数据,并将其组合成最终踪迹。
[0015]有利地,即使GPU硬件表现出高度不确定性的行为,实施例提供了用于组合来自同一二进制代码的一次或多次执行的不同类型的多个踪迹的有效技术,因为GPU的数百个执行单元和/或硬件线程可以并行执行代码。此外,本文公开的实施例可被应用于任何应用的任何类型的踪迹生成,无论该应用实现的应用编程接口(API)的数量和/或类型。更进一步地,本文公开的实施例不需要中央处理单元(CPU)与GPU之间的同步,因为缓冲区大小是预定义的并且不会溢出。因此,GPU存储最小量信息,并且不需要停止执行二进制代码。此外,通过并行生成多个踪迹,本文公开的实施例不需要二进制代码的多个执行实例,并且不需要与组合由多个执行实例生成的踪迹以生成最终踪迹相关联的复杂分析。
[0016]根据对本文中使用的标记法和命名法的一般引用,可在计算机或计算机网络上执行的程序过程方面来呈现以下具体实施方式的一个或多个部分。这些过程描述和表示是领域内技术人员使用以便最有效地将他们的工作本质传达给其他本领域技术人员。过程在此或一般被构想为导致所期望结果的自洽的操作序列。这些操作是要求对物理量进行物理操纵的那些操作。通常但非必要地,这些量采取能够被存储、被传输、被组合、被比较并以其他方式被操纵的电、磁或光信号的形式。主要出于惯用法的原因,将这些信号称为位、值、元素、符号、字符、项、数字等等有时被证明是方便的。然而,应当注意,这些项和/或类似项旨在与适当的物理量相关联,并且仅仅是应用于那些量的方便的标记。
[0017]此外,通常按术语将这些操纵称为通常与由人类操作者执行的脑力操作相关联的相加或比较。然而,在形成一个或多个实施例的部分的本文中所描述的操作中的任何操作中,在大多数情况下,没有人类操作者的此类能力是必要的或期望的。相反,这些操作是机器操作。用于执行各实施例的操作的有用的机器包括通用数字计算机和/或包括出于所要求的目的而专门构造的装置,该通用数字计算机由存储于其中的、根据本文中的教导而被写入的计算机程序选择性地激活或配置。各实施例也涉及用于执行这些操作的装置或系统。这些装置可出于所要求的目的而专门被构造,或者可包含通用计算机。根据给定的描述,各种这些机器的所要求结构将是显而易见的。
[0018]现在将参考附图,自始至终相同的附图标记用于指相同的要素。在以下描述中,出于解释的目的,阐述了众多具体细节以便提供对该描述的透彻理解。然而,可能显而易见的是,可以在不具有这些具体细节的情况下实施新颖的实施例。在其他实例中,以框图形式示出了公知的结构和设备以便于对这些结构和设备的描述。本专利技术旨在涵盖权利要求范围之内的所有修改、等效方案和替换方案。
[0019]图1示出系统100的实施例。如图所示,系统100包括至少一个计算系统101。计算系统101可以是任何类型的计算系统,诸如服务器、工作站、膝上型设备、移动设备或虚拟化计算系统。例如,计算系统101是嵌入式系统,诸如深度学习加速器卡、具有深度学习加速的处理器、神经计算棒等。在一些示例中,计算系统101包括片上系统(SoC),并且在其他实施例中,计算系统101包括具有两个或更多个分立组件的印刷电路板或芯片封装。
[0020]如图所示,系统101包括一个或多个处理器102、一个或多个图形处理器103以及在CPU 102与图形处理器103之间共享的存储器104。CPU 102和图形处理器103可各自包括多个处理器核,其中每个核可包括多个处理线程。处理器102可包括通用处理器、专用处理器、中央处理器单元、控制器、微控制器等。图形处理器103可包括并行处理器单元(PPU)、图形
处理器单元(GPU)等。由于在CPU 102与图形处理器103之间共享存储器104,因此可以将存储器104的至少一部分分配给CPU 102,并且可以将存储器104的至少不同的部分分配给图形处理器103。
[0021]如图所示,存储器104包括插桩引擎106、经插桩的二进制代码107和多个踪迹缓冲区108。尽管被描绘成具体化为软件,但是插桩引擎106可包括硬件、软件和/或硬件和软件的组合。例如,硬件实现可包括诸如可编程逻辑阵列(PLA)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)之类的可配置逻辑,或使用诸如例如专用集成电路(ASIC)、互补金属氧化物半导体(CMOS)或晶体管-晶体管逻辑(TTL)技术之类的电路技术的固定功能逻辑硬本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种设备,包括:处理器;图形处理器;以及耦合到所述处理器和所述图形处理器的存储器,所述存储器存储指令,所述指令在由所述处理器执行时使所述处理器用于:确定要在所述图形处理器上执行的经插桩的二进制代码的多个块中的每个块生成的踪迹记录的计数,每个踪迹记录包括踪迹记录类型,所述踪迹记录类型具有多个踪迹记录类型;确定要在所述图形处理器上执行的经插桩的二进制代码的多个块中的每个块的相应执行计数;以及基于所确定的每个块生成的踪迹记录的计数和每个块的执行计数来确定要在存储器中分配的多个踪迹缓冲区的每个踪迹缓冲区的相应大小,每个踪迹缓冲区用于存储多个踪迹记录类型中的相应一个踪迹记录类型的踪迹记录。2.如权利要求1所述的设备,所述存储器存储在由所述处理器执行时使所述处理器用于以下操作的指令:确定多个踪迹记录类型中的每个踪迹记录类型的相应大小;以及基于每个踪迹记录类型的相应大小、每个块生成的踪迹记录的相应计数以及每个块的执行计数来确定要在存储器中分配的多个踪迹缓冲区的每个踪迹缓冲区的相应大小。3.如权利要求1所述的设备,基于所述经插桩的二进制代码的分析来确定由每个块生成的踪迹记录的计数,基于在所述图形处理器上的所述经插桩的二进制代码的第一执行实例来确定多个块中的每个块的执行计数,所述处理器或所述图形处理器中的一个用于分配和初始化所述存储器中的多个踪迹缓冲区。4.如权利要求3所述的设备,所述存储器存储指令,所述指令在由所述处理器执行时使经插桩的二进制代码的第二执行实例由所述图形处理器的多个处理器核的多个执行线程并行地执行。5.如权利要求4所述的设备,所述经插桩的二进制代码的第二执行实例基于每个踪迹数据记录的类型来生成要被存储在所述踪迹缓冲区中的踪迹数据记录。6.如权利要求5所述的设备,所述踪迹数据记录包括相应的执行线程的标识符、所述经插桩的二进制代码的相应块的标识符以及踪迹数据,每个踪迹缓冲区包括指向所述经插桩的二进制代码的第二执行实例期间相应踪迹缓冲区的下一个可用元素的指针。7.如权利要求6所述的设备,所述存储器存储在由所述处理器执行时使得所述处理器用于以下操作的指令:解析存储在所述多个踪迹缓冲区的每个踪迹缓冲区中的所述踪迹数据记录;以及至少部分地基于所述经插桩的二进制代码的块的标识符来组合经解析的踪迹数据记录,以生成所述经插桩的二进制代码的最终踪迹。8.如权利要求1所述的设备,所述多个踪迹缓冲区包括单个踪迹缓冲区或多个分开的踪迹缓冲区中的一种情况,经插桩的二进制代码包括汇编代码,每个块包括至少一个汇编代码行。9.如权利要求1所述的设备,所述存储器存储在由所述处理器执行时使得所述处理器
用于以下操作的指令:确定每个踪迹记录类型的相应大小;针对每个踪迹记录类型,基于由所述经插桩的二进制代码的多个块生成的踪迹记录的总和来计算所述踪迹记录类型的踪迹记录的总数;以及基于所述踪迹记录类型的踪迹记录的相应总数与每个踪迹记录类型的相应大小的乘积来确定每个踪迹缓冲区的大小。10.一种方法,包括:通过处理器确定要在图形处理器上执行的经插桩的二进制代码的多个块中的每个块生成的踪迹记录的计数,每个踪迹记录包括踪迹记录类型,所述踪迹记录类型具有多个踪迹记录类型;确定要在所述图形处理器上执行的经插桩的二进制代码的多个块中的每个块的相应执行计数;以及基于所确定的每个块生成的踪迹记录的计数和每个块的执行计数,来确定要在所述处理器和所述图形处理器共享的存储器中分配的多个踪迹缓冲区中的每个踪迹缓冲区的相应大小,每个踪迹缓冲区存储所述多个踪迹记录类型中的相应一个踪迹记录类型的踪迹记录。11.如权利要求10所述的方法,进一步包括:确定所述多个踪迹记录类型中每个踪迹记录类型的相应大小;以及基于每个踪迹记录类型的相应大小、每个块生成的踪迹记录的相应计数以及每个块的执行计数,来确定要在所述存储器中分配的多个踪迹缓冲区的每个踪迹缓冲区的相应大小。12.如权利要求1...

【专利技术属性】
技术研发人员:K
申请(专利权)人:英特尔公司
类型:发明
国别省市:

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

1