CN105940388A - 用于图形处理单元的工作负荷批量提交机制 - Google Patents
用于图形处理单元的工作负荷批量提交机制 Download PDFInfo
- Publication number
- CN105940388A CN105940388A CN201480073687.XA CN201480073687A CN105940388A CN 105940388 A CN105940388 A CN 105940388A CN 201480073687 A CN201480073687 A CN 201480073687A CN 105940388 A CN105940388 A CN 105940388A
- Authority
- CN
- China
- Prior art keywords
- workload
- dma
- processing unit
- programme
- graphics processing
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing scheme for image data processing or generation, in general involving image processing hardware
-
- 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)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Image Processing (AREA)
- Advance Control (AREA)
- Bus Control (AREA)
Abstract
用于向图形处理单元提交可编程工作负荷的技术包括计算装置,用于准备可编程工作负荷向图形处理单元的批量提交。批量提交在单个直接存储器存取分组中包括用于可编程工作负荷的每个的独立分发命令。批量提交可包括分发命令中间的同步命令。
Description
背景技术
在计算装置中,图形处理单元(GPU)常常通过提供电子电路(其能够快速执行数学运算)来补充中央处理单元(CPU)。为了这样做,GPU利用广泛并行性和许多并发线程来克服存储器请求和计算的等待时间。GPU的能力使其对加速高性能图形处理和并行计算任务是有用的。例如,GPU能够加速媒体或3D应用的表面中的二维(2D)或三维(3D)图像的处理。
能够专门为GPU编写计算机程序。GPU应用的示例包括视频编码/解码、三维游戏和其他通用计算应用。到GPU的编程接口由下列两部分组成:一个是高级编程语言,其允许开发人员编写在GPU上运行的程序,以及包括对应的编译器软件,其编译和生成用于GPU程序的GPU特定指令(例如二进制代码)。GPU特定指令的集合(其组成由GPU来执行的程序)可称作可编程工作负荷或“内核”。主编程接口的其它部分是主运行时间库,其在CPU侧上运行,并且提供API的集合以允许用户对GPU启动GPU程序供执行。两个组件作为GPU编程框架一起工作。这类框架的示例包括例如开放计算语言(OpenCL)、Microsoft的DirectX以及NVIDIA的CUDA。取决于应用,可要求多个GPU工作负荷来完成单个GPU任务,例如图像处理。CPU运行时间通过组成GPU命令缓冲区(command
buffer)并且通过直接存储器存取(DMA)机制将它传递给GPU,向GPU逐个提交每一个工作负荷。GPU命令缓冲区可称作“DMA分组”或“DMA缓冲区”。每次GPU完成其对DMA分组的处理时,GPU向CPU发出中断。CPU通过中断服务例程(ISR)来操控中断,并且调度对应的延迟过程调用(DPC)。包括OpenCL的现有运行时间将各工作负荷作为独立DMA分组提交给GPU。因此,利用现有技术,ISR和DPC至少与每一个工作负荷关联。
附图说明
在附图中通过举例而不是通过限制来说明本文所述的概念。为了说明的简洁和清晰起见,图中所示的元件不必须按比例绘制。在认为适当的情况下,在附图之间已经重复附图标记,以指示对应的或类似的元件。
图1是包括如本文所公开的工作负荷批量提交机制的计算装置的至少一个实施例的简化框图;
图2是图1的计算装置的环境的至少一个实施例的简化框图;
图3是可由图1的计算装置来执行的,用于采用GPU来处理批量提交的方法的至少一个实施例的简化流程图;以及
图4是可由图1的计算装置来执行的,用于创建多个工作负荷的批量提交的方法的至少一个实施例的简化流程图。
具体实施方式
虽然本公开的概念容许各种修改和备选形式,但是其具体实施例通过举例在附图中示出,并且本文中将详细描述。然而,应当理解,不存在将本公开的概念限制到所公开的具体形式的意图,但是相反,意图是涵盖与本公开和所附权利要求书一致的所有修改、等效物和备选方案。
说明书中提到“一个实施例”、“实施例”、“说明性实施例”等指示所描述的实施例可包括特定特征、结构或特性,但是每一个实施例可以或者可以不必须都包括该特定特征、结构或特性。此外,这类词语不必须指相同的实施例。此外,在结合实施例来描述的特定特征、结构或特性时,建议的是,无论是否明确描述,结合其他实施例来实现这种特征、结构或特性是在本领域的技术人员的知识范围之内的。另外,应当意识到,采取“至少一个A、B和C”的形式的列表中包含的项能够表示(A)、(B)、(C)、(A和B)、(B和C)、(A和C)或者(A、B和C)。类似地,采取“A、B或C中的至少一个”的形式所列示的项能够表示(A)、(B)、(C)、(A和B)、(B和C)、(A和C)或者(A、B和C)。
在一些情况下,所公开的实施例可在硬件、固件、软件或者它们的任何组合中实现。所公开的实施例还可实现为由暂时或者非暂时机器可读(例如计算机可读)存储介质所携带或者其上所存储的指令,其可由一个或多个处理器来读取和执行。机器可读存储介质可体现为用于存储或传送采取由机器可读形式的信息的任何存储装置、机制或其他物理结构(例如易失性和非易失性存储器、媒体盘或者其它媒体装置)。
在附图中,一些结构或方法特征可按照特定布置和/或排序来示出。然而,应当意识到,这类特定布置和/或排序可以不作要求。在一些实施例中,这类特征而是可按照与说明性附图所示不同的方式和/或顺序来布置。另外,特定附图中包含结构或方法特征不是意在暗示在所有实施例中要求这种特征,并且在一些实施例中可以不包含这种特征或者可与其他特征相结合。
现在参照图1,在一个实施例中,计算装置100包括中央处理单元(CPU)120和图形处理单元160。CPU 120能够使用批量提交机制150向GPU 160提交多个工作负荷。在一些实施例中,批量提交机制150包括同步机制152。在操作中,如以下所述,计算装置100将多个GPU工作负荷组合为单个DMA分组,而没有将工作负荷合并(例如由应用开发人员手动组合)为单个工作负荷。换言之,采用批量提交机制150,计算装置100能够创建单个DMA分组,其包含多个独立GPU工作负荷。其中,所公开的技术还能够减少在例如视频帧处理期间的GPU处理时间量、CPU利用量和/或图形中断的数量。因此,由计算装置100完成GPU任务所需的总时间能够减少。所公开的技术能够改进帧处理时间,并且降低感知计算应用中的功率消耗等等。感知计算应用涉及通过平板计算机、智能电话和/或其他计算装置的手和手指姿势的识别、语音识别、脸部识别和跟踪、增强现实和/或其他人类手势交互。
计算装置100可体现为用于执行本文所描述功能的任何类型的装置。例如,计算装置100可体现为而不是限制,智能电话、平板计算机、可佩戴计算装置、膝上型计算机、笔记本计算机、移动计算装置、蜂窝电话、手持装置、消息传递装置、车辆远程信息处理装置、服务器计算机、工作站、分布式计算系统、多处理器系统、消费电子装置和/或配置成执行本文所描述功能的任何其他计算装置。如图1中所示的,说明性计算装置100包括CPU
120、输入/输出子系统122、直接存储器存取(DMA)子系统124、CPU存储器126、数据存储装置128、显示器130、通信电路134和用户界面子系统136。计算装置100还包括GPU
160和GPU存储器164。当然,在其他实施例中,计算装置100可包括其他或附加组件,例如移动和/或固定计算机中常见的那些组件(例如各种传感器和输入/输出装置)。另外,在一些实施例中,说明性组件的一个或多个可结合在另一个组件中或者以其他方式形成另一个组件的一部分。例如,在一些实施例中,CPU存储器126或者其部分可结合在CPU
120中,和/或GPU存储器164可结合在GPU
160中。
CPU 120可体现为能够执行本文所述功能的任何类型的处理器。例如,CPU
120可体现为(一个或多个)单或多核处理器、数字信号处理器、微控制器或者其他处理器或处理/控制电路。GPU
160体现为能够执行本文所描述功能的任何类型的图形处理单元。例如,GPU
160可体现为(一个或多个)单或多核处理器、数字信号处理器、微控制器、浮点加速器、协处理器或者设计成快速操纵和改变存储器中的数据的其他处理器或处理/控制电路。GPU
160包括多个执行单元162。执行单元162可体现为并行处理器或处理器核心的阵列,其能够执行多个并行线程。在计算装置100的各个实施例中,GPU
160可体现为外围装置(例如在分立图形卡上),或者可位于CPU母板上或者CPU管芯上。
CPU存储器126和GPU存储器164各可体现为能够执行本文所描述功能的任何类型的易失性或非易失性存储器或数据存储装置。在操作中,存储器126、164可存储计算装置100的操作期间所使用的各种数据和软件,例如操作系统、应用、程序、库和驱动程序。例如,CPU存储器126的部分至少暂时存储命令缓冲区和DMA分组(如本文所公开的,其由CPU
120来创建),以及GPU存储器164的部分至少暂时存储DMA分组(其由CPU
120通过直接存储器存取子系统124传递给GPU存储器164)。
CPU存储器126例如经由I/O子系统122在通信上耦合到CPU 120,以及GPU存储器164类似地在通信上耦合到GPU 160。I/O子系统122可体现为促进与CPU
120、CPU存储器126、GPU
160(和/或执行单元162)、GPU存储器164以及计算装置100的其他组件的输入/输出操作的电路和/或组件。例如,I/O子系统122可体现为或者以其他方式包括存储器控制器集线器、输入/输出控制集线器、固件装置、通信链路(即,点对点链路、总线链路、导线、电缆、光导、印刷电路板迹线等)和/或促进输入/输出操作的其他组件和子系统。在一些实施例中,I/O子系统122可形成片上系统(SoC)的一部分,并且连同CPU
120、CPU存储器126、GPU
160、GPU存储器164和/或计算装置100的其他组件一起结合在单个集成电路芯片上。
说明性I/O子系统122包括直接存储器存取(DMA)子系统124,其促进CPU存储器126与GPU存储器164之间的数据传递。在一些实施例中,I/O子系统122(例如DMA子系统124)允许GPU
160直接访问CPU存储器126,并且允许CPU
120直接访问GPU存储器164。DMA子系统124可体现为DMA控制器或DMA“引擎”,例如外设组件互连(PCI)装置、外设组件互连-Express(PCI-Express)装置、I/O加速技术(I/OAT)装置和/或其它。
数据存储装置128可体现为配置用于数据的短期或长期存储的任何类型的一个或多个装置,例如存储器装置和电路、存储器卡、硬盘驱动器、固态驱动器或者其他数据存储装置。数据存储装置128可包括系统分区,其存储计算装置100的数据和固件代码。数据存储装置128还可包括操作系统分区,其存储计算装置100的操作系统140的数据文件以及可执行文件。
显示器130可体现为能够显示数字信息的任何类型的显示器,例如液晶显示器(LCD)、发光二极管(LED)、等离子体显示器、阴极射线管(CRT)或另其它类型的显示器装置。在一些实施例中,显示器130可耦合到触摸屏或其它用户输入装置,以便允许与计算装置100的用户交互。显示器130可以是用户界面子系统136的一部分。用户界面子系统136可包括促进与计算装置100的用户交互的多个附加装置,包括物理或虚拟控制按钮或按键、麦克风、扬声器、单向或双向摄影(still)和/或摄像机和/或其它。用户界面子系统136还可包括诸如运动传感器、接近传感器和眼球跟踪装置的装置,其可配置成检测、捕获和处理涉及计算装置100的各种其他形式的人类交互。
计算装置100还包括通信电路134,其可体现为能够实现计算装置100与其他电子装置之间的通信的任何通信电路、装置或者其集合。通信电路134可配置成使用任一个或多个通信技术(例如无线或有线通信)及关联协议(例如以太网、Bluetooth®、Wi-Fi®、Wimax、3G/LTE等)来实现这种通信。通信电路134可体现为网络适配器,包括无线网络适配器。
说明性计算装置100还包括多个计算机程序组件,例如装置驱动程序132、操作系统140、用户空间驱动程序142以及图形子系统144。其中,操作系统140促进用户空间应用(例如GPU应用210(图2))与计算装置100的硬件组件之间的通信。操作系统140可体现为能够执行本文所描述功能的任何操作系统,例如Microsoft
Corporation的WINDOWS的版本、Google, Inc.的ANDROID和/或其它。如本文所使用的,其中“用户空间”还可表示计算装置100的操作环境(其中最终用户可与计算装置100进行交互),而其中“系统空间”还可表示计算装置100的操作环境(其中编程代码能够与计算装置100的硬件组件直接交互)。例如,用户空间应用可与最终用户并且与其自己的所分配存储器直接交互,但是不与没有分配给用户空间应用的硬件组件或存储器直接交互。另一方面,系统空间应用可与硬件组件、其自己的所分配存储器和分配给当前运行用户空间应用的存储器直接交互,但是可以不与最终用户直接交互。因此,计算装置100的系统空间组件可具有比计算装置100的用户空间组件更大的特权。
在说明性实施例中,用户空间驱动程序142和装置驱动程序132作为“驱动程序对”进行协作,并且操控用户空间应用(例如GPU应用210(图2))与硬件组件(例如显示器130)之间的通信。在一些实施例中,用户空间驱动程序142可以是“通用”驱动程序,其例如能够向各种不同硬件组件(例如不同类型的显示器)传递独立于装置的图形渲染任务,而装置驱动程序132将独立于装置任务转化为特定硬件组件能够执行以实现所请求任务的命令。在其他实施例中,用户空间驱动程序142和装置驱动程序132的部分可组合为单个驱动程序组件。在一些实施例中,用户空间驱动程序142和/或装置驱动程序132的部分可包含在操作系统140中。驱动程序132、142说明性地是显示驱动程序;然而,所公开批量提交机制150的方面可适用于其他应用,例如可卸载(offload)到GPU
160(例如,在GPU
160配置为通用GPU或GPGPU的情况下)的任何种类的任务。
图形子系统144促进用户空间驱动程序142、装置驱动程序132和一个或多个用户空间应用(例如GPU应用210)之间的通信。图形子系统144可体现为能够执行本文所描述功能的任何类型的计算机程序子系统,例如应用编程接口(API)或者API套件、API和运行时间库的组合和/或其他计算机程序组件。图形子系统的示例包括Intel
Corporation的媒体开发框架(MDF)运行时间库、OpenCL运行时间库以及Microsoft Corporation的DirectX图形内核子系统和Windows显示驱动程序模型。
说明性图形子系统144包括多个计算机程序组件,例如GPU调度器146、中断处理程序148和批量提交子系统150。GPU调度器146与装置驱动程序132进行通信,以控制向GPU
160提交工作队列212(图2)中的DMA分组。工作队列212可体现为例如任何类型的先进先出数据结构或者能够至少暂时存储与GPU任务相关的数据的其它类型的数据结构。在说明性实施例中,GPU
160在每次GPU
160完成处理DMA分组时生成中断,并且这类中断由中断处理程序148来接收。由于中断能够由GPU
160因其他原因(像差错和例外)而发出,所以在一些实施例中,GPU调度器146在调度工作队列212中的下一个任务之前等待直到图形子系统144已经从装置驱动程序132接收到任务完成的确认。下面更详细描述批量提交机制150和可选同步机制152。
现在参照图2,在一些实施例中,计算装置100在操作期间建立环境200。说明性环境200包括如上所述的用户空间和系统空间。环境200的各种模块可体现为硬件、固件、软件或者其组合。另外,在一些实施例中,环境200的模块的部分或全部可与其他模块或软件/固件结构集成或者形成其部分。在用户空间中,图形子系统144从一个或多个用户空间GPU应用210接收GPU任务。GPU应用210可包括例如视频播放器、游戏、消息传递应用、web浏览器和社交媒体应用。GPU任务可包括帧处理,其中例如计算装置100的帧缓冲区中存储的视频图像的单独帧由GPU
160来处理,以用于由计算装置100(例如由显示器130)显示。如本文所使用的,其中术语“帧”可表示单个静止二维或三维数字图像,并且可以是数字视频(其包括多个帧)的一个帧。对于每个GPU任务,图形子系统144创建将要由GPU
160所执行的一个或多个工作负荷。为了向GPU
160提交工作负荷,用户空间驱动程序142使用批量提交机制150来创建命令缓冲区。由用户空间驱动程序142采用批量提交机制150所创建的命令缓冲区包含高级程序代码,其表示建立工作模式(其中分发多个单独工作负荷以供GPU
160在单个DMA分组中处理)所需的GPU命令。在系统空间中,与图形子系统144进行通信的装置驱动程序132将命令缓冲区转换为DMA分组,其包含能够由GPU
160来执行以执行批量提交的GPU特定命令。
批量提交机制150包括程序代码,其实现如本文所公开的命令缓冲区的创建。可通过批量提交机制150的程序代码来实现以创建命令缓冲区的方法400的示例在图4中示出,下面进行描述。同步机制152使由批量提交机制150所建立的工作模式能够包括同步。也就是说,利用同步机制152,批量提交机制150允许工作模式从多个可选工作模式(例如具有或没有同步)中选取。说明性批量提交机制150实现两个工作模式选项:一个具有同步而一个没有同步。在一个工作负荷产生由另一个工作负荷所消耗的输出的状况中可需要同步。在工作负荷之间不存在相关性的情况下,可使用没有同步的工作模式。在非同步工作模式中,批量提交机制150创建命令缓冲区,以便并行地(在同一命令缓冲区中)向GPU独立分发工作负荷的每个,使得工作负荷的全部可在执行单元162上同时执行。为了这样做,批量提交机制150将一个分发命令插入各工作负荷的命令缓冲区中。可由批量提交机制150为没有同步的多个工作负荷创建的命令缓冲区的伪代码的示例在以下代码示例1中示出。
代码示例
1
,
没有同步的多个工作负荷的命令缓冲区。
在代码示例1中,建立命令可包括准备GPU 160所需的以便在执行单元162上执行工作负荷的信息的GPU命令。这类命令可包括例如高速缓存配置命令、表面状态建立命令、媒体状态建立命令、管道控制命令和/或其它。媒体对象行人(walker)命令使GPU
160对识别为命令中的参数的工作负荷分发在执行单元162上运行的多个线程。管道控制命令确保全部先前命令在GPU完成命令缓冲区的执行之前完成执行。因此,GPU
160在命令缓冲区中包含的全部单独分发的工作负荷的处理完成时仅生成一个中断(ISR)。回过来,CPU
120仅生成一个延迟过程调用(DPC)。这样,一个命令缓冲区中包含的多个工作负荷仅生成一个ISR和一个DPC。
为了比较的目的,可通过现有技术(例如OpenCL的当前版本)为没有同步的多个工作负荷创建的命令缓冲区的伪代码的示例在以下代码示例2中示出。
代码示例
2
,
用于多个工作负荷的命令缓冲区
,
手动合并技术。
(
现有技术
)
在代码示例2中,建立命令可与以上所述的那些相似。然而,以及多个工作负荷由开发人员(例如GPU程序员)手动组合为单个工作负荷,其然后通过单个媒体对象行人命令来分发给GPU
160。虽然单个DMA分组从代码示例2来创建,产生一个IPC和DPC,但是合并的工作负荷比单独进行的独立工作负荷要大许多。这种大工作负荷能够使GPU
160的硬件资源(例如GPU指令高速缓存和/或寄存器)紧张。如上所提到的,对工作负荷的手动合并的已知备选方案是为各工作负荷创建独立DMA分组;然而,独立DMA分组引起比如本文所公开的包含多个工作负荷的单个DMA分组多得多的IPC和DPC。
在工作负荷同步工作模式中,批量提交机制150创建命令缓冲区,以便在同一命令缓冲区中向GPU 160独立分发每个工作负荷,并且同步机制152在工作负荷分发命令之间插入同步命令,以确保满足工作负荷相关性条件。为了这样做,批量提交机制150将一个分发命令插入各工作负荷的命令缓冲区中,以及同步机制152根据需要在各分发命令之后插入适当的管道控制命令。可由批量提交机制150(包括同步机制152)为具有同步的多个工作负荷创建的命令缓冲区的伪代码的示例在以下代码示例3中示出。
代码示例
3
,
具有同步的多个工作负荷的命令缓冲区。
在代码示例3中,建立命令和媒体对象行人命令与以上参照代码示例1所述的那些相似。管道控制(sync)命令包括对管道控制命令识别具有相关性条件的工作负荷的参数。例如,管道控制(sync
2,1)命令确保媒体对象行人(工作负荷1)命令在GPU
160开始媒体对象行人(工作负荷2)命令的执行之前完成执行。类似地,管道控制(sync
3.2)命令确保媒体对象行人(工作负荷2)命令在GPU
160开始媒体对象行人(工作负荷3)命令的执行之前完成执行。
现在参照图3,示出用于处理GPU任务的方法300的示例。方法300的部分可由计算装置100,例如由CPU
120和GPU
160来执行。说明性地,框310、312、314在用户空间中(例如由批量提交机制150和/或用户空间驱动程序142)执行;框316、318、324、326在系统空间中(例如由图形调度器146、中断处理程序148和/或装置驱动程序132)执行;以及框320、322由GPU
160(例如由执行单元162)执行。在框310,计算装置100(例如CPU
120)创建多个GPU工作负荷。工作负荷可由例如图形子系统144响应于由用户空间GPU应用210所请求的GPU任务而创建。如上所提到的,单个GPU任务(例如帧处理)可要求多个工作负荷。在框312,计算装置100(例如CPU
120)通过例如上述批量提交机制150来创建GPU任务的命令缓冲区。为了这样做,计算装置100为各工作负荷创建独立分发命令,以便包含在命令缓冲区中。在一些实施例中,命令缓冲区中的分发命令和其他命令体现为人类可读程序代码。在框314,计算装置100(例如CPU
120,通过用户空间驱动程序142)向图形子系统144提交命令缓冲区,以用于由GPU
160执行。
在框316,计算装置100(例如CPU 120)从命令缓冲区准备包括批量的工作负荷的DMA分组。为了这样做,说明性装置驱动程序132验证命令缓冲区,并且按照装置特定格式来写入DMA分组。在其中命令缓冲区体现为人类可读程序代码的实施例中,计算装置100将命令缓冲区中的人类可读命令转换成机器可读指令,其能够由GPU
160来执行。因此,DMA分组包含机器可读指令,其可对应于命令缓冲区中包含的人类可读命令。在框318,计算装置100(例如CPU
120)向GPU
160提交DMA分组用于执行。为了这样做,计算装置(例如CPU
120,通过与装置驱动程序132协调的GPU调度器146)向DMA分组中的资源指配存储器地址,向DMA分组指配唯一标识符(例如缓冲区栅栏(fence)ID),并且将DMA分组对GPU
160(例如对执行单元162)排队。
在框320,计算装置100(例如GPU 160)处理具有批量的工作负荷的DMA分组。例如,GPU
160可使用多个线程在不同执行单元162上处理各工作负荷。当GPU
160完成处理DMA分组(服从可包含在DMA分组中的任何同步命令)时,GPU
160在框322生成中断。中断由CPU
120(通过例如中断处理程序148)来接收。在框324,计算装置100(例如CPU
120)确定由GPU
160对DMA分组的处理是否完成。为了这样做,装置驱动程序132评估中断信息,包括刚完成的DMA分组的标识符(例如缓冲区栅栏ID)。如果装置驱动程序132推断由GPU
160对DMA分组的处理已经完成,则装置驱动程序132通知图形子系统144(例如GPU调度器146)DMA分组处理完成,并且将延迟过程调用(DPC)排队。在框326,计算装置100(例如CPU
120)通知GPU调度器146 DPC已经完成。为了这样做,DPC可调用由GPU调度器146所提供的回调功能。响应于DPC完成的通知,计算装置(例如CPU
120,通过GPU调度器146)调度工作队列212中的下一个GPU任务,用于由GPU
160处理。
现在参照图4,示出用于创建具有批量的工作负荷的命令缓冲区的方法400的示例。方法400的部分可由计算装置100,例如由CPU
120来执行。在框410,计算装置100通过创建命令缓冲区开始GPU任务的处理(例如响应于来自用户空间软件应用的请求)。所公开方法和装置的方面可使用例如LoadProgram、CreateKernel、CreateTask、AddKernel和AddSync媒体开发框架(MDF)运行时间API和/或其它实现。例如,利用媒体开发框架(MDF)运行时间API,pCmDev->LoadProgram(pCISA,uCISASize,pCmProgram)命令可用来将程序从永久存储文件加载到存储器,以及enqueue()
API可用来创建命令缓冲区,并且向工作队列212提交命令缓冲区。在框312,计算装置100确定执行所请求GPU任务所需的工作负荷的数量。为了这样做,计算装置100可定义(例如经由编程代码)给定任务的工作负荷的最大数量。工作负荷的最大数量能够例如基于CPU
120和/或GPU
160中的所分配资源(例如图形存储器中分配的全局状态堆或者命令缓冲区大小)来确定。所需的工作负荷的数量可取决于例如所请求GPU任务的性质和/或发布应用的类型而改变。例如,在感知计算应用中,单独帧可要求多个工作负荷(例如在一些情况下,33个工作负荷)来处理帧。在框414,计算装置100建立各工作负荷的自变量(argument)和线程空间。为了这样做,计算装置100对各工作负荷执行“创建工作负荷”命令。例如,利用媒体开发框架运行时间API,可使用pCmDev->CreateKernel(pCmProgram,
pCmKernelN)。在框416,计算装置100创建命令缓冲区,并且将第一工作负荷添加到命令缓冲区。例如,利用媒体开发框架运行时间API,CreateTask(pCmTask)命令可用来创建命令缓冲区,以及AddKernel(KernelN)命令可用来将工作负荷添加到命令缓冲区。
在框420,计算装置100确定是否要求工作负荷同步。为了这样做,计算装置100确定第一工作负荷的输出是否用作任何其他工作负荷的输入(例如通过检查创建工作负荷命令的自变量或参数)。如果需要同步,则计算装置在创建工作负荷命令之后将同步命令插入命令缓冲区。例如,利用媒体开发框架运行时间API,可使用pCmTask->AddSync()
API。在框424,计算装置100确定是否存在要添加到命令缓冲区的另一个工作负荷。如果存在要添加到命令缓冲区的另一个工作负荷,则计算装置100返回到框418,并且将工作负荷添加到命令缓冲区。如果不再存在要添加到命令缓冲区的工作负荷,则计算装置100创建DMA分组,并且向工作队列212提交DMA分组。如果GPU
160当前可用来处理DMA分组,则GPU调度器146在框426将向GPU
160提交DMA分组。在框428,计算装置100(例如CPU
120)等待来自GPU
160的GPU
160已经完成执行DMA分组的通知,并且方法400结束。接着框428,计算装置100可如上所述发起另一个命令缓冲区的创建。
下表1示出在将所公开批量提交机制应用于具有同步的感知计算应用之后得到的实验结果。
如表1中所示的,在感知计算应用中,在应用本文所公开的批量提交机制以处理一个DMA分组中的多个同步GPU工作负荷之后实现了性能增益。这些结果表明,当使用所公开的批量提交机制时,GPU
160由CPU
120更好地利用,这应当导致系统功率消耗的降低。其中,这些结果还可归因于减少数量的IPC和DPC调用以及需要被调度的较少数量的DMA分组。
示例
下面提供本文所公开技术的说明性示例。技术的实施例可包括以下所描述示例的任一个或多个或者它们的任何组合。
示例1包括:计算装置,用于执行可编程工作负荷,该计算装置包括创建直接存储器存取分组的中央处理单元,直接存储器存取分组包括用于可编程工作负荷的每个的独立分发指令;图形处理单元,执行可编程工作负荷,可编程工作负荷的每个包括图形处理单元指令的集合;其中直接存储器存取分组中的独立分发指令的每个要发起由图形处理单元对可编程工作负荷其中之一的处理;以及直接存储器存取子系统,将直接存储器存取分组从又中央处理单元可访问的存储器传递给由图形处理单元可访问的存储器。
示例2包括示例1的主题,其中中央处理单元要创建包括人类可读计算机代码中体现的分发命令的命令缓冲区,以及直接存储器存取分组中的分发指令对应于命令缓冲区中的分发命令。
示例3包括示例2的主题,其中中央处理单元执行用户空间驱动程序以创建命令缓冲区,以及中央处理单元执行装置驱动程序以创建直接存储器存取分组。
示例4包括示例1-3的任一个的主题,其中中央处理单元要创建具有相关性关系的可编程工作负荷的第一类型的直接存储器存取分组以及不具有相关性关系的可编程工作负荷的第二类型的直接存储器存取分组,其中第一类型的直接存储器存取分组与第二类型的直接存储器存取分组是不同的。
示例5包括示例4的主题,其中第一类型的直接存储器存取分组包括分发指令的两个之间的同步指令,以及第二类型的直接存储器存取分组没有包括分发指令之间的任何同步指令。
示例6包括示例1-3的任一个的主题,其中直接存储器存取分组中的分发指令的每个要发起通过图形处理单元的执行单元对可编程工作负荷其中之一的处理。
示例7包括示例1-3的任一个的主题,其中直接存储器存取分组包括同步指令,以确保通过图形处理单元对可编程工作负荷其中之一的执行在图形处理单元开始可编程工作负荷的另一个的执行之前完成。
示例8包括示例1-3的任一个的主题,其中可编程工作负荷的每个包括执行通过用户空间应用所请求的图形处理单元任务的指令。
示例9包括示例8的主题,其中用户空间应用包括感知计算应用。
示例10包括示例8的主题,其中图形处理单元任务包括数字视频的帧的处理。
示例11包括用于向图形处理单元提交可编程工作负荷的计算装置,可编程工作负荷的每个包括图形处理单元指令的集合,计算装置包括:图形子系统,促进用户空间应用与图形处理单元之间的通信;以及批量提交机制,创建包括用于可编程工作负荷的每个的独立分发命令的单个命令缓冲区,其中直接存储器存取分组中的独立命令的每个要独立发起通过图形处理单元对可编程工作负荷其中之一的处理。
示例12包括示例11的主题,并且包括创建直接存储器存取分组的装置驱动程序,直接存储器存取分组包括与命令缓冲区中的分发命令对应的图形处理单元指令。
示例13包括示例11或示例12的主题,其中分发命令要使图形处理单元并行地执行全部可编程工作负荷。
示例14包括示例11或示例12的主题,并且包括将同步命令插入命令缓冲区中以使图形处理单元在开始另一个可编程工作负荷的执行之前完成可编程工作负荷的执行的同步机制。
示例15包括示例14的主题,其中同步机制体现为批量提交机制的组件。
示例16包括示例11-13的任一个的主题,其中批量提交机制体现为图形子系统的组件。
示例17包括示例16的主题,其中图形子系统体现为下列中的一个或多个:应用编程接口、多个应用编程接口和运行时间库。
示例18包括用于向图形处理单元提交可编程工作负荷的方法,该方法包括采用计算装置来执行下列操作:创建命令缓冲区;将多个分发命令添加到命令缓冲区,分发命令的每个发起通过计算装置的图形处理单元对可编程工作负荷其中之一的执行;以及创建包括与命令缓冲区中的分发命令对应的图形处理单元指令的直接存储器存取分组。
示例19包括示例18的主题,并且包括将直接存储器存取分组传递给由图形处理单元可访问的存储器。
示例20包括示例18的主题,并且包括在命令缓冲区中的分发命令的两个之间插入同步命令,其中同步命令要确保图形处理单元在图形处理单元开始处理可编程工作负荷的另一个之前完成可编程工作负荷其中之一的处理。
示例21包括示例18的主题,并且包括公式化分发命令的每个,以创建可编程工作负荷其中之一的自变量的集合。
示例22包括示例18的主题,并且包括公式化分发命令的每个,以创建可编程工作负荷其中之一的线程空间。
示例23包括示例18-23的任一个的主题,并且包括由计算装置的直接存储器存取子系统将直接存储器存取分组从由中央处理单元可访问的存储器传递给由图形处理单元可访问的存储器。
示例24包括计算装置,其包括中央处理单元、图形处理单元以及存储器(具有多个指令存储在其中),指令在由中央处理单元执行时使计算装置执行示例18-23的任一个的方法。
示例25包括一个或多个机器可读存储媒体(包括多个指令存储在其上),指令响应被执行而使计算装置执行示例18-23的任一个的方法。
示例26包括计算装置,其包括用于执行示例18-23的任一个的方法的部件。
示例27包括用于执行可编程工作负荷的方法,该方法包括采用计算装置来执行下列操作:由计算装置的中央处理单元来创建直接存储器存取分组,直接存储器存取分组包括用于可编程工作负荷的每个的独立分发指令;由计算装置的图形处理单元来执行可编程工作负荷,可编程工作负荷的每个包括图形处理单元指令的集合;其中直接存储器存取分组中的独立分发指令的每个要发起由图形处理单元对可编程工作负荷其中之一的处理;以及由计算装置的直接存储器存取子系统将直接存储器存取分组从由中央处理单元可访问的存储器传递给由图形处理单元可访问的存储器。
示例28包括示例27的主题,并且包括由中央处理单元来创建包括人类可读计算机代码中体现的分发命令的命令缓冲区,其中直接存储器存取分组中的分发指令对应于命令缓冲区中的分发命令。
示例29包括示例28的主题,并且包括由中央处理单元来执行用户空间驱动程序以创建命令缓冲区,其中中央处理单元执行装置驱动程序以创建直接存储器存取分组。
示例30包括示例27-29的任一个的主题,并且包括由中央处理单元来创建具有相关性关系的可编程工作负荷的第一类型的直接存储器存取分组以及创建不具有相关性关系的可编程工作负荷的第二类型的直接存储器存取分组,其中第一类型的直接存储器存取分组与第二类型的直接存储器存取分组是不同的。
示例31包括示例30的主题,其中第一类型的直接存储器存取分组包括分发指令的两个之间的同步指令,以及第二类型的直接存储器存取分组没有包括分发指令之间的任何同步指令。
示例32包括示例27-29的任一个的主题,并且包括由直接存储器存取分组中的分发指令的每个来发起图形处理单元的执行单元对可编程工作负荷其中之一的处理。
示例33包括示例27-29的任一个的主题,并且包括由直接存储器存取分组中的同步指令来确保由图形处理单元对可编程工作负荷其中之一的执行在图形处理单元开始可编程工作负荷的另一个的执行之前完成。
示例34包括示例27-29的任一个的主题,并且包括由可编程工作负荷的每个来执行由用户空间应用所请求的图形处理单元任务。
示例35包括示例34的主题,其中用户空间应用包括感知计算应用。
示例36包括示例34的主题,其中图形处理单元任务包括数字视频的帧的处理。
示例37包括计算装置,其包括中央处理单元、图形处理单元、直接存储器存取子系统以及存储器(具有多个指令存储在其上),指令在由中央处理单元执行时使计算装置执行示例27-36的任一个的方法。
示例38包括一个或多个机器可读存储介质(包括多个指令存储在其上),指令响应于被执行而使计算装置执行示例27-36的任一个的方法。
示例39包括计算装置,其包括用于执行示例27-36的任一个的方法的部件。
示例40包括用于向计算装置的图形处理单元提交可编程工作负荷的方法,可编程工作负荷的每个包括图形处理单元指令的集合,该方法包括:由计算装置的图形子系统来促进用户空间应用与图形处理单元之间的通信;以及由计算装置的批量提交机制来创建包括用于可编程工作负荷的每个的独立分发命令的单个命令缓冲区,其中直接存储器存取分组中的独立命令的每个要独立发起由图形处理单元对可编程工作负荷其中之一的处理。
示例41包括示例40的主题,并且包括由计算装置的装置驱动程序来创建直接存储器存取分组,其中直接存储器存取分组包括与命令缓冲区中的分发命令对应的图形处理单元指令。
示例42包括示例40或示例41的主题,并且包括由分发命令来使图形处理单元并行地执行全部可编程工作负荷。
示例43包括示例40或示例41的主题,并且包括由计算装置的同步机制将同步命令插入命令缓冲区中以使图形处理单元在图形处理单元开始另一个可编程工作负荷的执行之前完成可编程工作负荷的执行。
示例44包括示例43的主题,其中同步机制体现为批量提交机制的组件。
示例45包括示例40-44的任一个的主题,其中批量提交机制体现为图形子系统的组件。
示例46包括示例40-44的任一个的主题,其中图形子系统体现为下列中的一个或多个:应用编程接口、多个应用编程接口和运行时间库。
示例47包括计算装置,其包括中央处理单元、图形处理单元、直接存储器存取子系统以及存储器(具有多个指令存储于其上),指令在由中央处理单元执行时使计算装置执行示例40-46的任一个的方法。
示例48包括一个或多个机器可读存储介质(其上存储有多个指令),指令响应于被执行而使计算装置执行示例40-46的任一个的方法。
示例49包括计算装置,其包括用于执行示例40-46的任一个的方法的部件。
Claims (25)
1. 一种用于执行可编程工作负荷的计算装置,所述计算装置包括:
中央处理单元,创建直接存储器存取分组,所述直接存储器存取分组包括用于所述可编程工作负荷的每个的独立分发指令;
图形处理单元,执行所述可编程工作负荷,所述可编程工作负荷的每个包括图形处理单元指令的集合;其中所述直接存储器存取分组中的所述独立分发指令的每个要发起由所述图形处理单元对所述可编程工作负荷其中之一的处理;以及
直接存储器存取子系统,将所述直接存储器存取分组从由所述中央处理单元可访问的存储器传递给由所述图形处理单元可访问的存储器。
2. 如权利要求1所述的计算装置,其中,所述中央处理单元要创建包括人类可读计算机代码中体现的分发命令的命令缓冲区,以及所述直接存储器存取分组中的所述分发指令对应于所述命令缓冲区中的所述分发命令。
3. 如权利要求2所述的计算装置,其中,所述中央处理单元执行用户空间驱动程序以创建所述命令缓冲区,以及所述中央处理单元执行装置驱动程序以创建所述直接存储器存取分组。
4. 如权利要求1-3中的任一项所述的计算装置,其中,所述中央处理单元要创建具有相关性关系的可编程工作负荷的第一类型的直接存储器存取分组以及不具有相关性关系的可编程工作负荷的第二类型的直接存储器存取分组,其中所述第一类型的直接存储器存取分组与所述第二类型的直接存储器存取分组是不同的。
5. 如权利要求4所述的计算装置,其中,所述第一类型的直接存储器存取分组包括所述分发指令的两个之间的同步指令,以及所述第二类型的直接存储器存取分组没有包括所述分发指令之间的任何同步指令。
6. 如权利要求1-3中的任一项所述的计算装置,其中,所述直接存储器存取分组中的所述分发指令的每个要发起通过所述图形处理单元的执行单元对所述可编程工作负荷其中之一的处理。
7. 如权利要求1-3中的任一项所述的计算装置,其中,所述直接存储器存取分组包括同步指令,以确保通过所述图形处理单元对所述可编程工作负荷其中之一的执行在所述图形处理单元开始所述可编程工作负荷的另一个的执行之前完成。
8. 如权利要求1-3中的任一项所述的计算装置,其中,所述可编程工作负荷的每个包括执行由用户空间应用所请求的图形处理单元任务的指令。
9. 如权利要求8所述的计算装置,其中,所述用户空间应用包括感知计算应用。
10. 如权利要求8所述的计算装置,其中,所述图形处理单元任务包括数字视频的帧的处理。
11. 一种用于向图形处理单元提交可编程工作负荷的计算装置,所述可编程工作负荷的每个包括图形处理单元指令的集合,所述计算装置包括:
图形子系统,促进用户空间应用与所述图形处理单元之间的通信;以及
批量提交机制,创建包括用于所述可编程工作负荷的每个的独立分发命令的单个命令缓冲区,其中所述直接存储器存取分组中的所述独立命令的每个要独立发起由所述图形处理单元对所述可编程工作负荷其中之一的处理。
12. 如权利要求11所述的计算装置,包括创建直接存储器存取分组的装置驱动程序,所述直接存储器存取分组包括与所述命令缓冲区中的所述分发命令对应的图形处理单元指令。
13. 如权利要求11或权利要求12所述的计算装置,其中,所述分发命令要使所述图形处理单元并行地执行全部所述可编程工作负荷。
14. 如权利要求11或权利要求12所述的计算装置,包括将同步命令插入所述命令缓冲区中以使所述图形处理单元在开始另一个可编程工作负荷的所述执行之前完成可编程工作负荷的执行的同步机制。
15. 如权利要求14所述的计算装置,其中,所述同步机制体现为所述批量提交机制的组件。
16. 如权利要求11-13中的任一项所述的计算装置,其中,所述批量提交机制体现为所述图形子系统的组件。
17. 如权利要求16所述的计算装置,其中,所述图形子系统体现为下列中的一个或多个:应用编程接口、多个应用编程接口和运行时间库。
18. 一种用于向图形处理单元提交可编程工作负荷的方法,所述方法包括采用计算装置来执行下列操作:
创建命令缓冲区;
将多个分发命令添加到所述命令缓冲区,所述分发命令的每个发起通过所述计算装置的图形处理单元对所述可编程工作负荷其中之一的执行;以及
创建包括与所述命令缓冲区中的所述分发命令对应的图形处理单元指令的直接存储器存取分组。
19. 如权利要求18所述的方法,包括将所述直接存储器存取分组传递给由所述图形处理单元可访问的存储器。
20. 如权利要求18所述的方法,包括在所述命令缓冲区中的所述分发命令的两个之间插入同步命令,其中所述同步命令要确保所述图形处理单元在所述图形处理单元开始处理所述可编程工作负荷的另一个之前完成所述可编程工作负荷其中之一的处理。
21. 如权利要求18所述的方法,包括公式化所述分发命令的每个,以创建所述可编程工作负荷其中之一的自变量的集合。
22. 如权利要求18所述的方法,包括公式化所述分发命令的每个,以创建所述可编程工作负荷其中之一的线程空间。
23. 如权利要求18所述的方法,包括由所述计算装置的直接存储器存取子系统将所述直接存储器存取分组从由所述中央处理单元可访问的存储器传递给由所述图形处理单元可访问的存储器。
24. 一种包括所述中央处理单元、所述图形处理单元以及具有多个指令存储在其中的存储器的计算装置,所述指令在由所述中央处理单元执行时使所述计算装置执行如权利要求18-23中的任一项所述的方法。
25. 一个或多个机器可读存储媒体,包括多个指令存储在其上,所述指令响应于被执行而使计算装置执行如权利要求18-23中的任一项所述的方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2014/072310 WO2015123840A1 (en) | 2014-02-20 | 2014-02-20 | Workload batch submission mechanism for graphics processing unit |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105940388A true CN105940388A (zh) | 2016-09-14 |
Family
ID=53877527
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480073687.XA Pending CN105940388A (zh) | 2014-02-20 | 2014-02-20 | 用于图形处理单元的工作负荷批量提交机制 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20160350245A1 (zh) |
EP (1) | EP3108376A4 (zh) |
JP (1) | JP6390021B2 (zh) |
KR (1) | KR101855311B1 (zh) |
CN (1) | CN105940388A (zh) |
TW (1) | TWI562096B (zh) |
WO (1) | WO2015123840A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018076647A1 (zh) * | 2016-10-26 | 2018-05-03 | 深圳市中兴微电子技术有限公司 | 数据处理的方法、装置和片上系统、设备、存储介质 |
CN110515657A (zh) * | 2018-05-21 | 2019-11-29 | 苹果公司 | 用于图形处理的间接命令缓冲区 |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9740464B2 (en) | 2014-05-30 | 2017-08-22 | Apple Inc. | Unified intermediate representation |
US10430169B2 (en) | 2014-05-30 | 2019-10-01 | Apple Inc. | Language, function library, and compiler for graphical and non-graphical computation on a graphical processor unit |
US10346941B2 (en) * | 2014-05-30 | 2019-07-09 | Apple Inc. | System and method for unified application programming interface and model |
DE112015006587T5 (de) | 2015-06-04 | 2018-05-24 | Intel Corporation | Adaptive Batch-Codierung für Slow-Motion-Videoaufzeichnung |
US20170069054A1 (en) * | 2015-09-04 | 2017-03-09 | Intel Corporation | Facilitating efficient scheduling of graphics workloads at computing devices |
CN105224410A (zh) * | 2015-10-19 | 2016-01-06 | 成都卫士通信息产业股份有限公司 | 一种调度gpu进行批量运算的方法及装置 |
US10846142B2 (en) | 2016-02-23 | 2020-11-24 | Intel Corporation | Graphics processor workload acceleration using a command template for batch usage scenarios |
JP6658136B2 (ja) * | 2016-03-14 | 2020-03-04 | コニカミノルタ株式会社 | 描画処理装置、画像処理装置、描画処理方法及び描画処理プログラム |
US10417023B2 (en) * | 2016-10-31 | 2019-09-17 | Massclouds Innovation Research Institute (Beijing) Of Information Technology | GPU simulation method |
CN110633181B (zh) * | 2018-06-25 | 2023-04-07 | 北京国双科技有限公司 | 可视化显示方法和装置 |
US10802995B2 (en) * | 2018-07-26 | 2020-10-13 | Xilinx, Inc. | Unified address space for multiple hardware accelerators using dedicated low latency links |
JP7136343B2 (ja) * | 2018-09-18 | 2022-09-13 | 日本電気株式会社 | データ処理システム、方法、およびプログラム |
US10846131B1 (en) * | 2018-09-26 | 2020-11-24 | Apple Inc. | Distributing compute work using distributed parser circuitry |
US10650482B1 (en) * | 2018-11-09 | 2020-05-12 | Adobe Inc. | Parallel rendering engine |
CN110688223B (zh) * | 2019-09-11 | 2022-07-29 | 深圳云天励飞技术有限公司 | 数据处理方法及相关产品 |
CN113630804B (zh) * | 2021-07-06 | 2023-08-08 | 合肥联宝信息技术有限公司 | 一种动态调节gpu频段的方法、装置及存储介质 |
KR102353036B1 (ko) * | 2021-08-30 | 2022-01-20 | 주식회사 페블 | 그래픽 메모리 기반의 2차원 그래픽 명령어를 처리하는 장치 및 방법 |
WO2023135706A1 (ja) * | 2022-01-13 | 2023-07-20 | 日本電信電話株式会社 | 演算処理オフロードシステム、演算処理オフロード方法およびプログラム |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070165043A1 (en) * | 2000-08-23 | 2007-07-19 | Nintendo Co., Ltd. | Method and apparatus for buffering graphics data in a graphics system |
EP1883051A1 (en) * | 2005-05-20 | 2008-01-30 | Sony Computer Entertainment Inc. | Graphic processor and information processing device |
EP1978483A1 (en) * | 2007-04-04 | 2008-10-08 | Qualcomm Incorporated | Indexes of graphics processing objects in graphics processing unit commands |
US20080303833A1 (en) * | 2007-06-07 | 2008-12-11 | Michael James Elliott Swift | Asnchronous notifications for concurrent graphics operations |
WO2009111045A1 (en) * | 2008-03-04 | 2009-09-11 | Apple Inc. | Buffers for display acceleration |
CN101685391A (zh) * | 2002-01-04 | 2010-03-31 | 微软公司 | 管理计算系统中协处理器的计算资源的方法和系统 |
CN101739290A (zh) * | 2008-11-19 | 2010-06-16 | 埃森哲环球服务有限公司 | 用于保障多线程服务器应用的系统 |
CN102089752A (zh) * | 2008-07-10 | 2011-06-08 | 洛克泰克科技有限公司 | 依赖性问题的有效率的并行计算 |
CN102859492A (zh) * | 2010-04-28 | 2013-01-02 | 瑞典爱立信有限公司 | 用于gpu命令调度的技术 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6292490B1 (en) * | 1998-01-14 | 2001-09-18 | Skystream Corporation | Receipts and dispatch timing of transport packets in a video program bearing stream remultiplexer |
US6704857B2 (en) * | 1999-12-23 | 2004-03-09 | Pts Corporation | Methods and apparatus for loading a very long instruction word memory |
US7421694B2 (en) | 2003-02-18 | 2008-09-02 | Microsoft Corporation | Systems and methods for enhancing performance of a coprocessor |
US8291009B2 (en) * | 2003-04-30 | 2012-10-16 | Silicon Graphics International Corp. | System, method, and computer program product for applying different transport mechanisms for user interface and image portions of a remotely rendered image |
US20080211816A1 (en) * | 2003-07-15 | 2008-09-04 | Alienware Labs. Corp. | Multiple parallel processor computer graphics system |
DE102005044483A1 (de) * | 2005-09-16 | 2007-03-29 | Electronic Thoma Gmbh | Transportierbarer, konfigurierbarer Informationsträger und Verfahren hierzu |
US9058675B2 (en) * | 2010-05-29 | 2015-06-16 | Intel Corporation | Non-volatile storage for graphics hardware |
US9086916B2 (en) * | 2013-05-15 | 2015-07-21 | Advanced Micro Devices, Inc. | Architecture for efficient computation of heterogeneous workloads |
-
2014
- 2014-02-20 EP EP14883150.6A patent/EP3108376A4/en not_active Ceased
- 2014-02-20 JP JP2016545795A patent/JP6390021B2/ja active Active
- 2014-02-20 WO PCT/CN2014/072310 patent/WO2015123840A1/en active Application Filing
- 2014-02-20 CN CN201480073687.XA patent/CN105940388A/zh active Pending
- 2014-02-20 US US15/112,871 patent/US20160350245A1/en not_active Abandoned
- 2014-02-20 KR KR1020167019668A patent/KR101855311B1/ko not_active Application Discontinuation
-
2015
- 2015-01-19 TW TW104101658A patent/TWI562096B/zh not_active IP Right Cessation
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070165043A1 (en) * | 2000-08-23 | 2007-07-19 | Nintendo Co., Ltd. | Method and apparatus for buffering graphics data in a graphics system |
CN101685391A (zh) * | 2002-01-04 | 2010-03-31 | 微软公司 | 管理计算系统中协处理器的计算资源的方法和系统 |
EP1883051A1 (en) * | 2005-05-20 | 2008-01-30 | Sony Computer Entertainment Inc. | Graphic processor and information processing device |
EP1978483A1 (en) * | 2007-04-04 | 2008-10-08 | Qualcomm Incorporated | Indexes of graphics processing objects in graphics processing unit commands |
US20080303833A1 (en) * | 2007-06-07 | 2008-12-11 | Michael James Elliott Swift | Asnchronous notifications for concurrent graphics operations |
WO2009111045A1 (en) * | 2008-03-04 | 2009-09-11 | Apple Inc. | Buffers for display acceleration |
CN102089752A (zh) * | 2008-07-10 | 2011-06-08 | 洛克泰克科技有限公司 | 依赖性问题的有效率的并行计算 |
CN101739290A (zh) * | 2008-11-19 | 2010-06-16 | 埃森哲环球服务有限公司 | 用于保障多线程服务器应用的系统 |
CN102859492A (zh) * | 2010-04-28 | 2013-01-02 | 瑞典爱立信有限公司 | 用于gpu命令调度的技术 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018076647A1 (zh) * | 2016-10-26 | 2018-05-03 | 深圳市中兴微电子技术有限公司 | 数据处理的方法、装置和片上系统、设备、存储介质 |
CN107992328A (zh) * | 2016-10-26 | 2018-05-04 | 深圳市中兴微电子技术有限公司 | 一种数据处理的方法、装置和片上系统 |
CN110515657A (zh) * | 2018-05-21 | 2019-11-29 | 苹果公司 | 用于图形处理的间接命令缓冲区 |
CN110515657B (zh) * | 2018-05-21 | 2023-10-10 | 苹果公司 | 用于图形处理的间接命令缓冲区 |
Also Published As
Publication number | Publication date |
---|---|
KR101855311B1 (ko) | 2018-05-09 |
KR20160100390A (ko) | 2016-08-23 |
TWI562096B (en) | 2016-12-11 |
JP2017507405A (ja) | 2017-03-16 |
JP6390021B2 (ja) | 2018-09-19 |
EP3108376A4 (en) | 2017-11-01 |
WO2015123840A1 (en) | 2015-08-27 |
US20160350245A1 (en) | 2016-12-01 |
EP3108376A1 (en) | 2016-12-28 |
TW201535315A (zh) | 2015-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105940388A (zh) | 用于图形处理单元的工作负荷批量提交机制 | |
US10133597B2 (en) | Intelligent GPU scheduling in a virtualization environment | |
CN107766148B (zh) | 一种异构集群及任务处理方法和装置 | |
US10970129B2 (en) | Intelligent GPU scheduling in a virtualization environment | |
CN110489213B (zh) | 一种任务处理方法及处理装置、计算机系统 | |
CN102597950B (zh) | 基于硬件排程gpu工作 | |
US9104491B2 (en) | Batch scheduler management of speculative and non-speculative tasks based on conditions of tasks and compute resources | |
US20150143382A1 (en) | Scheduling workloads and making provision decisions of computer resources in a computing environment | |
US20140189708A1 (en) | Terminal and method for executing application in same | |
US20170069054A1 (en) | Facilitating efficient scheduling of graphics workloads at computing devices | |
CN114637536A (zh) | 任务处理方法、计算协处理器、芯片及计算机设备 | |
US20230118303A1 (en) | Asynchronous distributed data flow for machine learning workloads | |
CN103262039A (zh) | 用于处理装置的同步操作的方法和系统 | |
CN111767059B (zh) | 深度学习模型的部署方法、装置、电子设备和存储介质 | |
CN115775199B (zh) | 数据处理方法和装置、电子设备和计算机可读存储介质 | |
Liu et al. | BSPCloud: A hybrid distributed-memory and shared-memory programming model | |
CN103631648A (zh) | 一种任务处理方法及系统 | |
CN110060198B (zh) | 基于多核处理器的图形库应用支持装置、方法及应用 | |
EP3866007B1 (en) | Intelligent gpu scheduling in a virtualization environment | |
US10908962B1 (en) | System and method to share GPU resources | |
CN117170811A (zh) | 一种基于volcano的节点分组作业调度方法及系统 | |
CN117349029A (zh) | 异构计算系统、能耗确定方法、装置、电子设备及介质 | |
CN102467406A (zh) | 多处理器结构的模拟方法及模拟器 | |
JP2012230488A (ja) | 情報処理装置、スケジューリング方法、プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
AD01 | Patent right deemed abandoned |
Effective date of abandoning: 20201204 |
|
AD01 | Patent right deemed abandoned |