CN111383164A - 图形处理单元、计算系统及其操作方法 - Google Patents

图形处理单元、计算系统及其操作方法 Download PDF

Info

Publication number
CN111383164A
CN111383164A CN201911424625.XA CN201911424625A CN111383164A CN 111383164 A CN111383164 A CN 111383164A CN 201911424625 A CN201911424625 A CN 201911424625A CN 111383164 A CN111383164 A CN 111383164A
Authority
CN
China
Prior art keywords
code
monitor
shader program
performance characteristics
computing system
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.)
Pending
Application number
CN201911424625.XA
Other languages
English (en)
Inventor
辛容三
刘东勋
俞正埈
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN111383164A publication Critical patent/CN111383164A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/3624Software debugging by performing operations on the source code, e.g. via a compiler
    • 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/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/835Timestamp
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Computer Graphics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

提供了一种计算系统。该计算系统包括:存储器,被配置为存储着色器程序;以及图形处理单元(GPU),被配置为在简档模式下获得存储器中存储的着色器程序,GPU被配置为执行以下操作:在着色器程序中插入一个或多个监控器关联代码;将插入有一个或多个监控器关联代码的着色器程序编译成能够由多个核处理的语言;以及通过执行所编译的着色器程序和一个或多个监控器关联代码来获得着色器程序的运行时间性能特性。

Description

