CN115809956B - 图形处理器性能分析方法、装置、计算机设备和存储介质 - Google Patents
图形处理器性能分析方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN115809956B CN115809956B CN202211655864.8A CN202211655864A CN115809956B CN 115809956 B CN115809956 B CN 115809956B CN 202211655864 A CN202211655864 A CN 202211655864A CN 115809956 B CN115809956 B CN 115809956B
- Authority
- CN
- China
- Prior art keywords
- gpu
- task
- access
- event
- gpu task
- 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
Links
- 238000004458 analytical method Methods 0.000 title claims abstract description 40
- 238000012545 processing Methods 0.000 claims abstract description 212
- 238000000034 method Methods 0.000 claims abstract description 135
- 230000015654 memory Effects 0.000 claims abstract description 115
- 230000008569 process Effects 0.000 claims abstract description 99
- 238000004590 computer program Methods 0.000 claims description 25
- 230000006399 behavior Effects 0.000 description 21
- 238000010586 diagram Methods 0.000 description 14
- 230000003993 interaction Effects 0.000 description 14
- 238000005457 optimization Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 5
- 238000012805 post-processing Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000007334 memory performance Effects 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000002194 synthesizing effect Effects 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 230000003321 amplification Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003199 nucleic acid amplification method Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请涉及一种图形处理器性能分析方法、装置、计算机设备和存储介质。所述方法包括:将中央处理器产生的GPU任务队列提交至图形处理器;GPU任务队列包括按开始处理时刻排序的多个GPU任务,每个GPU任务配置有GPU任务被处理时所需访问多个存储空间各自的访问地址;按照任务队列中每个GPU任务的处理时序,通过图形处理器对多个GPU任务进行处理;针对GPU任务处理过程中所需的内存访问过程,根据中央处理器与图形处理器针对内存访问过程所产生的访问时间信息,获取图形处理器和/或中央处理器针对每一GPU任务的执行性能参考信息。采用本方法能够在没有图形应用程序源代码的情况下,从整体上对图形应用程序进行优化,提高图形处理器的性能。
Description
技术领域
本申请涉及图形处理器性能调优技术领域,特别是涉及一种图形处理器性能分析方法、装置、计算机设备和存储介质。
背景技术
现代桌面操作系统,广泛依赖于图形处理器(GPU)进行加速,GPU可用于3D图形加速、视频编解码、高性能并行计算和显示输出等领域。GPU性能分析和优化是图形应用程序开发的一个重要方面,通过分析GPU的实际运行情况,找到硬件和软件性能瓶颈,并对驱动程序进行调整和优化,以最大程度地发挥GPU硬件性能。
传统技术中,为找到GPU性能问题的根源,往往需要对图形应用程序和图形系统的整体行为有所了解,从整体上对驱动程序进行优化,以绕开瓶颈。但是图形应用程序的源代码可能无法获取,不同操作系统的图形系统架构也可能不一样,导致无法对图形应用程序和图形系统的整体行为进行分析,无法获得准确的GPU性能数据。
发明内容
基于此,有必要针对上述技术问题,提供一种能够在没有图形应用程序的源代码的情况下从中央处理器和图形处理器的整体行为分析图形处理器性能的图形处理器性能分析方法、装置、计算机设备和存储介质。
第一方面,本申请提供了一种图形处理器性能分析方法。所述方法包括:
将中央处理器产生的GPU任务队列提交至图形处理器;GPU任务队列包括按开始处理时刻排序的多个GPU任务,每个GPU任务配置有GPU任务被处理时所需访问多个存储空间各自的访问地址;
按照任务队列中每个GPU任务的处理时序,通过图形处理器对多个GPU任务进行处理;
针对GPU任务处理过程中所需的内存访问过程,根据中央处理器与图形处理器针对内存访问过程所产生的访问时间信息,获取图形处理器和/或中央处理器针对每一GPU任务的执行性能参考信息。
在其中一个实施例中,将中央处理器产生的GPU任务队列提交至图形处理器,包括:
根据多个GPU任务创建事件,创建多个GPU任务,并由多个GPU任务组成GPU任务队列;
通过GPU访问事件,配置每个GPU任务被处理时所需访问的存储空间的访问地址;
通过GPU任务提交事件,将所述GPU任务队列提交至图形处理器。
在其中一个实施例中,按照所述任务队列中每个GPU任务的处理时序,通过图形处理器对所述多个GPU任务进行处理,包括:
通过任务开始事件,按照所述任务队列中每个GPU任务的处理时序,对所述任务开始事件对应的GPU任务进行处理,通过所述GPU访问事件访问GPU任务处理过程中所需访问的存储空间;
通过任务结束事件,结束所述GPU任务的处理过程。
在其中一个实施例中,针对任务处理过程中所需的内存访问过程,根据中央处理器与图形处理器针对内存访问过程所产生的访问时间信息,获取图形处理器和/或中央处理器针对每一GPU任务的执行性能参考信息,包括:
针对GPU任务处理过程中所需的内存访问过程,获取访问GPU任务对应的各访问地址对应的访问时长;
根据GPU任务创建事件,确定中央处理器创建的当前GPU任务与前一个GPU任务之间的等待时长;
根据GPU任务对应的访问时段和等待时长,确定图形处理器和/或中央处理器针对同一GPU任务的执行性能参考信息。
在其中一个实施例中,根据GPU任务对应的访问时段,以及GPU任务与前一个GPU任务之间的等待时长,确定图形处理器和/或中央处理器针对同一GPU任务的执行性能参考信息,包括:
若GPU任务对应的访问时长超过预设访问时长,且GPU任务对应的等待时长未超过预设创建时长,则确定图形处理器针对同一GPU任务的执行性能参考信息;
若GPU任务对应的访问时长未超过预设访问时长,且GPU任务对应的等待时长超过预设创建时长,则确定中央处理器针对同一GPU任务的执行性能参考信息。
在其中一个实施例中,所述方法还包括:将各GPU任务对应的GPU任务创建事件、访问事件、任务开始事件和任务结束事件按照处理时序,绘制在同一流程图中;流程图的横轴为时序,纵轴为CPU的线程号。
在其中一个实施例中,将各GPU任务对应的GPU任务创建事件、访问事件、任务提交事件、任务开始事件和任务结束事件按照处理时序,绘制在同一流程图中,包括:
将各GPU任务对应的GPU任务创建事件、访问事件、任务开始事件和任务结束事件按照处理时序的顺序排序,并选取首位的事件为当前事件,以及当前事件所在的目标线程;
若当前事件为访问事件,则在流程图中目标线程对应位置增加内存访问节点,连接内存访问节点与访问事件对应的目标存储空间中最后一次的访问结点,并将当前内存访问节点作为目标存储空间中最后一次的访问节点;将当前事件对应的目标存储空间的访问地址加入目标线程最后一次GPU任务的访问事件中,选取下一个事件为当前事件。
若当前事件是GPU任务创建事件,则将当前事件对应的GPU任务,标记为目标线程的最后一次GPU任务,选取下一个事件为当前事件。
若当前事件为任务结束事件,则在流程图中增加当前事件对应的GPU任务访问目标存储空间的访问时间段对应的矩形框,并连接矩形框与目标存储空间的访问节点,选取下一个事件为当前事件。
第二方面,本申请还提供了一种图形处理器性能分析装置。所述装置包括:
GPU任务提交模块,用于将中央处理器产生的GPU任务队列提交至图形处理器;GPU任务队列包括按开始处理时刻排序的多个GPU任务,每个GPU任务配置有GPU任务被处理时所需访问多个存储空间各自的访问地址;
GPU任务处理模块,按照任务队列中每个GPU任务的处理时序,通过图形处理器对多个GPU任务进行处理;
性能分析模块,用于针对任务处理过程中所需的内存访问过程,根据中央处理器与图形处理器针对内存访问过程所产生的访问时间信息,获取图形处理器和/或中央处理器针对每一GPU任务的执行性能参考信息。
第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
将中央处理器产生的GPU任务队列提交至图形处理器;GPU任务队列包括按开始处理时刻排序的多个GPU任务,每个GPU任务配置有GPU任务被处理时所需访问多个存储空间各自的访问地址;
按照任务队列中每个GPU任务的处理时序,通过图形处理器对多个GPU任务进行处理;
针对GPU任务处理过程中所需的内存访问过程,根据中央处理器与图形处理器针对内存访问过程所产生的访问时间信息,获取图形处理器和/或中央处理器针对每一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为一个实施例中将中央处理器产生的GPU任务队列提交至图形处理器的流程示意图;
图6为一个实施例中图形处理器对多个GPU任务进行处理的流程示意图;
图7为一个实施例中获取图形处理器和/或中央处理器针对每一GPU任务的执行性能参考信息的流程示意图;
图8为一个实施例中创建流程图的流程示意图;
图9为一个实施例中流程图的示意图;
图10为一个实施例中典型的视频播放器的视频播放处理流程图;
图11为一个实施例中图形处理器性能分析装置的结构框图;
图12为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例提供的图形处理器性能分析方法,可以应用于如图1所示的应用环境中。其中,终端102将中央处理器产生的GPU任务队列提交至图形处理器;GPU任务队列包括按开始处理时刻排序的多个GPU任务,每个GPU任务配置有GPU任务被处理时所需访问多个存储空间各自的访问地址;按照任务队列中每个GPU任务的处理时序,通过图形处理器对多个GPU任务进行处理;针对任务处理过程中所需的内存访问过程,根据中央处理器与图形处理器针对内存访问过程所产生的访问时间信息,获取图形处理器和/或中央处理器针对每一GPU任务的执行性能参考信息。终端102通过网络与服务器104进行通信。数据存储系统可以存储GPU任务被处理时所需访问多个存储空间各自的访问地址。数据存储系统可以集成在服务器104上,也可以放在云上或其他网络服务器上。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备,物联网设备可为智能电视、智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种图形处理器性能分析方法,以该方法应用于图1中的终端为例进行说明,包括以下步骤:
步骤202,将中央处理器产生的GPU任务队列提交至图形处理器;GPU任务队列包括按开始处理时刻排序的多个GPU任务,每个GPU任务配置有GPU任务被处理时所需访问多个存储空间各自的访问地址。
其中,图形系统的层次框架如图3所示,图3所示的图形处理器、图形处理器内核驱动程序、三维图形驱动程序和二维图形驱动程序和性能数据收集接口属于图形处理器的硬件和软件部分,图3所示的其余部分属于图形系统或者图形处理器之外的组件。其中,图形驱动程序包括图形处理器内核驱动程序、三维图形驱动程序和二维图形驱动程序,图形驱动程序将GPU图形内存动态地分配为很多个存储空间,多个存储空间存储着图形处理器绘制过程中会用到的各类图形数据。图形驱动程序会为每个存储空间分配唯一的标识,并且在运行的过程中收集并记录与访问存储空间相关的事件,生成性能数据。通常通过图形应用程序接口调用图形应用程序,进而调用图形驱动程序,但是图形应用程序接口属于中央处理器的调用,相对于图形处理器的实际执行是异步的,因此,为了找到性能问题的根源,往往需要对图形应用程序和图形系统的整体行为有所了解,从整体上对驱动程序进行优化,以绕开瓶颈。
由于桌面图形系统框架的复杂性,从绘制到显示,通常需要多个软硬件模块之间的互相配合才能完成,例如图形应用程序和图形系统服务进程之间的交互,中央处理器和图形处理器之间的交互,同时图形处理器内部也有多个并行的执行模块。因此,除了图形处理器性能之外,图形驱动程序合理地分配GPU资源,也会对图形性能造成重要影响。通过分析图形处理器的实际运行情况,找到硬件和软件性能瓶颈,并对驱动程序进行调整和优化,以最大程度地发挥图形处理器性能。因此,本实施例通过分析对内存数据的访问情况,可以了解图形应用程序、图形系统服务、图形驱动程序、图形处理器之间的交互,从而反映出整个图形系统的行为。
当中央处理器通过调用图形应用程序接口使用GPU进行绘制时,图形驱动程序会根据图形应用程序的请求,生成GPU任务,多个GPU任务形成GPU任务队列,并提交给图形处理器。对每个GPU任务,都会记录一个用于生成GPU任务的GPU任务创建事件和一个将GPU任务提交到图形处理器的GPU任务提交事件。在GPU任务创建事件与GPU任务提交事件之间,还会记录该GPU任务被处理时所需访问的多个存储空间各自的访问地址。对于GPU任务被处理时所需访问的每个存储空间的访问地址,均会记录一个GPU访问事件,GPU访问事件表示图形驱动程序发出了访问指定存储空间的访问地址的请求,需要图形处理器去访问指定存储空间的访问地址,但实际的访问则需要图形处理器去执行,因为图形处理器对指定存储空间的访问,是异步于中央处理器执行的。
可选地,终端通过中央处理器根据图形驱动程序的请求,通过图形应用程序接口调用图形应用程序,进而调用图形驱动程序,图形驱动程序根据图形应用程序的请求,生成GPU任务,多个GPU任务形成GPU任务队列,并提交给图形处理器。
步骤204,按照任务队列中每个GPU任务的处理时序,通过图形处理器对多个GPU任务进行处理。
其中,图形驱动程序将GPU任务提交到图形处理器之后,图形处理器在执行GPU任务的时候才会对指定存储空间进行真正的访问。通过记录GPU任务在图形处理器上的执行开始时刻和执行结束时刻,可以获取GPU任务被处理时所需访问多个存储空间各自的访问开始时刻和访问结束时刻。
对于一个生成GPU任务的CPU线程,在GPU任务创建事件和GPU任务提交事件之间的GPU访问事件,都属于该GPU任务。通过这个对应关系,可以将图形驱动程序的请求和图形处理器对GPU任务被处理时所需访问的每个存储空间实际的访问情况关联起来。
可选地,终端通过图形驱动程序将GPU任务提交到图形处理器之后,通过图形处理器按照任务队列中每个GPU任务的处理时序,对GPU任务进行处理,在GPU任务被处理的过程中,通过GPU任务对应的多个GPU访问事件,访问GPU访问事件指定的存储空间的访问地址,并记录指定的存储空间的访问开始时刻和访问结束时刻。
步骤206,针对GPU任务处理过程中所需的内存访问过程,根据中央处理器与图形处理器针对内存访问过程所产生的访问时间信息,获取图形处理器和/或中央处理器针对每一GPU任务的执行性能参考信息。
其中,访问时间信息指GPU任务被处理时访问多个存储空间各自的访问地址时,各存储空间的访问开始时刻和访问结束时刻,以及中央处理器创建各GPU任务对应的创建开始时刻。执行性能参考信息指用于反映影响中央处理器和/或图形处理器的性能参数的影响因子。例如,可以是当前中央处理器的函数执行时段和等待时段,或者图形处理器的GPU任务执行时段和调度情况。
为了进行图形系统的性能分析,首先需要从图形系统中获取性能数据,其中,所有的性能数据,都保存在图3所示的性能数据缓冲区中。性能分析工具从性能数据缓冲区中获取性能数据,性能分析工具可以从本机运行,也可以从远程机器运行。性能数据保存到跟踪文件供后续进行性能分析。进行性能分析时,打开跟踪文件,对其中的性能数据解析,并在跟踪视图中展示性能数据。跟踪文件内的事件分类如图4所示,事件解析后的事件类型包括线程事件、异步事件、流事件和计数器事件。
对于特定的GPU硬件,其性能参数是固定的,本实施例分析图形系统行为之后,一般会从以下几个方面进行优化,以达到提高性能的目的:
1)优化图形应用程序,比如选择更适合图形处理器处理(而不是更适合中央处理器处理)的图形格式,或者压缩数据以减少传输时间等。
2)GPU任务之间如果有依赖关系(一个任务需要等另一个任务先完成才能执行),我们可以优化提交给图形处理器的任务顺序,以减少等待时间。
3)如果影响图形处理器的性能瓶颈在于某个特定的GPU任务,则优化任务的算法。
4)如果是应用程序或者操作系统有优化空间,则可以向合作方提供优化建议。
可选地,终端在GPU任务处理过程中所需的内存访问过程中,获取中央处理器调用图形驱动程序产生GPU访问事件的执行时段和等待时段,以及图形处理器执行该GPU访问事件对应的GPU任务时,访问该GPU访问事件指定的存储空间的访问地址所对应的访问开始时刻和访问结束时刻,终端根据中央处理器调用图形驱动程序产生GPU访问事件的执行时段和等待时段,以及图形处理器访问该GPU访问事件指定的存储空间的访问地址所对应的访问开始时刻和访问结束时刻,得到图形处理器针对每一GPU任务的执行性能参考信息。
上述图形处理器性能分析方法中,在同时分析中央处理器和图形处理器对GPU任务的执行情况,结合GPU任务队列和GPU图形数据的传递流程,以及图形数据在各进程之间的处理流程,综合分析图形应用程序和图形系统的整体行为,从整体上对图形应用程序进行优化,提高图形处理器的性能,并且在没有图形应用程序源代码的情况下,分析图形应用程序的图形行为。
在一个实施例中,如图5所示,将中央处理器产生的GPU任务队列提交至图形处理器,包括:
步骤502,根据多个GPU任务创建事件,创建多个GPU任务,并由多个GPU任务组成GPU任务队列。
其中,GPU任务创建事件表示图形驱动程序发出了创建GPU任务的请求,需要中央处理器产生GPU任务。一个GPU任务创建事件用于创建一个GPU任务,一个GPU任务由一个CPU线程进行处理,每个GPU任务对应相同或者不同的CPU线程,即一个CPU线程也可以产生多个GPU任务,每个GPU任务被处理时所需访问多个存储空间各自的访问地址不完全相同。因此,通过分析中央处理器和图形处理器对GPU任务的执行情况,可以获得图形数据在各个进程之间的流向。
可选地,终端根据多个GPU任务创建事件,通过中央处理器产生的多个GPU任务创建事件,创建多个GPU任务,多个GPU任务按照处理时序排序,得到由多个GPU任务组成GPU任务队列。
步骤504,通过GPU访问事件,配置每个GPU任务被处理时所需访问的存储空间的访问地址。
其中,GPU访问事件表示图形驱动程序发出了访问指定存储空间的访问地址的请求,需要图形处理器去访问指定存储空间的访问地址。GPU访问事件包括图形处理器所需访问的指定存储空间的访问地址,以及访问类型,访问类型包括读和写。
可选地,终端根据图形驱动程序发出了访问指定存储空间的访问地址的请求,生成GPU访问事件,终端根据GPU访问事件,配置每个GPU任务被处理时所需访问的存储空间的访问地址。
步骤506,通过GPU任务提交事件,将所述GPU任务队列提交至图形处理器。
其中,GPU任务提交事件表示图形驱动程序发出了将GPU任务提交给图形处理器的请求。
上述GPU任务创建事件、GPU访问事件和GPU任务提交事件除了记录事件本身的信息以外,还需要同时记录事件发生的时间戳和其所在的CPU线程,将各个事件按照CPU线程进行归类后进行分析,可以生成各个线程之间的交互关系。
本实施例中,通过GPU任务创建事件,创建GPU任务,并且根据GPU访问事件,为每个GPU任务配置有GPU任务被处理时所需访问的存储空间的访问地址,通过分析GPU任务创建事件、GPU访问事件和GPU任务提交事件中同一图形数据的流向,可以得到中央处理器与图形处理器的线程交互情况,将中央处理器和图形处理器的行为关联起来,进行分析图形系统的整体行为,可以提高图形处理器的性能。
在一个实施例中,如图6所示,按照任务队列中每个GPU任务的处理时序,通过图形处理器对多个GPU任务进行处理,包括以下步骤:
步骤602,通过任务开始事件,按照所述任务队列中每个GPU任务的处理时序,对所述任务开始事件对应的GPU任务进行处理,通过所述GPU访问事件访问GPU任务处理过程中所需访问的存储空间。
其中,任务开始事件表示图形处理器开始执行GPU任务的请求,任务开始事件包括GPU任务被处理的开始时刻。在GPU任务被执行的过程中,按照GPU任务对应的多个访问事件,访问GPU任务处理过程中所需访问的存储空间;需要注意的是:GPU任务被执行时,还包括其他的处理流程,因此,GPU任务被处理所需的时长大于或等于访问事件所需的时长。例如,GPU任务对应三个访问事件,每个访问事件表示访问不同的存储空间,图形处理器按照任务开始事件处理该GPU任务时,访问内存的时间和其他流程(主要是计算)的先后顺序是不确定的,也可以是同时进行的,需要根据每个任务的具体情况来决定,因此,本实施例不区分具体的访问流程,而是假定GPU任务的开始和结束时间内,GPU都在持续访问GPU任务对应的多个内存,并记录访问各存储空间的访问开始时刻和访问结束时刻。例如,假设一个GPU任务需要访问A、B和C3个内存,对于这3个内存,至少存在以下几个访问顺序:T0-T1读A写C,T1-T2读B写C;T0-T1读A写B,T1-T2读B写C;T0-T1读A写B,T1-T2读A写C。本实施例不区分具体的访问流程,而是假定这个GPU任务的开始和结束时间内(T0~T2),图形处理器都在持续访问这3个内存。
步骤604,通过任务结束事件,结束所述GPU任务的处理过程。
其中,任务结束事件表示图形处理器结束执行GPU任务的请求,任务结束事件记录有GPU任务执行结束的时刻。需要注意的是:任务开始事件与任务结束事件之间的时间段包含了该GPU任务被处理时,各访问事件所需的时段。
可选地,在图形处理器执行GPU任务时,若执行时刻到达任务结束事件中记录的GPU任务执行结束的时刻,则终端GPU任务执行结束的时刻结束GPU任务。
本实施例中,在GPU任务处理过程中所需的内存访问过程,获取访问所述GPU任务对应的各访问地址对应的访问时段,可以根据访问时段进行分析,得到影响图形处理器性能的参数。
在一个实例中,如果只从图形处理器的角度分析影响GPU性能的执行性能参考信息,则只能确定每个特定的GPU任务执行时间,并且只能分析和优化该特定的GPU任务。因此,为解决上述问题,本实施例分析中央处理器创建GPU任务至图形处理器执行GPU任务的整个流程,获取GPU任务访问目标存储空间的整体访问情况,得知整个系统的行为,从而去选择一条最优的处理方式,甚至可以改变图形驱动程序对系统和图形应用程序请求的反馈,从而改变系统和图形应用程序的行为,进一步改变图形处理器和中央处理器的行为。具体的,针对任务处理过程中所需的内存访问过程,根据所述中央处理器与所述图形处理器针对所述内存访问过程所产生的访问时间信息,获取图形处理器和/或中央处理器针对每一GPU任务的执行性能参考信息,如图7所示,包括以下步骤:
步骤702,针对GPU任务处理过程中所需的内存访问过程,获取访问GPU任务对应的各访问地址对应的访问时长。
其中,GPU任务处理过程中所需的内存访问过程指GPU任务被处理时,图形处理器访问该GPU任务所需访问的存储空间的过程。根据GPU任务对应的各访问地址对应的访问时长,可以确定影响图形处理器性能的参数。例如,若目标存储空间的访问时段对应的时长,超过该GPU任务对应的访问事件的访问时段的均值,则可以从图形处理器访问目标存储空间的过程计算量大、或者任务可能很复杂、或者访问数据量大,或者内存性能不够等方面分析影响图形处理器性能的影响因子。
可选地,终端在图形处理器GPU任务的任务开始事件至任务结束事件对应的时间段内,记录图形处理器访问GPU任务所需访问的多个存储空间时,各存储空间访问开始时刻和访问结束时刻,根据访问开始时刻和访问结束时刻,确定访问GPU任务对应的各访问地址对应的访问时长。
步骤704,根据GPU任务创建事件,确定中央处理器创建的当前GPU任务与前一个GPU任务之间的等待时长。
其中,GPU任务创建事件会记录当前GPU任务的产生时刻,根据时间上相邻的两个GPU任务创建事件分别记录两个时间上相邻的两个GPU任务的产生时刻,可以确定中央处理器创建的当前GPU任务与前一个GPU任务之间的等待时长。
可选地,终端根据时间上相邻的两个GPU任务创建事件记录的两个GPU任务的产生时刻,确定中央处理器创建的当前GPU任务与前一个GPU任务之间的等待时长。
步骤706,根据GPU任务对应的访问时段和等待时长,确定图形处理器和/或中央处理器针对同一GPU任务的执行性能参考信息。
其中,GPU任务对应的访问时段可以反映图形处理器的性能参数,GPU任务与前一个GPU任务之间的等待时长可以反映中央处理器的性能参数。
在一些实施例中,若GPU任务对应的访问时长超过预设访问时长,且GPU任务对应的等待时长未超过预设创建时长,则确定图形处理器针对同一GPU任务的执行性能参考信息。
其中,GPU任务对应的等待时长未超过预设创建时长,则表示中央处理器创建GPU任务的线程性能数据良好,影响图形处理器的性能参数的影响因子在图形处理器访问存储空间的过程中。影响因子可以是访问目标存储空间的过程计算量大、或者任务可能很复杂、或者访问数据量大,或者内存性能不够等因子。对应的优化方法可以是优化图形应用程序,比如,选择更适合图形处理器处理(而不是更适合中央处理器处理)的图形格式,或者压缩数据以减少传输时间等。如果影响图形处理器的性能瓶颈在于某个特定的GPU任务,则优化任务算法。
在一些实施例中,若GPU任务对应的所述访问时长未超过预设访问时长,且GPU任务对应的等待时长超过预设创建时长,则确定中央处理器针对同一GPU任务的执行性能参考信息。
其中,GPU任务对应的所述访问时长未超过预设访问时长,则说明图形处理器的性能参数良好,影响图形处理器的性能参数的影响因子在中央处理器创建GPU任务的过程中。例如,若GPU任务对应的所述访问时长未超过预设访问时长,中央处理器创建2个GPU任务之间的等待时长很长,则说明图形处理器并未出现影响性能的因子,影响图形处理器性能的因子是由于中央处理器创建任务的性能参数无法满足图形处理器的需求。对应的优化方法是:如果GPU任务之间如果有依赖关系(一个任务需要等另一个任务先完成才能执行),则可以优化GPU任务提交给图形处理器的任务顺序,以减少等待时间。如果是图形应用程序或者操作系统有优化空间,则可以向合作方提供优化建议。
本实施例中,分析中央处理器创建GPU任务至图形处理器执行GPU任务的整个流程,获取GPU任务访问目标存储空间的整体访问情况,得知整个系统的行为,从而去选择一条最优的处理方式,甚至可以改变图形应用程序对系统和应用程序请求的反馈,从而改变图形处理器和中央处理器的行为。
在一个实例中,本实施例涉及多线程交互方面,因为图形系统中往往涉及到很多CPU线程同时使用图形处理器,分析这多个线程之间的交互行为是本实施例的改进点,但是对于多线程交互,目前没有一套能够准确描述的评判标准。对于一个需要多线程协同处理的任务,比如视频播放器,它其实是一个传递途径(pipeline),需要多模块共同配合来完成,每一个模块的性能都可能会对整体性能造成影响,并且各模块之间也会相互影响。这种情况下,针对单一模块的性能分析,其实能做的是很有限的。这时候如果从整体的流程图来观察,就可以看到这条传递途径(pipeline)上,是哪一个模块上GPU任务太过繁忙,或者是哪一个模块上中央处理器处理不过来,又或者是哪一个模块在等待另一个模块。为便于分析图形处理器和中央处理器的行为,本实施例将各GPU任务对应的GPU任务创建事件、访问事件、任务开始事件和任务结束事件按照处理时序,绘制在同一流程图中;流程图的横轴为时序,纵轴为CPU的线程号。具体的,包括以下步骤:
步骤1,将各GPU任务对应的GPU任务创建事件、访问事件、任务开始事件和任务结束事件按照处理时序的顺序排序,并选取首位的事件为当前事件,以及当前事件所在的目标线程。
其中,在记录步骤2中每个事件时,除了记录事件本身的信息以外,还需要同时记录事件发生的时间戳和其所在的CPU线程。将各个事件按照CPU线程进行归类后进行分析,可以生成各个线程之间的交互关系。
需要注意的是:将步骤1中所有事件按照时间先后进行排序,然后依次解析每一个事件,根据事件中记录的CPU线程号,将事件添加到当前CPU线程的事件列表中。若当前事件是存储单元创建事件,则解析存储单元的标识和详细信息,并将其标识和详细信息对应起来,以后可以根据存储单元标识来索引详细信息。其中,标识是存储单元的访问地址或者编号;存储单元的详细信息可以是存储单元的属性信息。
步骤2,若当前事件为访问事件,则在流程图中目标线程对应位置增加内存访问节点,连接内存访问节点与访问事件对应的目标存储空间中最后一次的访问结点,并将当前内存访问节点作为目标存储空间中最后一次的访问节点;将当前事件对应的目标存储空间的访问地址加入目标线程最后一次GPU任务的访问事件中,选取下一个事件为当前事件。
其中,访问节点表示对存储空间的访问。创建流程图的创建流程如图8所示。本实施例可以将存储空间的访问地址映射到中央处理器的地址空间,由中央处理器直接读写存储空间内存储的数据,无论是图形处理器访问存储空间,还是中央处理器访问存储空间,都可以分为读取操作和写入操作。例如,图形处理器将目标存储空间中的图形数据显示到屏幕,属于读取操作,显示的内容则对应目标存储空间最后一次的写入操作,将目标存储空间中最后一次的写入操作和屏幕显示节点进行关联,可以知道屏幕显示的内容是由哪个CPU线程绘制的。
需要注意的是:多个事件可能会访问相同的存储空间,但在记录时只需要记录存储空间的标识即可,因为在跟踪开始时或者存储空间创建时,会记录所有存储空间的详细信息,并且包含到性能数据中,这样可以避免图形应用程序重复查询和记录存储空间的详细信息,降低记录时的额外开销,减少性能数据的大小。
步骤3,若当前事件是GPU任务创建事件,则将当前事件对应的GPU任务,标记为目标线程的最后一次GPU任务,选取下一个事件为当前事件。
步骤4,若当前事件为任务结束事件,则在流程图中增加当前事件对应的GPU任务访问目标存储空间的访问时间段对应的矩形框,并连接矩形框与目标存储空间的访问节点,选取下一个事件为当前事件。
其中,当图形处理器结束执行GPU任务之后,可以得到图形处理器访问该GPU任务对应目标存储空间的访问开始时刻和访问结束时刻,并生成表示持续时间的矩形框。同时,将该矩形框和对应目标存储空间的访问结点连接起来。经过上述步骤1-步骤4回绘制的流程图如图9所示,图9中的圆圈代表GPU任务访问的内存,方框表示GPU任务的执行时间。一个GPU任务可以访问多个内存。CPU可以多次请求GPU去访问同一个内存,这种情况会创建多个GPU任务,但是每个GPU任务都会有自己的一个圆圈。目前不会存在多个GPU任务共用一个圆圈的情况。本实施例创建的流程图主要包含中央处理器的调度和图形处理器的调度信息,通过放大和移动,可以查看各个进程的执行情况和进程间的数据交互情况。
在一些实施例中,由于图形系统中涉及到的目标存储空间访问量可能会非常大,目标存储空间访问流程图也会相当复杂。为了方便查看,在创建访问流程图之后,可以对流程图进行一些优化,具体包括以下优化方案:
为了提高辨识度,读操作的线条使用彩色表示,写操作的线条使用灰色表示,对同一个存储空间的访问,使用相同的颜色。如果一个存储空间仅被某一个CPU线程单独访问,则不存在和其他CPU线程的交互,不影响整体流程,因此可以进行过滤。如果同一个存储空间被两个或多个线程访问过,表示这些CPU线程之间存在数据交互,将这种类型的交互进行分类,并可以选择显示哪些分类。
本实施例中,将每个存储空间在中央处理器和图形处理器上的访问情况,以及屏幕显示的情况,按照时间先后顺序关联起来,可以建立对同一存储空间的访问流程图,便于查看图形数据在各个CPU线程之间的流向,以及中央处理器和图形处理器的任务执行和调度情况,从而通过分析GPU图形数据的处理流程,了解图形应用程序和系统服务的行为,找到整个处理流程中的瓶颈所在,为图形应用程序和图形驱动程序的优化提供方向。
在一个实例中,将图形处理器性能分析方法应用在一个典型的视频播放器应用中,整个图形系统可能会涉及到以下操作流程:
步骤1,对视频流进行解码,生成连续的视频图像。
其中,如图10所示,为典型的视频播放器的视频播放处理流程,视频流经过解码后,生成连续的多帧视频图像,每帧视频图像用数字标号进行标记,例如,第1帧、第2帧、......、第n帧。
步骤2,对视频图像进行后处理,并将后处理后的视频图像提交给窗口系统服务。
其中,后处理包括缩放、特效等处理。如图10所示,后处理的处理时序晚于解码,因此,当视频流解码后获得的第2帧视频图像时,才会对第1帧视频图像进行后处理。
步骤3,窗口系统服务根据情况选择直接显示视频图像,或是拷贝到视频窗口的缓冲区并提交给窗口管理器。
步骤4,窗口管理器为视频窗口绘制边框和标题栏,并将多个窗口进行合成,获得合成后的图像。
步骤5,窗口管理器将合成后的图像送给显示器进行显示。
需要注意的是:上述解码、后处理、拷贝、合成和显示操作分别对应不同的GPU任务,由不同的CPU线程生成GPU任务,并由图形处理器执行GPU任务。上述步骤1-步骤5由多个CPU线程和进程进行处理,同时每个步骤都可能涉及到GPU操作,并且涉及到图形处理器中的多个模块,如视频解码、视频处理、2D拷贝、3D绘制、显示等模块。如图10所示,同一时间内,中央处理器和图形处理器可以并行处理多个不同的视频帧。
按照上述实施例中创建流程图的原理,创建视频播放器的处理流程图,根据视频播放器的处理流程图,可以确定中央处理器和图形处理器的调度信息,并结合GPU数据的访问,直观地展示了视频帧的解码、后处理、拷贝、合成和显示的整个流程,可以观察到每个阶段分别在CPU和GPU上的执行情况。
在一个实施例中,提供一种图形处理器性能分析方法,具体包括以下步骤:
步骤1,根据多个GPU任务创建事件,创建多个GPU任务,并由多个GPU任务组成GPU任务队列。
步骤2,通过GPU访问事件,配置每个GPU任务被处理时所需访问的存储空间,以及访问起始时刻和访问结束时刻。
步骤3,通过GPU任务提交事件,将所述GPU任务队列提交至图形处理器。
步骤4,通过任务开始事件,按照所述任务队列中每个GPU任务的处理时序,对所述任务开始事件对应的GPU任务进行处理,通过所述GPU访问事件访问GPU任务处理过程中所需访问的存储空间。
步骤5,通过任务结束事件,结束所述GPU任务的处理过程。
步骤6,针对GPU任务处理过程中所需的内存访问过程,获取访问所述GPU任务对应的各访问地址对应的访问时长。
步骤7,根据所述GPU任务创建事件,确定所述中央处理器创建的当前所述GPU任务与前一个GPU任务之间的等待时长。
步骤8,若所述GPU任务对应的所述访问时长超过预设访问时长,且所述GPU任务对应的所述等待时长未超过预设创建时长,则确定图形处理器针对同一GPU任务的执行性能参考信息;
步骤9,若所述GPU任务对应的所述访问时长未超过预设访问时长,且所述GPU任务对应的所述等待时长超过预设创建时长,则确定中央处理器针对同一GPU任务的执行性能参考信息。
本实施例,可以在没有图形应用程序源代码的情况下,通过分析GPU图形数据的处理流程,了解应用程序和系统服务的行为,找到整个处理流程中的瓶颈所在,为图形应用程序和图形驱动程序的优化提供方向。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的图形处理器性能分析方法的图形处理器性能分析装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个图形处理器性能分析装置实施例中的具体限定可以参见上文中对于图形处理器性能分析方法的限定,在此不再赘述。
在一个实施例中,如图11所示,提供了一种图形处理器性能分析装置,包括:GPU任务提交模块100、GPU任务处理模块200和性能分析模块300,其中:
GPU任务提交模块100,用于将中央处理器产生的GPU任务队列提交至图形处理器;GPU任务队列包括按开始处理时刻排序的多个GPU任务,每个GPU任务配置有GPU任务被处理时所需访问多个存储空间各自的访问地址。
GPU任务处理模块200,按照任务队列中每个GPU任务的处理时序,通过图形处理器对多个GPU任务进行处理。
性能分析模块300,用于针对任务处理过程中所需的内存访问过程,根据中央处理器与图形处理器针对内存访问过程所产生的访问时间信息,获取图形处理器和/或中央处理器针对每一GPU任务的执行性能参考信息。
在一个实施例中,GPU任务提交模块100还用于根据多个GPU任务创建事件,创建多个GPU任务,并由多个GPU任务组成GPU任务队列;
通过GPU访问事件,配置每个GPU任务被处理时所需访问的存储空间的访问地址;
通过GPU任务提交事件,将所述GPU任务队列提交至图形处理器。
在一个实施例中,GPU任务处理模块200还用于通过任务开始事件,按照所述任务队列中每个GPU任务的处理时序,对所述任务开始事件对应的GPU任务进行处理,通过所述GPU访问事件访问GPU任务处理过程中所需访问的存储空间;
通过任务结束事件,结束所述GPU任务的处理过程。
在一个实施例中,性能分析模块300还用于针对GPU任务处理过程中所需的内存访问过程,获取访问GPU任务对应的各访问地址对应的访问时长;
根据GPU任务创建事件,确定中央处理器创建的当前GPU任务与前一个GPU任务之间的等待时长;
根据GPU任务对应的访问时段和等待时长,确定图形处理器和/或中央处理器针对同一GPU任务的执行性能参考信息。
在一个实施例中,性能分析模块300还用于若GPU任务对应的访问时长超过预设访问时长,且GPU任务对应的等待时长未超过预设创建时长,则确定图形处理器针对同一GPU任务的执行性能参考信息;
若GPU任务对应的访问时长未超过预设访问时长,且GPU任务对应的等待时长超过预设创建时长,则确定中央处理器针对同一GPU任务的执行性能参考信息。
在一个实施例中,性能分析模块300还用于将各GPU任务对应的GPU任务创建事件、访问事件、任务开始事件和任务结束事件按照处理时序,绘制在同一流程图中;流程图的横轴为时序,纵轴为CPU的线程号。
在一个实施例中,性能分析模块300还用于将各GPU任务对应的GPU任务创建事件、访问事件、任务开始事件和任务结束事件按照处理时序的顺序排序,并选取首位的事件为当前事件,以及当前事件所在的目标线程;
若当前事件为访问事件,则在流程图中目标线程对应位置增加内存访问节点,连接内存访问节点与访问事件对应的目标存储空间中最后一次的访问结点,并将当前内存访问节点作为目标存储空间中最后一次的访问节点;将当前事件对应的目标存储空间的访问地址加入目标线程最后一次GPU任务的访问事件中,选取下一个事件为当前事件。
若当前事件是GPU任务创建事件,则将当前事件对应的GPU任务,标记为目标线程的最后一次GPU任务,选取下一个事件为当前事件。
若当前事件为任务结束事件,则在流程图中增加当前事件对应的GPU任务访问目标存储空间的访问时间段对应的矩形框,并连接矩形框与目标存储空间的访问节点,选取下一个事件为当前事件。
上述图形处理器性能分析装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图12所示。该计算机设备包括处理器、存储器、输入/输出接口、通信接口、显示单元和输入装置。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口、显示单元和输入装置通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、移动蜂窝网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种图形处理器性能分析方法。该计算机设备的显示单元用于形成视觉可见的画面,可以是显示屏、投影装置或虚拟现实成像装置。显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图12中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
将中央处理器产生的GPU任务队列提交至图形处理器;GPU任务队列包括按开始处理时刻排序的多个GPU任务,每个GPU任务配置有GPU任务被处理时所需访问多个存储空间各自的访问地址;
按照任务队列中每个GPU任务的处理时序,通过图形处理器对多个GPU任务进行处理;
针对GPU任务处理过程中所需的内存访问过程,根据中央处理器与图形处理器针对内存访问过程所产生的访问时间信息,获取图形处理器和/或中央处理器针对每一GPU任务的执行性能参考信息。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:根据多个GPU任务创建事件,创建多个GPU任务,并由多个GPU任务组成GPU任务队列;
通过GPU访问事件,配置每个GPU任务被处理时所需访问的存储空间的访问地址;
通过GPU任务提交事件,将所述GPU任务队列提交至图形处理器。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:通过任务开始事件,按照所述任务队列中每个GPU任务的处理时序,对所述任务开始事件对应的GPU任务进行处理,通过所述GPU访问事件访问GPU任务处理过程中所需访问的存储空间;通过任务结束事件,结束所述GPU任务的处理过程。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:针对GPU任务处理过程中所需的内存访问过程,获取访问GPU任务对应的各访问地址对应的访问时长;
根据GPU任务创建事件,确定中央处理器创建的当前GPU任务与前一个GPU任务之间的等待时长;
根据GPU任务对应的访问时段和等待时长,确定图形处理器和/或中央处理器针对同一GPU任务的执行性能参考信息。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:若GPU任务对应的访问时长超过预设访问时长,且GPU任务对应的等待时长未超过预设创建时长,则确定图形处理器针对同一GPU任务的执行性能参考信息;
若GPU任务对应的访问时长未超过预设访问时长,且GPU任务对应的等待时长超过预设创建时长,则确定中央处理器针对同一GPU任务的执行性能参考信息。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:将各GPU任务对应的GPU任务创建事件、访问事件、任务开始事件和任务结束事件按照处理时序,绘制在同一流程图中;流程图的横轴为时序,纵轴为CPU的线程号。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:将各GPU任务对应的GPU任务创建事件、访问事件、任务开始事件和任务结束事件按照处理时序的顺序排序,并选取首位的事件为当前事件,以及当前事件所在的目标线程;
若当前事件为访问事件,则在流程图中目标线程对应位置增加内存访问节点,连接内存访问节点与访问事件对应的目标存储空间中最后一次的访问结点,并将当前内存访问节点作为目标存储空间中最后一次的访问节点;将当前事件对应的目标存储空间的访问地址加入目标线程最后一次GPU任务的访问事件中,选取下一个事件为当前事件。若当前事件是GPU任务创建事件,则将当前事件对应的GPU任务,标记为目标线程的最后一次GPU任务,选取下一个事件为当前事件。若当前事件为任务结束事件,则在流程图中增加当前事件对应的GPU任务访问目标存储空间的访问时间段对应的矩形框,并连接矩形框与目标存储空间的访问节点,选取下一个事件为当前事件。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive RandomAccess Memory,MRAM)、铁电存储器(Ferroelectric RandomAccess Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(RandomAccess Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static RandomAccess Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccessMemory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (10)
1.一种图形处理器性能分析方法,其特征在于,所述方法包括:
将中央处理器产生的GPU任务队列提交至图形处理器;所述GPU任务队列包括按开始处理时刻排序的多个GPU任务,每个GPU任务配置有GPU任务被处理时所需访问多个存储空间各自的访问地址;
按照所述任务队列中每个GPU任务的处理时序,通过图形处理器对所述多个GPU任务进行处理;
针对GPU任务处理过程中所需的内存访问过程,获取访问所述GPU任务对应的各访问地址对应的访问时长;
根据GPU任务创建事件,确定所述中央处理器创建的当前所述GPU任务与前一个GPU任务之间的等待时长;
若所述GPU任务对应的所述访问时长超过预设访问时长,且所述GPU任务对应的所述等待时长未超过预设创建时长,则确定图形处理器针对同一GPU任务的执行性能参考信息;若所述GPU任务对应的所述访问时长未超过预设访问时长,且所述GPU任务对应的所述等待时长超过预设创建时长,则确定中央处理器针对同一GPU任务的执行性能参考信息。
2.根据权利要求1所述的方法,其特征在于,所述将中央处理器产生的GPU任务队列提交至图形处理器,包括:
根据多个GPU任务创建事件,创建多个GPU任务,并由多个GPU任务组成GPU任务队列;
通过GPU访问事件,配置每个GPU任务被处理时所需访问的存储空间,以及访问起始时刻和访问结束时刻;
通过GPU任务提交事件,将所述GPU任务队列提交至图形处理器。
3.根据权利要求2所述的方法,其特征在于,所述按照所述任务队列中每个GPU任务的处理时序,通过图形处理器对所述多个GPU任务进行处理,包括:
通过任务开始事件,按照所述任务队列中每个GPU任务的处理时序,对所述任务开始事件对应的GPU任务进行处理,通过所述GPU访问事件访问GPU任务处理过程中所需访问的存储空间;
通过任务结束事件,结束所述GPU任务的处理过程。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:将各GPU任务对应的所述GPU任务创建事件、所述访问事件、所述任务开始事件和所述任务结束事件按照处理时序,绘制在同一流程图中;所述流程图的横轴为时序,纵轴为CPU的线程号。
5.根据权利要求4所述的方法,其特征在于,所述将各GPU任务对应的所述GPU任务创建事件、所述访问事件、所述任务开始事件和所述任务结束事件按照处理时序,绘制在同一流程图中,包括:
将各GPU任务对应的所述GPU任务创建事件、所述访问事件、所述任务开始事件和所述任务结束事件按照处理时序的顺序排序,并选取首位的事件为当前事件,以及所述当前事件所在的目标线程;
若当前事件为访问事件,则在流程图中目标线程对应位置增加内存访问节点,连接所述内存访问节点与访问事件对应的目标存储空间中最后一次的访问结点,并将当前所述内存访问节点作为所述目标存储空间中最后一次的访问节点;将所述当前事件对应的目标存储空间的访问地址加入所述目标线程最后一次GPU任务的访问事件中,选取下一个事件为当前事件;
若当前事件是GPU任务创建事件,则将所述当前事件对应的GPU任务,标记为所述目标线程的最后一次GPU任务,选取下一个事件为当前事件;
若当前事件为所述任务开始事件,则在流程图中增加当前事件对应的GPU任务访问目标存储空间的访问时间段对应的矩形框,并连接所述矩形框与所述目标存储空间的访问节点,选取下一个事件为当前事件。
6.一种图形处理器性能分析装置,其特征在于,所述装置包括:
GPU任务提交模块,用于将中央处理器产生的GPU任务队列提交至图形处理器;所述GPU任务队列包括按开始处理时刻排序的多个GPU任务,每个GPU任务配置有GPU任务被处理时所需访问多个存储空间各自的访问地址;
GPU任务处理模块,按照所述任务队列中每个GPU任务的处理时序,通过图形处理器对所述多个GPU任务进行处理;
性能分析模块,用于针对GPU任务处理过程中所需的内存访问过程,获取访问所述GPU任务对应的各访问地址对应的访问时长;根据GPU任务创建事件,确定所述中央处理器创建的当前所述GPU任务与前一个GPU任务之间的等待时长;若所述GPU任务对应的所述访问时长超过预设访问时长,且所述GPU任务对应的所述等待时长未超过预设创建时长,则确定图形处理器针对同一GPU任务的执行性能参考信息;若所述GPU任务对应的所述访问时长未超过预设访问时长,且所述GPU任务对应的所述等待时长超过预设创建时长,则确定中央处理器针对同一GPU任务的执行性能参考信息。
7.根据权利要求6所述的装置,其特征在于,所述GPU任务提交模块,还用于根据多个GPU任务创建事件,创建多个GPU任务,并由多个GPU任务组成GPU任务队列;通过GPU访问事件,配置每个GPU任务被处理时所需访问的存储空间,以及访问起始时刻和访问结束时刻;通过GPU任务提交事件,将所述GPU任务队列提交至图形处理器。
8.根据权利要求6所述的装置,其特征在于,所述GPU任务处理模块,还用于通过任务开始事件,按照所述任务队列中每个GPU任务的处理时序,对所述任务开始事件对应的GPU任务进行处理,通过所述GPU访问事件访问GPU任务处理过程中所需访问的存储空间;通过任务结束事件,结束所述GPU任务的处理过程。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至5中任一项所述的方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至5中任一项所述的方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211655864.8A CN115809956B (zh) | 2022-12-22 | 2022-12-22 | 图形处理器性能分析方法、装置、计算机设备和存储介质 |
US18/240,168 US20240211307A1 (en) | 2022-12-22 | 2023-08-30 | Graphics processing unit performance analysis method, computer device and storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211655864.8A CN115809956B (zh) | 2022-12-22 | 2022-12-22 | 图形处理器性能分析方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115809956A CN115809956A (zh) | 2023-03-17 |
CN115809956B true CN115809956B (zh) | 2024-03-22 |
Family
ID=85486672
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211655864.8A Active CN115809956B (zh) | 2022-12-22 | 2022-12-22 | 图形处理器性能分析方法、装置、计算机设备和存储介质 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20240211307A1 (zh) |
CN (1) | CN115809956B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111831410A (zh) * | 2020-07-01 | 2020-10-27 | Oppo广东移动通信有限公司 | 任务处理方法、装置、存储介质及电子设备 |
CN112506637A (zh) * | 2020-12-17 | 2021-03-16 | 广东省科技基础条件平台中心 | 图像数据处理方法、装置、计算机设备和存储介质 |
CN113778694A (zh) * | 2021-11-12 | 2021-12-10 | 苏州浪潮智能科技有限公司 | 一种任务处理方法、装置、设备及介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9734546B2 (en) * | 2013-10-03 | 2017-08-15 | Nvidia Corporation | Split driver to control multiple graphics processors in a computer system |
-
2022
- 2022-12-22 CN CN202211655864.8A patent/CN115809956B/zh active Active
-
2023
- 2023-08-30 US US18/240,168 patent/US20240211307A1/en active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111831410A (zh) * | 2020-07-01 | 2020-10-27 | Oppo广东移动通信有限公司 | 任务处理方法、装置、存储介质及电子设备 |
CN112506637A (zh) * | 2020-12-17 | 2021-03-16 | 广东省科技基础条件平台中心 | 图像数据处理方法、装置、计算机设备和存储介质 |
CN113778694A (zh) * | 2021-11-12 | 2021-12-10 | 苏州浪潮智能科技有限公司 | 一种任务处理方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN115809956A (zh) | 2023-03-17 |
US20240211307A1 (en) | 2024-06-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110321958B (zh) | 神经网络模型的训练方法、视频相似度确定方法 | |
WO2016011886A1 (zh) | 对图像进行解码的方法及装置 | |
US9342322B2 (en) | System and method for layering using tile-based renderers | |
US20100295856A1 (en) | Data analysis and visualization system and techniques | |
US11727632B2 (en) | Shader binding management in ray tracing | |
US10719970B2 (en) | Low latency firmware command selection using a directed acyclic graph | |
JP2018537800A (ja) | メモリアクセスコマンドの転送記述子 | |
US10776428B2 (en) | Systems and methods of retrospectively determining how submitted data transaction requests operate against a dynamic data structure | |
US10402931B2 (en) | Systrace visualization tool | |
US9674540B2 (en) | Processing parameters for operations on blocks while decoding images | |
CN115809956B (zh) | 图形处理器性能分析方法、装置、计算机设备和存储介质 | |
CN116955386A (zh) | 数据处理方法、装置、数据处理任务的生成方法、装置 | |
CN115357696A (zh) | 基于组件的动态图表看板展示方法及相关设备 | |
CN113888684A (zh) | 图形渲染方法、设备及计算机存储介质 | |
US20200348907A1 (en) | Method and computing system for sorting position-dependent data arrays | |
CN118338003B (zh) | 视频解码方法、装置、计算机设备、可读存储介质和程序产品 | |
CN116089183B (zh) | 图形处理器性能测试方法、装置、计算机设备、存储介质 | |
CN112363778B (zh) | 一种动态图片加载方法、装置、电子设备以及存储介质 | |
CN116126546B (zh) | 一种性能调优的方法、装置、电子设备及介质 | |
WO2024045787A1 (zh) | 拾取对象的检测方法、装置、计算机设备、可读存储介质和计算机程序产品 | |
US11100041B2 (en) | Techniques for tracking independent hardware graphics processing unit (GPU) performance | |
CN118245699A (zh) | 页面获取方法、装置、设备、存储介质和计算机程序产品 | |
CN106652879B (zh) | 一种显示帧数据的方法及设备 | |
CN118608746A (zh) | 检测框筛选方法、装置、计算机设备及存储介质 | |
CN118485749A (zh) | 动画处理方法、方法、电子设备和计算机可读存储介质 |
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 | ||
CP03 | Change of name, title or address |
Address after: 200135, 11th Floor, Building 3, No. 889 Bibo Road, China (Shanghai) Pilot Free Trade Zone, Pudong New Area, Shanghai Patentee after: Granfei Intelligent Technology Co.,Ltd. Country or region after: China Address before: 200135 Room 201, No. 2557, Jinke Road, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai Patentee before: Gryfield Intelligent Technology Co.,Ltd. Country or region before: China |
|
CP03 | Change of name, title or address |