CN110502348A - 基于服务的gpu指令提交服务器 - Google Patents
基于服务的gpu指令提交服务器 Download PDFInfo
- Publication number
- CN110502348A CN110502348A CN201910666260.5A CN201910666260A CN110502348A CN 110502348 A CN110502348 A CN 110502348A CN 201910666260 A CN201910666260 A CN 201910666260A CN 110502348 A CN110502348 A CN 110502348A
- Authority
- CN
- China
- Prior art keywords
- gpu
- instruction
- submitted
- gpu instruction
- subregion
- 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.)
- Granted
Links
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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Advance Control (AREA)
Abstract
本发明公开了一种基于服务的GPU指令提交服务器,用于执行以下程序步骤:步骤1:上电后完成初始化;步骤2:运行系统内核态,循环查询是否有分区CPU请求提交GPU指令,若有进入步骤3;步骤3:接收分区CPU提交的GPU指令;步骤4:将GPU指令送到命令缓冲区,同时更新相应标志,通知GPU读取指令。本发明将传统的基于信号互斥量的方式改为基于服务的GPU指令提交方式,提高了系统的运行效率、确定性和可配置性。
Description
技术领域
本发明专利属于图形处理器(GPU)驱动领域。
背景技术
图形处理器(GPU)广泛应用于工业、医疗、消费电子等各种需要图形生成及显示的领域,最常见的应用场景为中央处理器(CPU)通过PCI或PCIE总线和GPU相互交互数据和命令,GPU负责绘制图形并输出。在三维图形生成过程中,在CPU上运行的GPU驱动程序负责将高级语言转换为GPU能理解和执行的GPU指令,按照某种指令提交策略将GPU指令发送给GPU执行,一般是在CPU内存中申请一片内存区域,一般称为命令缓冲区(ringbuffer),用于存放GPU指令,并把这部分内存区域开放给GPU,使GPU也可以访问这段区域,从而可以取走指令。
在vxWorks653等嵌入式分区操作系统下,有多分区的概念,分区之间相互隔离以保证安全性,分区按照时间片轮转的方式进行调度,当某个分区的时间片耗尽时,切换到下一个分区执行下一个分区上的应用。在一些应用场景下,多个分区上运行的应用都需要使用GPU进行绘制,为了保证指令运行的正确性,GPU指令在存放到ringbuffer时具有独占性,即多个分区不能同时发送指令到ringbuffer,只能当一个分区存放完后,另一个分区才能访问ringbuffer,否则可能导致程序运行错误。
传统的GPU指令在提交时,一般采用互斥锁的方式,也就是说某个分区需要提交GPU指令时,需要先申请一个全局的互斥信号量,系统判断信号量是否空闲,如果空闲则将信号量授予当前分区使用,分区在获取信号量后,将指令存放到ringbuffer中,存放完成后释放信号量。若申请信号量时,当前信号量被其他分区占用,则当前分区无法获取信号量,只能等待其他分区释放,无法将指令提交给GPU执行。
传统的GPU指令提交管理方法具有以下不足:
1)确定性低
若当前分区已申请到信号量,在提交指令到GPU时发生了时间片轮转,则会发生当前分区获取的信号量无法释放,而下一个分区无法获取到信号量的情况,这样在下一个时间片内,下一个分区只能空等,无法提交GPU指令,无法在确定的时间内将指令提交给GPU。
2)效率低
所有分区都要等待其他分区指令存放完毕后才能发送指令,时间浪费在等待信号量的释放上,运行效率低。
发明内容
针对传统的GPU指令提交管理方法的不足,本发明的发明目的在于提供一种基于服务的GPU指令提交服务器,每个分区的GPU指令不是直接提交给GPU,而且通过GPU指令提交服务器进行管理和中转。当分区需要发送GPU指令时,发送请求给GPU指令提交服务器,GPU指令提交服务器进行收取和管理,并发送给GPU执行,这样就解决了传统方式可能导致的在时间片内无法及时提交指令问题,提高了指令调度的确定性,提高系统的运行效率。
本发明的发明目的通过以下技术方案实现:
一种基于服务的GPU指令提交服务器,用于执行以下程序步骤:
步骤1:上电后完成初始化;
步骤2:运行系统内核态,循环查询是否有分区CPU请求提交GPU指令,若有进入步骤3;
步骤3:接收分区CPU提交的GPU指令;
步骤4:将GPU指令送到命令缓冲区,同时更新相应标志,通知GPU读取指令。
优选地,步骤3中,还包含判断CPU提交的GPU指令是否完整,若不完整,则先缓存在本地不处理,待分区CPU在下个时间片提交剩余的GPU指后再进入步骤4。
优选地,所述步骤4中,还包含对各个分区CPU提交的GPU指令进行优先级管理,优先级高的GPU指令优先送到命令缓冲区。
本发明的GPU指令提交服务器具有以下优点:
1)运行效率高,提升了应用的性能
传统的GPU指令提交基于信号量的方式,若因为上个时间片内运行的程序没有及时释放信号量,则下一个时间片内的程序由于无法获取信号量,只能干等。而采用GPU指令提交服务器后,将信号量方式抛弃,改用客户机-服务器的方式,这样每个分区无需依赖其他分区是否及时释放信号量,在需要时即可将命令提交给GPU指令提交服务器,后续操作由GPU指令提交服务器完成,节省了大量的等待时间;
2)提高了系统的确定性
传统方式在提交指令时若发生时间片切换,则会导致下一个分区的指令由于无法获取信号量而无法在预定时间片内提交指令,相比于传统方式,新的方式由GPU指令提交服务器负责收集各个分区发来的GPU指令,避免了指令提交的阻塞现象,提高了系统的时间确定性。
3)提高了系统的可配置性
传统的GPU指令提交方式由各个分区单独提交给GPU,GPU不会去区分指令是哪个分区发送的,只会依次执行。新的方式由GPU指令提交服务器收集并管理指令,这样可以根据应用的需求,在GPU指令提交服务器内对各个分区发送的指令进行优先级管理等操作,从而提高了系统的可配置性。
附图说明
图1为GPU指令提交服务器的流程示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。
本实施例所示的基于服务的GPU指令提交服务器运行于操作系统内核态,负责接收分区发来的命令请求,并解释执行。各个分区不再直接发送GPU指令到ringbuffer,而由GPU指令提交服务器和ringbuffer交互。参见图1所示,基于服务的GPU指令提交服务器,用于执行以下程序步骤:
步骤1:上电后完成初始化。
步骤2:运行系统内核态,循环查询是否有分区CPU请求提交GPU指令,若有进入步骤3。
步骤3:接收分区CPU提交的GPU指令。分区CPU需要在时间片内向GPU指令提交服务器提交GPU指令,有可以存在时间片耗尽而GPU指令还未提交完整,此时GPU指令提交服务器则将不完整的GPU指令先缓存在本地不处理,待分区CPU在下个时间片提交剩余的GPU指令后再处理。
步骤4:将GPU指令送到命令缓冲区,同时更新相应标志,通知GPU读取指令。由于各分区CPU将GPU指令都集中到GPU指令提交服务器,这样可以根据应用的需求,在GPU指令提交服务器内对各个分区发送的指令进行优先级管理等操作,优先级高的GPU指令优先送到命令缓冲区,从而提高了系统的可配置性。
本发明不依赖于具体的硬件平台,适应性和灵活性好,且实现简单、方便易用,适用于各种GPU命令管理的场合。
Claims (3)
1.一种基于服务的GPU指令提交服务器,用于执行以下程序步骤:
步骤1:上电后完成初始化;
步骤2:运行系统内核态,循环查询是否有分区CPU请求提交GPU指令,若有进入步骤3;
步骤3:接收分区CPU提交的GPU指令;
步骤4:将GPU指令送到命令缓冲区,同时更新相应标志,通知GPU读取指令。
2.根据权利要求1所述的一种基于服务的GPU指令提交服务器,其特征在于所述步骤3中,还包含判断CPU提交的GPU指令是否完整,若不完整,则先缓存在本地不处理,待分区CPU在下个时间片提交剩余的GPU指后再进入步骤4。
3.根据权利要求1所述的一种基于服务的GPU指令提交服务器,其特征在于所述步骤4中,还包含对各个分区CPU提交的GPU指令进行优先级管理,优先级高的GPU指令优先送到命令缓冲区。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910666260.5A CN110502348B (zh) | 2019-07-23 | 2019-07-23 | 基于服务的gpu指令提交服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910666260.5A CN110502348B (zh) | 2019-07-23 | 2019-07-23 | 基于服务的gpu指令提交服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110502348A true CN110502348A (zh) | 2019-11-26 |
CN110502348B CN110502348B (zh) | 2023-10-27 |
Family
ID=68586694
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910666260.5A Active CN110502348B (zh) | 2019-07-23 | 2019-07-23 | 基于服务的gpu指令提交服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110502348B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102859492A (zh) * | 2010-04-28 | 2013-01-02 | 瑞典爱立信有限公司 | 用于gpu命令调度的技术 |
CN106874072A (zh) * | 2015-12-14 | 2017-06-20 | 中国航空工业第六八研究所 | 一种基于PowerPC处理器的嵌入式操作系统分区虚拟中断的处理方法 |
CN107544843A (zh) * | 2017-08-28 | 2018-01-05 | 北京翼辉信息技术有限公司 | 一种分区系统调度算法 |
CN108733602A (zh) * | 2017-04-13 | 2018-11-02 | Arm 有限公司 | 数据处理 |
-
2019
- 2019-07-23 CN CN201910666260.5A patent/CN110502348B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102859492A (zh) * | 2010-04-28 | 2013-01-02 | 瑞典爱立信有限公司 | 用于gpu命令调度的技术 |
CN106874072A (zh) * | 2015-12-14 | 2017-06-20 | 中国航空工业第六八研究所 | 一种基于PowerPC处理器的嵌入式操作系统分区虚拟中断的处理方法 |
CN108733602A (zh) * | 2017-04-13 | 2018-11-02 | Arm 有限公司 | 数据处理 |
CN107544843A (zh) * | 2017-08-28 | 2018-01-05 | 北京翼辉信息技术有限公司 | 一种分区系统调度算法 |
Also Published As
Publication number | Publication date |
---|---|
CN110502348B (zh) | 2023-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112465129B (zh) | 片内异构人工智能处理器 | |
KR100879825B1 (ko) | 이질적 리소스와의 명령어 세트 아키텍처-기반 시퀀서간통신 | |
US20070074214A1 (en) | Event processing method in a computer system | |
US20030177288A1 (en) | Multiprocessor system | |
CN101546275B (zh) | 一种获取多处理器硬件信号量的方法 | |
US9286129B2 (en) | Termination of requests in a distributed coprocessor system | |
US10705993B2 (en) | Programming and controlling compute units in an integrated circuit | |
US8843728B2 (en) | Processor for enabling inter-sequencer communication following lock competition and accelerator registration | |
CN114610472A (zh) | 异构计算中多进程管理方法及计算设备 | |
WO2024119930A1 (zh) | 调度方法、装置、计算机设备和存储介质 | |
CN112559403B (zh) | 一种处理器及其中的中断控制器 | |
US8635384B2 (en) | Managing data movement in a cell broadband engine processor | |
CN110502348A (zh) | 基于服务的gpu指令提交服务器 | |
CN111443898A (zh) | 基于优先级队列与有限状态机的流程式控制软件设计方法 | |
CN105912485B (zh) | 一种基于AHB-Lite协议的访存队列设计方法及其装置 | |
US7647532B2 (en) | Trace controller, microprocessor, and trace control method | |
US7191315B2 (en) | Method and system for tracking and recycling physical register assignment | |
CN108196849A (zh) | 一种低延迟指令调度器 | |
CN100492299C (zh) | 一种嵌入式软件开发的方法及系统 | |
CN114116015A (zh) | 用于管理硬件命令队列的方法及系统 | |
CN108733409A (zh) | 执行推测线程的方法以及片上多核处理器 | |
JPS603229B2 (ja) | 情報処理方式 | |
JP2795312B2 (ja) | プロセス間通信スケジューリング方式 | |
JPS6049464A (ja) | マルチプロセッサ計算機におけるプロセッサ間通信方式 | |
CN117591271A (zh) | 一种Linux系统下实时数据采集与保存的方法、系统、设备 |
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 |