图形处理单元、计算系统及其操作方法
相关申请的交叉引用
本申请要求于2018年12月31日在韩国知识产权局递交的韩国专利申请No.10-2018-0174223的优先权,其公开内容通过引用整体并入本文中。
技术领域
示例实施例涉及一种图形处理单元(GPU)(更具体地,涉及用于导出运行时间性能特性(runtime performance characteristics)的GPU)、计算系统及其操作方法。
背景技术
图形处理单元(GPU)对图形应用编程接口(API)(例如,OpenGL、OpenCL或Vulkan)进行处理,从而在各种电子设备中实现各种图形效果。应该根据标准API的预定规则来编辑程序,以便可以在GPU中处理程序。要在GPU中处理的程序可以包括用于图像产生的顶点着色器、几何着色器和像素着色器。
顶点着色器、几何着色器和像素着色器被编译和链接,并在程序中使用。GPU以并行方式(例如,以多条单指令多数据(SIMD)的形式)在多个核(或多个线程)中执行程序。在这种情况下,可能不容易执行对GPU中的单独着色器程序的运行时间特性的监控。
发明内容
一个或多个示例实施例提供了一种导出图形处理单元(GPU)的运行时间性能特性的方法,更具体地,提供了一种GPU、计算系统及其操作方法,该GPU包括用于在编译期间插入监控器关联代码的编译器。
根据示例实施例的方面,提供了一种计算系统,包括:存储器,被配置为存储着色器程序;以及图形处理单元GPU,被配置为在简档模式下获得所述存储器中存储的着色器程序,所述GPU被配置为执行以下操作:在着色器程序中插入一个或多个监控器关联代码;将插入有一个或多个监控器关联代码的着色器程序编译成能够由多个核处理的语言;以及通过执行所编译的着色器程序和一个或多个监控器关联代码来获得着色器程序的运行时间性能特性。
根据示例实施例的一方面,提供了一种操作计算系统的方法,该方法包括:响应于包括图形命令的简档命令,输出包括多个代码块的着色器程序;将监控器关联代码插入到多个代码块的至少一部分中的每一个代码块中;对其中插入有监控器关联代码的着色器程序进行编译;通过在多个核中执行多个代码块和监控器关联代码来获得着色器程序的运行时间性能特性;将所获得的着色器程序的运行时间性能特性记录在由多个核共享的存储器中;以及响应于着色器程序的终止,输出所记录的着色器程序的运行时间性能特性。
根据示例实施例的一方面,提供了一种图形处理单元(GPU),包括:编译器,被配置为接收包括多个代码块的程序,编译器包括监控器关联代码注入器,监控器关联代码注入器被配置为将一个或多个监控器关联代码插入到多个代码块的至少一部分中的每一个代码块中,并且编译器被配置为在简档模式下编译一个或多个监控器关联代码和程序;多个核,被配置为以并行方式执行所编译的程序和一个或多个监控器关联代码,并且被配置为基于一个或多个监控器关联代码的执行来获得程序的运行时间性能特性;以及共享存储器,被配置为存储所获得的程序的运行时间性能特性。
附图说明
通过参考附图描述某些示例实施例,上述和/或其他方面将变得更清楚,在附图中:
图1是示出了根据示例实施例的计算系统的框图;
图2是示出了根据示例实施例的简档模式下的操作的框图;
图3是示出了根据示例实施例的计算系统在简档模式下的操作的流程图;
图4是示出了根据示例实施例的编译器的操作的流程图;
图5是示出了根据示例实施例的插入监控器关联代码的视图;
图6是示出了根据示例实施例的监控操作的视图;
图7是示出了根据示例实施例的插入有监控器代码的代码块的操作的流程图;
图8是示出了根据另一示例实施例的监控操作的视图;
图9是示出了根据示例实施例的运行时间性能特性列表的视图;
图10是示出了根据另一示例实施例的监控操作的视图;
图11是示出了根据另一示例实施例的简档模式下的操作的框图;以及
图12是示出了根据示例实施例的图形处理器的框图。
具体实施方式
在下文中,将参考附图更详细地描述本公开的实施例。
图1是示出了根据示例实施例的计算系统10的框图。参考图1,计算系统10可以包括处理器100、图形处理单元(GPU)200和系统存储器300。尽管未在图1中示出,但是计算系统10还可以包括显示器、输入/输出接口和系统总线。
计算系统10可以指代包括GPU 200在内的任意计算系统。作为非限制性示例,计算系统10可以是固定计算系统(例如,台式计算机、服务器、电视机顶盒、视频游戏控制台)、或便携式计算系统(例如,膝上型计算机、移动电话、可穿戴设备、便携式媒体播放器、台式个人计算机(PC)、电子书阅读器等)。
处理器100可以从外部接收用户输入。此外,处理器100可以执行系统存储器300中存储的一系列命令(或程序),可以处理系统存储器300中存储的数据,并且可以允许GPU200执行图形管线(pipeline)中的某一任务。在一些实施例中,处理器100可以包括两个或更多个核。
在一些实施例中,处理器100和GPU 200可以是集成电路(IC)。例如,IC可以是芯片封装和片上系统(SoC)内的处理芯片的至少一部分。在示例中,处理器100和GPU 200可以被实现在不同的IC(或不同的芯片封装)中。在另一示例中,处理器100和GPU 200还可以被实现在单个IC(或单个芯片封装)中。
系统存储器300可以包括一个或多个计算机可读存储介质。系统存储器300可以用于以命令和/或数据结构的形式传输或存储期望的程序代码,并且可以包括可以由处理器100或GPU 200访问的任意介质。例如,在一些实施例中,系统存储器300可以包括易失性存储器(例如,动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、移动DRAM、双倍数据速率同步动态随机存取存储器(DDR SDRAM)、低功率DDR(LP DDR)SDRAM、图形DDR(GDDR)SDRAM或rambus动态随机存取存储器(RDRAM)),并且在一些实施例中,可以包括非易失性存储器(例如,电可擦除可编程只读存储器(EEPROM)、闪存、相变随机存取存储器(PRAM)、电阻随机存取存储器(RRAM)、纳米浮栅存储器(NFGM)、聚合物随机存取存储器(PoRAM)、磁随机存取存储器(MRAM)和铁电随机存取存储器(FRAM))。
在一些实施例中,系统存储器300可以是非暂时性存储介质。术语“非暂时性”可以意味着存储介质不是以载波或传播信号来实现。然而,术语“非暂时性”并不意味着系统存储器300不能移动或所存储的内容是静态的。在示例中,系统存储器300可以从计算系统10移除并移动到另一个系统(或设备)。
系统存储器300可以包括应用程序310和/或应用程序接口(API)320。例如,应用程序310可以产生针对API 320的调用,以便以一系列图形图像的形式产生期望的结果。
应用程序310可以由处理器100驱动,并且处理器100可以将与应用程序310相关的任务的一部分卸载到GPU 200中。例如,处理器100可以将需要大规模并行操作的任务(例如,图形处理任务)卸载到GPU 200中。
当卸载任务时,处理器100可以基于API 320与GPU 200通信。例如,API 320可以包括DirectX API、OpenGL API、OpenCL API和Vulkan API中的至少一个。在另一示例中,本领域技术人员将理解,处理器100可以使用不基于API 320的任何其他任意通信技术与GPU200通信。
GPU 200可以接收由处理器100提供的命令,并且可以执行与各种任务相关的并行操作。GPU 200可以包括编译器210和多个核220。例如,GPU 200可以从处理器100接收着色器程序,并且可以使用编译器210将着色器程序转换为可以使用多个核220处理的语言(例如,机器语言)。作为用于产生对象的颜色改变的算法的着色器程序可以指代要在GPU 200上执行的软件或固件的单元或形状。在示例实施例中,着色器程序可以包括多个代码块。着色器程序可以包括多个代码块。例如,多个代码块可以是在无需等待外部资源和/或分支成另一代码的情况下顺序执行的代码单元。稍后将提供其详细描述。
例如,处理器100可以执行诸如视频游戏之类的应用程序,因此可以产生图形数据。处理器100可以将图形数据输出到GPU 200,并且GPU 200可以根据图形管线来处理图形数据。例如,GPU 200可以执行一个或多个着色器程序以便处理图形数据。
在下文中,基于着色器程序来描述示例实施例。然而,这仅是为了便于说明,并且本领域技术人员将理解,本公开适用于其他程序,例如,深度学习相关程序、块链相关程序和除了着色器程序之外的通用计算程序。
在示例实施例中,GPU 200可以基于程序100的指令在简档模式下操作,因此可以测量着色器程序的运行时间特性。简档模式可以是这样的模式:导出每个着色器程序的性能特性,并且基于所导出的每个着色器程序的性能特性来识别着色器程序的执行。例如,运行时间特性可以是真实着色器程序驱动环境中的着色器程序的驱动特性,并且可以指示考虑对外部资源的访问或代码的分支的特性。
在示例实施例中,在简档模式下,编译器210可以将监控器关联代码插入到着色器程序中包括的多个代码块的至少一部分中。在示例中,监控器关联代码可以是监控器代码,其是用于监控对应代码块的性能特性的代码。在另一示例中,监控器关联代码可以是分支代码,其指示分支成监控器代码以用于监控代码块的性能特性。在示例实施例中,监控器代码可以导出信息(例如但不限于着色器程序编号、时间戳、掩码执行(mask execution)、资源计分板、分支条件满足/不满足、调用计数、请求资源的类型、和通过监控操作的使用资源的类型),并且可以将导出的信息存储在存储器(例如,缓冲器)中。稍后将提供其详细描述。
图2是示出了根据示例实施例的简档模式下的操作的框图。
参考图2,处理器100可以包括着色器程序管理器110和性能分析器120。着色器程序管理器110可以基于输入图形命令将着色器程序SH输出到GPU 200。在示例中,着色器程序管理器110可以接收驱动应用程序310所需的图形命令,可以基于所接收的图形命令来选择系统存储器300中存储的着色器程序SH,并且可以将所选择的着色器程序输出到GPU200。
在示例实施例中,着色器程序管理器110可以接收简档模式命令P_CMD并且可以输出各种信号,使得GPU 200可以基于所接收的简档模式命令P_CMD在简档模式下操作。作为用于测量GPU 200的性能的模式的简档模式可以包括图形命令。着色器程序管理器110可以响应于简档模式命令P_CMD来输出着色器程序SH,并且GPU 200可以监控关于着色器程序SH的运行时间性能特性。
在示例实施例中,性能分析器120可以从GPU 200接收运行时间性能特性列表RT_ST,并且可以基于所接收的运行时间性能特性列表RT_ST来提取关于每个着色器程序的性能数据PF。例如,性能分析器120可以接收并分析存储在GPU 200的共享存储器230中的每个着色器程序的运行时间性能特性列表RT_ST。性能分析器120可以基于运行时间性能特性列表RT_ST来分析着色器程序的总执行时间、着色器程序的效率、指令发布效率和关于针对每个分支点是否满足分支条件的统计值中的至少一个。
GPU 200可以包括编译器210、多个核220、共享存储器230和计时器240。编译器210可以将从着色器程序管理器110接收的各种信号转换为可以由多个核220执行的形式(例如,机器语言的形式)。例如,编译器210可以将从着色器程序管理器110接收的着色器程序用作为源代码来执行对着色器程序SH的编译,从而产生具有可以在多个核220中的每一个核中执行的形式的着色器程序。例如,编译器210可以使用多个指令集架构(ISA)来执行编译。
编译器210可以包括监控器关联代码注入器212。在示例实施例中,当在简档模式下执行编译操作时,编译器210可以使用监控器关联代码注入器212将监控器关联代码插入到着色器程序SH的一部分中。在示例中,监控器关联代码注入器212可以将监控器关联代码插入到着色器程序SH中包括的代码块的至少一部分中。监控器关联代码注入器212可以将监控器关联代码插入到代码块之中的需要对运行时间性能特性进行监控的代码块中。
在示例中,监控器关联代码注入器212可以将监控器关联代码插入在代码块的起始点或结束点处。在另一示例中,监控器关联代码注入器212可以将监控器关联代码插入在可以在执行分支代码之后立即获得监控结果的点处。分支代码可以是条件语句,例如,if语句。在另一示例中,监控器关联代码注入器212可以将监控器关联代码插入在编译器210可以访问外部资源的点处。
在示例实施例中,监控器关联代码可以包括监控器代码,该监控器代码是用于直接监控其中包括监控器关联代码的代码块的性能特性、并且将监控结果记录在共享存储器230中的代码。例如,当用于监控的代码的数量相对较小时,监控器关联代码注入器212可以将监控器代码作为监控器关联代码插入到代码块中。然而,实施例不限于此。
在另一示例实施例中,监控器关联代码可以是分支代码,其指示分支成监控器代码以用于对代码块的性能特性进行监控并将监控结果记录在共享存储器230中。例如,当用于监控的代码的数量相对较大时,监控器关联代码注入器212可以将分支代码作为监控器关联代码插入到代码块中。然而,实施例不限于此。
在示例实施例中,由监控器关联代码注入器212插入的监控器代码可以导出信息(例如,但不限于着色器程序编号、时间戳、掩码执行、资源计分板、分支条件满足/不满足、着色器程序的调用计数、请求资源的类型、和通过运行时间性能特性的监控操作的使用资源的类型),并且可以将导出的信息存储在共享存储器230中。在示例中,当在多个核220中的一个核上执行特定代码块时,监控器代码可以基于从计时器240接收的时间信息来导出时间戳。
共享存储器230可以存储在处理包括从处理器100接收的着色器程序SH在内的各种指令时产生的数据。例如,当在多个核220中执行着色器程序SH时,可以产生图像数据。例如,图像数据可以缓存在共享存储器230中,然后可以发送到处理器100。
在示例实施例中,根据监控器关联代码而获得的每个着色器程序SH的运行时间性能特性可以存储在共享存储器230中。例如,共享存储器230可以包括以绘制调用为单位来划分的渲染缓冲区。监控器代码可以将根据着色器程序SH的执行导出的运行时间性能特性记录在与对应的着色器程序SH所属的绘制调用相对应的渲染缓冲区中。在示例实施例中,响应于所有着色器程序的执行终止,共享存储器230可以将记录的运行时间性能特性列表RT_ST输出到处理器100。在另一示例实施例中,处理器100可以向GPU 200输出请求运行时间性能特性列表RT_ST的附加信号,并且共享存储器230可以基于输出的附加信号将运行时间性能特性列表RT_ST输出到处理器100。
根据本公开的GPU可以在编译期间插入监控器关联电路(或监控器关联代码),从而在以并行方式执行程序的GPU中容易地监控运行时间性能特性。此外,根据本公开的包括GPU在内的计算系统可以在真实程序驱动环境中导出运行时间性能特性,并且可以基于导出的运行时间性能特性来执行性能分析,从而提高剖析的准确性。此外,在根据本公开的监控操作中,在由于等待共享资源而以其他的方式浪费的时间期间执行着色器程序。因此,可以以相对高的速度执行着色器程序的剖析。
图3是示出了根据示例实施例的计算系统在简档模式下的操作的流程图。
参考图3,处理器100可以根据图形命令来选择着色器程序SH,并且可以输出所选择的着色器程序SH(操作S10)。例如,处理器100可以使用着色器程序管理器110基于简档模式命令P_CMD中包括的图形命令来选择系统存储器300中包括的着色器程序SH,并且可以将所选择的着色器程序SH输出到GPU200。
GPU 200可以将监控器关联代码插入到所接收的着色器程序SH中并且可以对其执行编译(操作S20)。例如,接收着色器程序SH的编译器210可以使用监控器关联代码注入器212将多个监控器关联代码插入到着色器程序SH中。编译器210可以对其中插入有监控器关联代码的着色器程序进行编译,从而将着色器程序转换为可以在多个核220中执行的形式。在另一示例中,监控器关联代码注入器212可以对着色器程序SH执行编译,然后还可以以编译格式插入监控器关联代码。
GPU 200可以执行包括监控器关联代码的着色器程序,因此可以存储导出的着色器运行时间特性(操作S30)。GPU 200可以驱动包括监控器关联代码在内的着色器程序以与多个核220并行。例如,在多个核220中,着色器程序可以以单指令多数据(SIMD)方式以并行方式执行。GPU 200可以将通过执行监控器关联代码而导出的着色器程序的运行时间性能特性存储在共享存储器230中。例如,GPU 200可以将共享存储器230中包括的对应着色器程序的运行时间性能特性记录在与着色器程序所属的绘制调用相对应的渲染缓冲区中。
GPU 200可以确定从处理器100接收的所有着色器程序的执行是否终止(操作S40)。当还有其余要执行的着色器程序时,GPU 200可以在多个核220中执行其余着色器程序。
当所有着色器程序的执行终止时,GPU 200可以将运行时间性能特性列表RT_ST输出到处理器100(操作S50)。运行时间性能特性列表RT_ST可以包括关于每个着色器程序的运行时间性能特性。例如,共享存储器230可以存储包括根据监控器关联代码导出的运行时间特性在内的运行时间性能特性列表RT_ST,并且可以响应于所有着色器程序的执行终止而将运行时间性能特性列表RT_ST输出到处理器100。在示例实施例中,处理器100可以使用性能分析器120基于运行时间性能特性列表RT_ST产生关于每个着色器程序的性能数据PF。性能数据PF可以反映具有改进的准确度的运行时间性能特性,从而提供具有改进的性能的剖析。
图4是示出了根据示例实施例的编译器的操作方法的流程图。
参考图4,编译器210可以接收着色器程序SH(操作S110)。例如,着色器程序SH可以由着色器程序管理器110选择和输出。
编译器210可以基于从处理器100接收的信号确定编译器210是否在简档模式下操作(操作S120)。例如,处理器100可以在着色器程序SH的输出中包括简档模式相关信号,并且可以随着着色器程序SH的输出一起输出简档模式相关信号,并且编译器210可以基于简档模式相关信号来确定当前模式是否是简档模式。备选地,处理器100可以输出单独的简档模式相关信号,并且编译器210可以基于单独的简档模式相关信号确定当前模式是否是简档模式。
响应于确定当前模式不是简档模式,编译器210可以对所接收的着色器程序SH执行编译操作(操作S140)。另一方面,响应于确定当前模式是简档模式,编译器210可以搜索监控器关联代码的插入位置(操作S130)。在示例实施例中,编译器210可以以构成着色器程序SH的代码块为单位搜索监控器关联代码的插入位置。例如,代码块可以是在无需等待外部资源和/或分支成另一代码的情况下顺序执行的代码的集合单元。例如,编译器210可以搜索代码块的起始点或结束点作为插入位置。在另一示例中,编译器210可以搜索可以在执行诸如条件语句之类的分支代码之后立即获得监控结果的点,并且可以将所搜索到的该点作为插入位置。在另一示例中,编译器210可以搜索编译器210访问外部资源的点来作为插入位置。
编译器210可以根据找到的监控器关联代码插入位置将多个监控器关联代码插入到着色器程序SH中,并且可以编译着色器程序SH(操作S150)。然而,实施例不限于此。编译器210可以编译着色器程序SH,然后可以以编译格式将监控器关联代码插入到在操作S130中找到的位置中。例如,可以通过编译器210中包括的监控器关联代码注入器212来执行搜索监控器关联代码插入位置的操作和插入监控器关联代码的操作。
图5是示出了根据示例实施例的插入监控器关联代码的视图。
参考图5,着色器程序SH可以包括多个代码块CB_1至CB_M(其中M是等于或大于2的正整数)。多个存储器块中的每一个代码块可以包括多个代码。例如,第一代码块CB_1可以包括P个代码C1_1至C1_P(其中P是等于或大于2的正整数),并且第M代码块CB_M可以包括Q个代码CM_1至CM_Q(其中Q是等于或大于2的正整数)。
在示例实施例中,多个代码块CB_1至CB_M中的每一个代码块可以是在无需等待外部资源和/或分支成另一代码的情况下顺序执行的代码单元。例如,当第一代码块CB_1中的第P代码C1_P是针对外部资源的访问代码时,响应于第一代码块CB_1终止,另一代码块(例如,第M代码块CB_M)可以在可以访问外部资源的点处执行。在另一示例中,第一代码块CB_1中的第P代码C1_P可以是针对条件语句(或if语句)的以及用于执行满足条件语句的条件时的操作的代码,并且另一代码块(例如,第M代码块CB_M)的第一代码CM_1可以是用于执行不满足条件语句的条件时的操作(或者else语句的操作)的代码。
在示例实施例中,在编译期间,可以将监控器关联代码插入到每个代码块中。详细地,可以将第一监控器关联代码MAC_1插入到第一代码块CB_1中,并且可以将第M监控器关联代码MAC_M插入到第M代码块CB_M中。在示例中,监控器关联代码(例如,MAC_1或MAC_M)可以是监控器代码,其是用于直接监控对应代码块的性能特性的代码。在另一示例中,监控器关联代码(例如,MAC_1或MAC_M)可以是分支代码,其指示分支成监控器代码以用于监控代码块的性能特性。
图6是示出了根据示例实施例的监控操作的视图。
参考图6,可以将作为监控器关联代码的第一监控器代码MC_1插入到第一代码块CB_1中,并且可以将作为监控器关联代码的第M监控器代码MC_M插入到第M代码块CB_M中。详细地,第一监控器代码MC_1可以是用于直接监控第一代码块CB_1的运行时间性能特性的代码,并且第M监控器代码MC_M可以是用于直接监控第M代码块CB_M的运行时间性能特性的代码。例如,第一代码块CB_1中的第P代码C1_P可以是针对存储在共享存储器230中的资源RS的访问代码。换句话说,响应于执行第P代码C1_P,可以将资源请求RQ_RS输入到共享存储器230中。
在示例实施例中,可以在第P代码C1_P之后插入第一监控器代码MC_1。例如,编译器210可以通过使用监控器关联代码注入器212在第P代码C1_P之后插入第一监控器代码MC_1并对其进行编译,并且可以在执行第P代码C1_P之后在核中执行第一监控器代码MC_1。
在示例实施例中,响应于执行第一监控器代码MC_1,可以导出第一运行时间性能特性RT_ST_1并将其记录为共享存储器230的运行时间性能特性列表RT_ST。例如,第一运行时间性能特性RT_ST_1可以包括与着色器程序编号、时间戳和请求资源的类型有关的信息。
例如,第M代码块CB_M可以包括使用根据资源请求RQ_RS防问的资源RS的第一代码CM_1。换句话说,第一代码块CB_1可以请求外部资源RS,并且第M代码块CB_M可以在资源RS可用时使用资源RS。
在示例实施例中,可以在第M代码块CB_M的起始点处插入第M监控器代码MC_M。例如,编译器210可以通过使用监控器关联代码注入器212,在第M代码块CB_M中的第一代码CM_1之前的位置处插入第M监控器代码MC_M并对其进行编译,并且第M监控器代码MC_M可以是第M代码块CB_M的代码之中首先被执行的。
在示例实施例中,响应于执行第M监控器代码MC_M,可以导出第M运行时间性能特性RT_ST_M并将其记录为共享存储器230的运行时间性能特性列表RT_ST。例如,第M运行时间性能特性RT_ST_M可以包括与着色器程序编号、时间戳和使用资源的类型有关的信息。
由于时间戳信息包括在第一运行时间性能特性RT_ST_1和第M运行时间性能特性RT_ST_M中的每一个中,因此可以导出包括外部资源RS的可用时间在内的实际运行时间性能特性。例如,共享存储器230中存储的资源RS可以是驱动多个核220所需的共享资源(例如,纹理(texture))。
在请求访问外部共享资源RS的代码块CB_1中,可以在代码块的结束点处插入第一监控器代码MC_1,并且当在另一代码块中使用所请求的资源RS时,可以在资源RS的等待时间执行第一监控器代码MC_1的监控操作。也就是说,由于在实际执行浪费的时间期间执行监控操作,着色器程序的简档可以以相对高的速度进行。
图7是示出了根据示例实施例的插入有监控器代码的代码块的操作的流程图。例如,图7可以示出图6所示的代码块CB_1和CB_M的操作。
参考图7,当在核中执行第一代码块CB_1时,可以确定是否执行用于请求外部资源的代码(操作S210)。当在核中执行第一代码块CB_1并且未执行用于请求外部资源的代码时,核可以顺序地执行下一代码(操作S215)。
当在核中执行用于请求外部资源的代码时,核可以执行第一监控器代码MC_1(操作S220)。在示例实施例中,可以在对着色器程序SH进行编译时使用编译器210中包括的监控器关联代码注入器212插入第一监控器代码MC_1。基于在核中执行第一监控器代码MC_1,可以导出第一代码块CB_1的第一运行时间性能特性并将其记录在共享存储器230中。在示例实施例中,当第一代码块CB_1包括用于请求外部资源RS的代码时,可以在第一代码块CB_1的结束点处插入第一监控器代码MC_1。
响应于用于在第一代码块CB_1中执行的请求外部资源的代码(例如,第P代码C1_P),可以确定使用根据资源请求RQ_RS访问的资源RS的第M代码块CB_M的资源的可用性(操作S230)。因为可以在并行驱动的多个核220中的每一个核中请求和使用资源RS,因此可以存在从资源请求RQ_RS到资源RS的可用性的某一等待时间。
当外部资源RS可用时,核可以执行第M代码块CB_M中的第M监控器代码MC_M(操作S240)。在示例实施例中,可以在对着色器程序SH进行编译时,通过使用编译器210中包括的监控器关联代码注入器212插入第M监控器代码MC_M。基于在核中执行第M监控器代码MC_M,可以导出第M代码块CB_M的第M运行时间性能特性RT_ST_M并将其记录在共享存储器230中。在示例实施例中,当第M代码块CB_M包括使用所请求的外部资源RS的代码时,可以在第M代码块CB_M的起始点处插入第M监控器代码MC_M。
图8是示出了根据另一示例实施例的监控操作的视图。
参考图8,可以将作为监控器关联代码的第一监控器代码MC_1a插入到第一代码块CB_1a中,并且可以将作为监控器关联代码的第M监控器代码MC_Ma插入到第M代码块CB_Ma中。例如,第一代码块CB_1a可以包括针对条件语句以及用于执行在满足条件语句的条件时的操作的代码。详细地,第一代码块CB_1a可以包括针对if语句以及用于执行在满足if语句的条件时的操作的代码。
在示例实施例中,可以在第P代码C1_Pa之后插入第一监控器代码MC_1a,第P代码C1_Pa是用于执行在满足条件时的操作的代码之中的最后代码。例如,编译器210可以使用监控器关联代码注入器212在第P代码C1_Pa之后插入第一监控器代码MC_1a并对其进行编译,并且可以在执行第P代码C1_Pa之后在核中执行第一监控器代码MC_1a。
在示例实施例中,可以根据第一监控器代码MC_1a的执行来导出第一运行时间性能特性RT_ST_1a,并且可以将第一运行时间性能特性RT_ST_1a记录为共享存储器230a的运行时间性能特性列表RT_STa。例如,第一运行时间性能特性RT_ST_1a可以包括与着色器程序编号、时间戳和条件语句的条件的满足相对应的信息。
例如,第M代码块CB_Ma可以包括用于执行在不满足第一代码块CB_1a的条件语句的条件时的操作的代码。详细地,第M代码块CB_Ma可以包括用于执行与else语句相对应的操作的代码。
在示例实施例中,可以在第M代码块CB_Ma的起始点处插入第M监控器代码MC_Ma。例如,编译器210可以通过使用监控器关联代码注入器212,在第M代码块CB_Ma中的第一代码CM_1a之前的位置处插入第M监控器代码MC_Ma并对其进行编译,并且第M监控器代码MC_Ma可以是第M代码块CB_Ma的代码之中首先被执行的。
在示例实施例中,可以根据第M监控器代码MC_Ma的执行来导出第M运行时间性能特性RT_ST_Ma,并且可以将第M运行时间性能特性RT_ST_Ma记录为共享存储器230a的运行时间性能特性列表RT_STa。例如,第M运行时间性能特性RT_ST_Ma可以包括与着色器程序编号、时间戳和条件语句的条件的不满足相对应的信息。
图9是示出了根据示例实施例的运行时间性能特性列表的视图。
参考图9,运行时间性能特性列表RT_ST可以存储在共享存储器230中。运行时间性能特性列表RT_ST可以包括针对多个着色器程序中的每一个着色器程序的着色器运行时间性能特性SH_ST1至SH_STK(其中K是等于或大于2的正整数)。在示例实施例中,着色器运行时间性能特性SH_ST1至SH_STK中的每一个可以包括针对代码块的运行时间性能特性列表(例如,图6的RT_ST_1或RT_ST_M)。
在示例实施例中,着色器运行时间性能特性SH_ST1至SH_STK中的每一个可以包括着色器程序编号231、时间戳232、掩码执行233、资源记分板234、满足/不满足分支条件235、以及调用计数236。例如,着色器程序编号231可以包括渲染索引和绘制调用信息。
尽管未在附图中示出,但着色器运行时间性能特性SH_ST1至SH_STK中的每一个可以包括关于命令的调用的统计值。例如,着色器运行时间性能特性SH_ST1至SH_STK中的每一个可以包括调用命令的次数、使用算术逻辑单元(ALU)的次数、访问共享存储器的次数、管线停顿次数及其原因。
尽管未在附图中示出,但着色器运行时间性能特性SH_ST1至SH_STK中的每一个可以包括与同步相关的信息。例如,着色器运行时间性能特性SH_ST1至SH_STK中的每一个可以包括共享存储器等待时间、由于同步原语(synchronization primitive)导致的延迟时间、以及原子指令(atomic instruction)的执行时间。
图10是示出了根据另一示例实施例的监控操作的视图。
参考图10,可以将作为监控器关联代码的第一分支代码JMP_MC_1b插入到第一代码块CB_1b中,并且可以将作为监控器关联代码的第M分支代码JMP_MC_Mb插入到第M代码块CB_Mb中。详细地,第一分支代码JMP_MC_1b和第M分支代码JMP_MC_Mb中的每一个可以是指示分支成通用监控器代码MCb以用于监控代码块的性能特性的分支代码。例如,第一代码块CB_1b的第P代码C1_Pb可以是针对共享存储器230中存储的资源RS的访问代码,如图6所示。然而,实施例不限于此。第一代码块CB_1b可以包括用于执行在满足条件语句的条件时的操作的代码,如上面在图8中所描述的。
在示例实施例中,可以在第P代码C1_Pb之后插入第一分支代码JMP_MC_1b。例如,编译器210可以通过使用监控器关联代码注入器212在第P代码C1_Pb之后插入在第一分支代码JMP_MC_1b并对其进行编译,并且可以在执行第P代码C1_Pb之后在核中执行第一分支代码JMP_MC_1b。基于第一分支代码JMP_MC_1b的执行,可以执行通用监控器代码MCb。在示例实施例中,基于关于第一代码块CB_1b执行通用监控器代码MCb,可以导出关于第一代码块CB_1b的运行时间性能特性并将其记录在共享存储器(例如,参见图6的230)中。
例如,第M代码块CB_Mb的第一代码CM_1b可以是使用资源RS的代码,如上面在图6中所描述的。然而,实施例不限于此。第M代码块CB_Mb可以包括用于执行在满足第一代码块CB_1b中包括的条件语句的条件时的操作的代码,如上面在图8中所描述的。
在示例实施例中,可以在第M代码块CB_Mb的起始点处插入第M分支代码JMP_MC_Mb。例如,编译器210可以通过使用监控器关联代码注入器212,在第M代码块CB_Mb中的第一代码CM_1b之前的位置处插入第M分支代码JMP_MC_Mb并对其进行编译,并且第M监控器代码JMP_MC_Mb可以是在第M代码块CB_Mb的代码之中首先被执行的。基于第M分支代码JMP_MC_Mb的执行,可以执行通用监控器代码MCb。在示例实施例中,基于关于第M代码块CB_Mb执行通用监控器代码MCb,可以导出关于第M代码块CB_Mb的运行时间性能特性并将其记录在共享存储器(例如,参见图6的230)中。
图11是示出了根据另一示例实施例的简档模式下的操作的框图。考虑到参考图2的描述,省略了对冗余配置的描述。
参考图11,着色器程序管理器205c可以包括在GPU 200c中。例如,处理器100c可以将简档模式命令P_CMDc输出到GPU 200c,并且着色器程序管理器205c可以响应于简档模式命令P_CMDc将着色器程序SHc输出到编译器210c。因此,GPU 200c可以响应于简档模式命令P_CMDc输出包括关于每个着色器程序的运行时间性能特性在内的运行时间性能特性列表RT_STc。处理器100c可以通过使用性能分析器120c,基于响应于简档模式命令P_CMDc所输出的运行时间性能特性列表RT_STc来产生性能数据PFc。
图12是示出了根据示例实施例的图形处理器的框图。如图12所示,GPU 400可以包括命令处理器410、管线控制器430、前端管线450、后端管线470和可编程处理器490。
命令处理器410可以从主机接收命令,可以解释所接收的命令,从而将命令转换为可以由管线处理的命令。命令处理器410可以将转换后的命令提供给管线控制器430。
管线控制器430可以从接收自命令处理器410的命令中提取前端管线450和后端管线470中所需的信息,并且可以基于所提取的信息执行管线配置。此外,管线控制器430可以将从命令处理器410接收的命令转换为可以由前端管线450和后端管线470处理的命令,并且可以将转换后的命令提供给前端管线450和后端管线470。
根据示例实施例,GPU 400可以在简档模式下编译期间将多个监控器关联代码插入到着色器程序中,如上面在图1至图11中所描述的。因此,可以容易地监控反映真实程序驱动环境的运行时间性能特性,并且可以获得监控结果。
根据示例性实施例,本文所述的组件、元件、模块或单元中的至少一个可被体现为执行上述各个功能的各种硬件、软件和/或固件结构。例如,这些组件、元件或单元中的至少一个可以使用直接电路结构(例如,存储器、处理器、逻辑电路、查找表等),其可以通过一个或多个微处理器或其他控制装置的控制来执行各个功能。此外,这些组件、元件或单元中的至少一个可以由包含用于执行特定逻辑功能的一个或多个可执行指令并由一个或多个微处理器或其他控制装置执行的模块、程序或一部分代码具体实现。此外,这些组件、元件或单元中的至少一个还可以包括诸如执行各个功能的中央处理单元(CPU)之类的处理器、微处理器等,或者由其实现。这些组件、元件或单元中的两个或更多个可以组合成执行所组合的两个或更多个组件、元件或单元的所有操作或功能的一个单个组件、元件或单元。此外,这些组件、元件或单元中的至少一个的至少部分功能可以由这些组件、元件或单元中的另一个执行。此外,尽管在一些框图中未示出总线,然而组件、元件或单元之间的通信可以通过总线来执行。上述示例实施例的功能方案可以被实现为在一个或多个处理器上执行的算法。此外,由框表示的组件、元件、或单元或处理步骤可以将任意数量的相关领域技术用于电子配置、信号处理和/或控制、数据处理等。
尽管已参考附图描述了一个或多个示例性实施例,但是本领域普通技术人员将理解:在不脱离由所附权利要求限定的本发明构思的精神和范围的情况下,可以在其中进行形式和细节上的各种修改。

Claims (20)

1.一种计算系统,包括:
存储器,被配置为存储着色器程序;以及
图形处理单元GPU,被配置为在简档模式下获得所述存储器中存储的着色器程序,所述GPU被配置为执行以下操作:
在所述着色器程序中插入一个或多个监控器关联代码;
将插入有所述一个或多个监控器关联代码的所述着色器程序编译成能够由多个核处理的语言;以及
通过执行所编译的着色器程序和所述一个或多个监控器关联代码来获得所述着色器程序的运行时间性能特性。
2.根据权利要求1所述的计算系统,其中,所述着色器程序包括多个代码块,每个代码块包括要顺序执行的多个代码,以及
所述插入包括将所述一个或多个监控器关联代码插入到所述多个代码块的至少一部分中的每一个代码块中。
3.根据权利要求2所述的计算系统,其中,所述多个代码块之中的第一代码块包括第一代码,所述第一代码用于请求由所述多个核中的至少两个或更多个核共享的资源,并且所述插入包括在所述第一代码之后的位置处插入第一监控器关联代码。
4.根据权利要求3所述的计算系统,其中,所述多个代码块之中的第二代码块包括用于使用所述资源的第二代码,并且所述插入包括在所述第二代码块的起始点处插入第二监控器关联代码。
5.根据权利要求4所述的计算系统,其中,所述获得运行时间性能特性包括:
通过执行所述第一代码来请求所述资源;以及
在直至所述资源可用之前的时间段中,通过执行所述第一监控器关联代码来获得所述第一代码块的运行时间性能特性。
6.根据权利要求5所述的计算系统,其中,所述第一代码块的运行时间性能特性包括与着色器程序编号、基于所述第一代码块的执行时间所产生的时间戳、或所述资源中的至少一个有关的信息。
7.根据权利要求2所述的计算系统,其中,所述多个代码块之中的第一代码块包括针对条件语句的、并用于执行在满足所述条件语句的条件时的操作的代码,以及
所述插入包括在所述第一代码块的结束点处插入第一监控器关联代码。
8.根据权利要求7所述的计算系统,其中,所述获得运行时间性能特性包括:通过执行所述第一监控器关联代码来获得所述第一代码块的运行时间性能特性,以及
所述第一代码块的运行时间性能特性包括与着色器程序编号、基于所述第一代码块的执行时间所产生的时间戳或所述条件语句的满足中的至少一个有关的信息。
9.根据权利要求7所述的计算系统,其中,所述多个代码块之中的第二代码块包括用于执行在不满足所述条件语句的条件时的操作的代码,以及
所述插入包括在所述第二代码块的起始点处插入第二监控器关联代码。
10.根据权利要求9所述的计算系统,其中,所述获得运行时间性能特性包括通过执行所述第二监控器关联代码来获得所述第二代码块的运行时间性能特性,并且所述第二代码块的运行时间性能特性包括与着色器程序编号、基于所述第二代码块的执行时间所产生的时间戳和不满足所述条件语句中的至少一个有关的信息。
11.根据权利要求1所述的计算系统,其中,所述GPU还包括共享存储器,所述共享存储器被配置为存储由所述多个核的至少一部分共享的资源,以及
所述获得运行时间性能特性包括将所获得的运行时间性能特性存储在所述共享存储器中。
12.根据权利要求11所述的计算系统,其中,所述GPU还被配置为:根据所述着色器程序的执行的终止来输出所述共享存储器中存储的运行时间性能特性。
13.根据权利要求1所述的计算系统,其中,所述一个或多个监控器关联代码包括用于直接监控其中插入有所述一个或多个监控器关联代码的代码块的性能特性的监控器代码。
14.根据权利要求1所述的计算系统,其中,所述一个或多个监控器关联代码包括指示分支成通用监控器代码的分支代码,所述通用监控器代码用于监控代码块的性能特性。
15.一种操作计算系统的方法,所述方法包括:
响应于包括图形命令的简档命令,输出包括多个代码块的着色器程序;
将监控器关联代码插入到所述多个代码块的至少一部分中的每一个代码块中;
对其中插入有所述监控器关联代码的所述着色器程序进行编译;
通过在多个核中执行所述多个代码块和所述监控器关联代码来获得所述着色器程序的运行时间性能特性;
将所获得的所述着色器程序的运行时间性能特性记录在由所述多个核共享的存储器中;以及
响应于所述着色器程序的终止,输出所记录的所述着色器程序的运行时间性能特性。
16.根据权利要求15所述的方法,其中,所述获得包括:根据所述监控器关联代码的执行,产生时间戳,所述时间戳与包括所述监控器关联代码在内的代码块的执行时间相对应。
17.根据权利要求15所述的方法,还包括:基于所输出的所述着色器程序的运行时间性能特性,产生关于所述着色器程序的性能数据。
18.根据权利要求17所述的方法,其中,所述产生包括:基于所输出的所述着色器程序的运行时间性能特性,分析所述着色器程序的总执行时间、所述着色器程序的效率、指令发布效率和关于针对每个分支点是否满足分支条件的统计值中的至少一个。
19.根据权利要求15所述的方法,其中,所述着色器程序的运行时间性能特性包括:与着色器程序编号、时间戳、掩码执行、资源记分板、分支条件满足/不满足和调用计数中的至少一个有关的信息。
20.一种图形处理单元GPU,包括:
编译器,被配置为获得包括多个代码块的程序,所述编译器包括监控器关联代码注入器,所述监控器关联代码注入器被配置为将一个或多个监控器关联代码插入到所述多个代码块的至少一部分中的每一个代码块中,并且所述编译器被配置为在简档模式下编译所述一个或多个监控器关联代码和所述程序;
多个核,被配置为以并行方式执行所编译的程序和所述一个或多个监控器关联代码,并且被配置为基于所述一个或多个监控器关联代码的执行来获得所述程序的运行时间性能特性;以及
共享存储器,被配置为存储所获得的所述程序的运行时间性能特性。
CN201911424625.XA 2018-12-31 2019-12-31 图形处理单元、计算系统及其操作方法 Pending CN111383164A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020180174223A KR102683415B1 (ko) 2018-12-31 2018-12-31 런타임 수행특성을 도출하는 그래픽스 프로세싱 유닛 및 이의 동작방법
KR10-2018-0174223 2018-12-31

Publications (1)

Publication Number Publication Date
CN111383164A true CN111383164A (zh) 2020-07-07

Family

ID=71121819

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911424625.XA Pending CN111383164A (zh) 2018-12-31 2019-12-31 图形处理单元、计算系统及其操作方法

Country Status (3)

Country Link
US (1) US11126535B2 (zh)
KR (1) KR102683415B1 (zh)
CN (1) CN111383164A (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11474924B2 (en) * 2019-05-31 2022-10-18 Apple Inc. Graphics processing unit performance analysis tool

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080007559A1 (en) * 2006-06-30 2008-01-10 Nokia Corporation Apparatus, method and a computer program product for providing a unified graphics pipeline for stereoscopic rendering
US20080266302A1 (en) * 2007-04-30 2008-10-30 Advanced Micro Devices, Inc. Mechanism for granting controlled access to a shared resource
US20120223946A1 (en) * 2011-03-03 2012-09-06 Jorn Nystad Graphics processing
US20130106880A1 (en) * 2011-10-26 2013-05-02 Roy E. Williams Automatically testing compatibility between a graphics card and a graphics program
US20160314058A1 (en) * 2015-04-23 2016-10-27 3S-Smart Software Solutions GmbH Method and system for measuring a runtime by means of watchpoints
US20170178278A1 (en) * 2014-07-10 2017-06-22 Intel Corporation Method and apparatus for updating a shader program based on current state
CN108986012A (zh) * 2017-06-02 2018-12-11 苹果公司 着色器剖析器
CN109074625A (zh) * 2016-05-23 2018-12-21 高通股份有限公司 用于图形处理的每个着色器的前置码
US20190213706A1 (en) * 2018-12-28 2019-07-11 Intel Corporation Techniques for graphics processing unit profiling using binary instrumentation

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6731296B2 (en) 1999-05-07 2004-05-04 Broadcom Corporation Method and system for providing programmable texture processing
US8375368B2 (en) 2006-06-20 2013-02-12 Google Inc. Systems and methods for profiling an application running on a parallel-processing computer system
US7692660B2 (en) 2006-06-28 2010-04-06 Microsoft Corporation Guided performance optimization for graphics pipeline state management
US8296738B1 (en) * 2007-08-13 2012-10-23 Nvidia Corporation Methods and systems for in-place shader debugging and performance tuning
US7962314B2 (en) 2007-12-18 2011-06-14 Global Foundries Inc. Mechanism for profiling program software running on a processor
US9196013B2 (en) 2011-10-31 2015-11-24 Apple Inc. GPU workload prediction and management
US9449410B2 (en) * 2013-04-11 2016-09-20 Qualcomm Incorporated Intra-frame timestamps for tile-based rendering
US9189881B2 (en) 2013-05-30 2015-11-17 Arm Limited Graphics processing
US9799087B2 (en) 2013-09-09 2017-10-24 Apple Inc. Shader program profiler
US9064052B1 (en) * 2013-10-22 2015-06-23 The Mathworks, Inc. Providing intermediate results of evaluating program code that includes a compound statement
KR102100161B1 (ko) * 2014-02-04 2020-04-14 삼성전자주식회사 Gpu 데이터 캐싱 방법 및 그에 따른 데이터 프로세싱 시스템
US10255106B2 (en) 2016-01-27 2019-04-09 Qualcomm Incorporated Prediction-based power management strategy for GPU compute workloads
US20180165200A1 (en) * 2016-12-09 2018-06-14 Ramanathan Sethuraman System, apparatus and method for dynamic profiling in a processor
US10922779B2 (en) * 2018-12-28 2021-02-16 Intel Corporation Techniques for multi-mode graphics processing unit profiling

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080007559A1 (en) * 2006-06-30 2008-01-10 Nokia Corporation Apparatus, method and a computer program product for providing a unified graphics pipeline for stereoscopic rendering
US20080266302A1 (en) * 2007-04-30 2008-10-30 Advanced Micro Devices, Inc. Mechanism for granting controlled access to a shared resource
US20120223946A1 (en) * 2011-03-03 2012-09-06 Jorn Nystad Graphics processing
US20130106880A1 (en) * 2011-10-26 2013-05-02 Roy E. Williams Automatically testing compatibility between a graphics card and a graphics program
US20170178278A1 (en) * 2014-07-10 2017-06-22 Intel Corporation Method and apparatus for updating a shader program based on current state
US20160314058A1 (en) * 2015-04-23 2016-10-27 3S-Smart Software Solutions GmbH Method and system for measuring a runtime by means of watchpoints
CN109074625A (zh) * 2016-05-23 2018-12-21 高通股份有限公司 用于图形处理的每个着色器的前置码
CN108986012A (zh) * 2017-06-02 2018-12-11 苹果公司 着色器剖析器
US20190213706A1 (en) * 2018-12-28 2019-07-11 Intel Corporation Techniques for graphics processing unit profiling using binary instrumentation

Also Published As

Publication number Publication date
US11126535B2 (en) 2021-09-21
KR102683415B1 (ko) 2024-07-10
KR20200083025A (ko) 2020-07-08
US20200210317A1 (en) 2020-07-02

Similar Documents

Publication Publication Date Title
US10067797B2 (en) Application programming interfaces for data parallel computing on multiple processors
US9766938B2 (en) Application interface on multiple processors
JP5242771B2 (ja) 混合精度命令実行を伴うプログラマブルストリーミングプロセッサ
US8225325B2 (en) Multi-dimensional thread grouping for multiple processors
JP6952138B2 (ja) チップに基づく計算機能を生成する方法、装置、デバイス、および記憶媒体
US11880715B2 (en) Method and system for opportunistic load balancing in neural networks using metadata
US20220100512A1 (en) Deterministic replay of a multi-threaded trace on a multi-threaded processor
US11243752B2 (en) Multi-version shaders
US10353591B2 (en) Fused shader programs
CN115516421A (zh) Gpu中基于gpr释放机制的gpr优化
KR20230053608A (ko) 텍스처/로드 명령어 블록에 대한 연기된 gpr 할당
US11126535B2 (en) Graphics processing unit for deriving runtime performance characteristics, computer system, and operation method thereof
Lázaro-Muñoz et al. A tasks reordering model to reduce transfers overhead on GPUs
CN117472336B (zh) 基于程序api的代码生成装置及其方法、设备及介质
US20240202862A1 (en) Graphics and compute api extension for cache auto tiling
CN118689488A (zh) 一种gpu编译器前置属性配置方法
CN118170515A (zh) 一种处理器任务包调度装置和方法
P Joseph Accelerating Java on Embedded GPU
Karlsson A GPU-based framework for efficient image processing

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