CN112949847B - 神经网络算法加速系统、调度系统及调度方法 - Google Patents
神经网络算法加速系统、调度系统及调度方法 Download PDFInfo
- Publication number
- CN112949847B CN112949847B CN202110344439.6A CN202110344439A CN112949847B CN 112949847 B CN112949847 B CN 112949847B CN 202110344439 A CN202110344439 A CN 202110344439A CN 112949847 B CN112949847 B CN 112949847B
- Authority
- CN
- China
- Prior art keywords
- task
- accelerator
- neural network
- module
- register
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- 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
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- 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)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Evolutionary Computation (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Advance Control (AREA)
Abstract
本发明提供一种神经网络算法加速系统、调度系统及调度方法,神经网络算法加速系统包括:神经网络加速器,配置成执行神经网络加速计算;加速器动态随机存取存储器,配置成向神经网络加速器提供输入数据,以及接收神经网络加速器的输出数据;加速器控制模块,包括:接口寄存器列表模块,包括多个储存不同任务执行参数的寄存器;任务控制模块,配置成依据所述接口寄存器列表模块执行任务的接收、任务的下发以及任务的中断;状态监控模块,配置成基于神经网络加速器的任务执行状态,向所述接口寄存器列表模块提供至少部分任务执行执行参数。本发明提高系统效率。
Description
技术领域
本发明涉及卷积神经网络领域,尤其涉及一种神经网络算法加速系统、调度系统及调度方法。
背景技术
卷积神经网络(Convolutional Neural Network,CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。它主要包括卷积层(convolutional layer)和池化层(pooling layer)。卷积神经网络已广泛应用于图像分类、物体识别、目标追踪。
申请公布号为CN108416433A,发明名称为一种基于异步事件的神经网络异构加速方法和系统的专利中,公开了一种异构计算加速平台,且针对神经网络计算。
该申请使得CPU和加速器共享一块系统内存,加速器一般通过总线访问系统内存,而系统内存的带宽是一定的,存在CPU和加速器同时发起内存访问的时刻,则总线需要仲裁,一定程度系统效率降低。但是这样做的优势是成本比较低,加速器无需emif接口,无需物理内存芯片,比如DDR4.
该申请按固定时间间隔轮询内存的方式,依然不够高效,必须等到一个批次的所有任务全部从一个或多个加速器得到完成结果,CPU才能轮询得到完成标志,开始处理。时间间隔的方式不好控制,这段时间定义多长需要看当前批量任务的处理时长,否则按固定时长间隔轮询,对系统效率有一定的负面影响。
该申请轮询占用CPU资源,一旦多个加速器中任意一个意外宕机,则CPU轮询不到批量的队列结束标志,会持续卡死在轮询中,进而导致整个系统存在卡死的风险。从该申请的描述看,属于单进程软件架构,CPU发送队列和处理队列中断,不能兼顾,中断上报会打断CPU其他的工作。
由此,如何优化基于异步事件的神经网络异构加速方法和系统,从而提高系统效率,是本领域亟待解决的技术问题。
发明内容
本发明为了克服上述现有技术存在的缺陷,提供一种神经网络算法加速系统、调度系统及调度方法,以提高系统效率。
根据本发明的一个方面,提供一种神经网络算法加速系统,包括:
神经网络加速器,配置成执行神经网络加速计算;
加速器动态随机存取存储器,配置成向神经网络加速器提供输入数据,以及接收神经网络加速器的输出数据;
加速器控制模块,包括:
接口寄存器列表模块,包括多个储存不同任务执行参数的寄存器;
任务控制模块,配置成依据所述接口寄存器列表模块执行任务的接收、任务的下发以及任务的中断;
状态监控模块,配置成基于神经网络加速器的任务执行状态,向所述接口寄存器列表模块提供至少部分任务执行执行参数,
其中,所述神经网络加速器以及所述加速器控制模块位于加速器芯片的片内,所述加速器动态随机存取存储器位于所述加速器芯片的片外。
在本发明的一些实施例中,所述接口寄存器列表模块包括任务描述符接收寄存器,所述任务描述符接收寄存器对于片外中央处理器为可读写状态,所述任务控制模块包括任务接收模块,
当所述任务描述符接收寄存器被片外中央处理器写入任务描述符时,所述任务描述符接收寄存器的触发位被从非触发值置为触发值;
所述任务接收模块监控所述任务描述符接收寄存器的触发位为触发值时,则自所述任务描述符接收寄存器读取任务描述符,且将所述任务描述符接收寄存器的触发位置为非触发值,
其中,所述任务描述符供所述神经网络加速器执行任务。
在本发明的一些实施例中,所述接口寄存器列表模块还包括加速器任务接收缓冲区状态寄存器,所述任务描述符接收寄存器对于片外中央处理器为只读状态,所述加速器任务接收缓冲区状态寄存器用以表示所述神经网络加速器当前的待执行任务数量,所述任务控制模块还包括任务下发模块,
所述任务接收模块监控读取所述任务描述符后,将所述任务描述符写入所述任务下发模块中的加速器任务接收缓冲区内,并由所述状态监控模块更新所述加速器任务接收缓冲区状态寄存器。
在本发明的一些实施例中,所述任务控制模块还包括计算控制模块,
当所述任务下发模块中的加速器任务接收缓冲区内的待执行任务不为空,且所述计算控制模块的预读取待执行任务的任务描述符已写入所述神经网络加速器的参数配置区时,所述计算控制模块自所述任务下发模块中预读取一个待执行任务的任务描述符,并对所述任务描述符进行解析,由所述状态监控模块更新所述加速器任务接收缓冲区状态寄存器;
所述计算控制模块监控所述神经网络加速器处于空闲状态时,所述计算控制模块将经解析的任务描述符写入所述神经网络加速器的参数配置区。
在本发明的一些实施例中,所述接口寄存器列表模块还包括加速器负载状态寄存器,
所述神经网络加速器向所述状态监控模块实时上报工作状态或空闲状态,并由所述状态监控模块写入所述加速器负载状态寄存器。
在本发明的一些实施例中,所述接口寄存器列表模块还包括任务完成标示寄存器,所述任务控制模块还包括中断上报模块,
所述神经网络加速器执行完任务后,向所述计算控制模块发送中断消息;
所述计算控制模块将所述中断消息发送至任务接收模块;
所述任务接收模块将所述神经网络加速器执行任务的输出数据的起始地址上报至所述任务完成标示寄存器;
所述任务接收模块将所述中断消息发送至所述中断上报模块,以供所述中断上报模块发送至片外中央处理器。
根据本发明的又一方面,还提供一种神经网络算法加速器调度系统,包括:
如上所述的神经网络算法加速系统;
片外中央处理器以及中央处理器动态随机存取存储器;
传输接口,包括指令通道以及数据通道,所述指令通道供所述片外中央处理器与所述加速器控制模块进行通信,所述数据通道供所述中央处理器动态随机存取存储器与所述加速器动态随机存取存储器进行通信。
根据本发明的又一方面,还提供一种神经网络算法加速器的任务调度方法,其特征在于,应用于如上所述的神经网络算法加速器调度系统,所述任务调度方法在片外中央处理器执行,所述任务调度方法包括:
提供第一进程,所述第一进程执行:
通过所述数据通道,以将待执行任务的任务帧发送至所述加速器动态随机存取存储器;
通过所述指令通道,向所述接口寄存器列表模块写入部分任务执行参数;
提供第二进程,所述第二进程执行:
获取来自所述神经网络加速器的终端消息;
通过所述数据通道,从所述加速器动态随机存取存储器读取所述神经网络加速器的输出数据;
提供第三进程,所述第三进程执行:
监控所述接口寄存器列表模块;
当所述神经网络加速器的任务接收缓冲区未满,则向所述第一进程发送第一指示信息,所述第一指示信息指示所述神经网络加速器可用;
向所述第一进程发送所述神经网络加速器的负载状态信息。
在本发明的一些实施例中,所述片外中央处理器于所述第一进程、所述第二进程以及所述第三进程中选择一个或多个进程执行。
在本发明的一些实施例中,所述第二进行和所述第三进程与所述第一进程同时执行。
相比现有技术,本发明的优势在于:
本发明提供的神经网络算法加速系统、调度系统及调度方法,提高系统效率。
附图说明
通过参照附图详细描述其示例实施方式,本发明的上述和其它特征及优点将变得更加明显。
图1示出了根据本发明实施例的神经网络算法加速器调度系统的示意图;
图2示出了根据本发明实施例的神经网络算法加速系统的示意图;
图3至图5分别示出了根据本发明实施例的神经网络算法加速器的任务调度方法的三个进程的流程图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更;加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。
此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
本发明设计芯片内微架构设计及配合使用的上位机C++或python软件,形成一套软硬件系统,对片内的神经网络加速器进行调度,对业务场景要求推理的图像帧进行最大化加速计算。调度机制的响应效率,直接影响着加速器的性能发挥。
在本发明的各实施例中,一个任务即对应一帧,通常一帧是指一帧待计算的图像数据,完成一帧的计算是指完成一次神经网络算法模型的推理,一个模型内包含多层神经网络。本设计的微架构,以每个任务为基本单位进行管理。软件将待加速的每一帧任务下发至本设计中的调度系统内,再由片内的调度系统对片内的加速器进行任务触发,管理完成中断,上报状态等。
图1示出了根据本发明实施例的神经网络算法加速器调度系统的示意图。
神经网络算法加速器调度系统包括系统主控110、传输接口120以及神经网络算法加速系统。系统主控110包括片外中央处理器(CPU)111以及中央处理器动态随机存取存储器(CPU DRAM)112。
神经网络算法加速系统包括神经网络加速器131、加速器动态随机存取存储器(加速器DRAM)132以及加速器控制模块133。神经网络加速器131配置成执行神经网络加速计算。加速器动态随机存取存储器132配置成向神经网络加速器131提供输入数据,以及接收神经网络加速器131的输出数据。加速器控制模块133包括接口寄存器列表模块1331、任务控制模块以及状态监控模块1334。接口寄存器列表模块1331包括多个储存不同任务执行参数的寄存器。任务控制模块配置成依据所述接口寄存器列表模块1331执行任务的接收、任务的下发以及任务的中断。状态监控模块1334配置成基于神经网络加速器131的任务执行状态,向所述接口寄存器列表模块1331提供至少部分任务执行执行参数。此外,加速器控制模块133还可以包括参数缓存模块1338和复位控制模块1337。参数缓存模块1338是在每个任务加速计算过程中,由于每个任务中每层网络所需参数数据量大小不同,每个任务所需的参数是上位机初始化进入加速器DRAM(例如可以是双倍速率同步动态随机存储器)中的。由该模块的控制逻辑,使用双缓冲(double buffer),提前准备该模型中每层所需要的参数,启动DMA从加速器DRAM中获取,存放在参数缓存模块中的静态随机存取存储器(StaticRandom-Access Memory,SRAM)中,由此,可以将每层参数获取时间覆盖在前一层计算时间内。复位控制模块1337负责响应CPU发送来的复位指令,从接口寄存器列表获取,复位指令可以分为:1,仅加速器内核复位;2,加速器内核,数据通道,同时复位;3,加速器内核,数据通道,指令通道,同时复位。所提供的三种复位逻辑,可以面对不同的软件复位需求,用于解决远程调试,控制等问题。
本发明并非以此为限制,加速器控制模块133中模块的增加、减少、合并、拆分都在本发明的保护范围之内。所述神经网络加速器131以及所述加速器控制模块133位于加速器芯片的片内,所述加速器动态随机存取存储器132位于所述加速器芯片的片外。
传输接口120例如可以为PCIe接口。传输接口120可以包括指令通道121以及数据通道122。所述指令通道121供所述片外中央处理器111与所述加速器控制模块133进行通信,所述数据通道122供所述中央处理器动态随机存取存储器112与所述加速器动态随机存取存储器进行通信132。
由此,神经网络算法加速系统自带独立的动态随机存取存储器,即图中的标号132,神经网络加速器131不直接访问系统主控110的中央处理器动态随机存取存储器112,计算过程中数据读写只访问加速器动态随机存取存储器132,由此,不会出现和系统主控110的中央处理器的内存带宽访问冲突的问题。
下面参见图2,图2示出了根据本发明实施例的神经网络算法加速系统的示意图。进一步地,图2示出了加速器芯片内微架构示意图及其片外动态随机存取存储器地址分配。
接口寄存器列表模块1331可以包括四类寄存器,参与多任务管理功能,其分别为:任务描述符接收寄存器,任务完成标志寄存器,加速器任务接收缓冲区状态寄存器,加速器负载状态寄存器。接口寄存器列表模块1331内所包括的寄存器的数量和作用并非以此为限制。
其中,任务描述符接收寄存器负责接收CPU写入的任务描述符,CPU写入一次任务描述符接收寄存器即下发一个任务,该任务描述符接收寄存器的特点是CPU可读写。当任务描述符写入任务描述符接收寄存器,该任务描述符接收寄存器的触发位被CPU置为触发值(触发值例如可以设置为1)。任务接收模块1336监控该任务描述符接收寄存器的触发位。当任务接收模块1336发现任务描述符接收寄存器的触发位被CPU置为触发值时,任务接收模块1336立即自任务描述符接收寄存器取出任务描述符,同时把任务描述符接收寄存器中的触发位置为非触发值(例如可以设置为0),保证下次CPU再发送任务描述符时,任务描述符接收寄存器的触发位早已被硬件至非触发值,从而,CPU可以下发任务。换言之,CPU下发任务时,需检查任务描述符接收寄存器的触发位,若任务描述符接收寄存器的触发位为触发值,则无法下发任务,若任务描述符接收寄存器的触发位为非触发值,则可以下发任务。由此,通过该方式,加速器硬件接收当前任务描述符的时间和CPU准备下个任务描述符的时间并行化,节省了串行等待。
换言之,本发明的软硬件通过寄存器实现握手,并能够实现如下优势:
CPU向任务描述符接收寄存器写入任务描述符前,先读该任务描述符接收寄存器的触发位,若为非触发值则表示任务描述符接收寄存器可写,随即CPU向任务描述符接收寄存器写入任务描述符。随后CPU可立即进行其他工作,不需要等待该任务已被硬件接收。由此,通过CPU对任务描述符接收寄存器一次读和一次写(两次寄存器操作)即完成一个任务下发,时间周期约可控制在微秒以内,且和底层加速器运行状态不强相关,保证软件不被加速器阻塞。
底层加速器片上的任务接收模块1333,使用专有的逻辑电路,一旦有任务描述符写入任务描述符接收寄存器,则立即取出,同时把任务描述符接收寄存器的触发位至为非触发值。这样保证任务描述符接收寄存器的最高利用率,但又不需要把下发任务描述符之后CPU的释放工作强行绑定在触发位至0之后。使用这种寄存器软硬件均可读写的方式,把软硬件的握手交互解耦,但又确保寄了存器传递信息的正确性,提升了系统缓冲能力。
进一步地,以最快的响应方式释放任务描述符接收寄存器,让CPU可以通过寄存器列表模块的任务描述符接收寄存器得知,任务描述符已经被接收。
加速器任务接收缓冲区状态寄存器的功能在于实时反应当前控制模块内的待执行任务的数量。该加速器任务接收缓冲区状态寄存器对CPU为只读。在一些实施例中,加速器任务接收缓冲区状态寄存器的最大任务接收缓冲的数量为512个。512也可以根据系统性能要求,片上资源情况等特点做出设计调整,本发明并非以此为限制。
任务接收模块1333获取到当前任务描述符之后,将任务描述符写入任务下发模块1336中的加速器任务接收缓冲区内,同时发送新的待执行任务信息至状态监控模块1334,从而由状态监控模块1334实时更新加速器任务接收缓冲区状态寄存器(例如,使得加速器任务接收缓冲区状态寄存器所指示的当前控制模块内的待执行任务的数量加一)。
当任务下发模块1336加速器任务接收缓冲区内待执行任务不为空时,计算控制模块1335从任务下发模块1336中预取一个待执行任务描述符并进行解析。计算控制模块1335可以持续监控神经网络加速器131的计算状态,一旦神经网络加速器131完成当前任务,进入等待状态后,计算控制模块1335可以在下一个时钟周期,把预取的待执行任务描述符写入神经网络加速器131的参数配置区。此时的描述符是解析后任务描述符,可直接被神经网络加速器131使用。随后,计算控制模块1335可以继续预取新的任务描述符。
计算控制模块1335每次取出一个任务描述符,都需要更新任务下发模块1336的加速器任务接收缓冲区的任务信息。进一步地,任务下发模块1336的加速器任务接收缓冲区的任务信息还通过状态监控模块1334,实时更新加速器任务接收缓冲区状态寄存器(例如,使得加速器任务接收缓冲区状态寄存器所指示的当前控制模块内的待执行任务的数量减一)。
由此,在片内把神经网络加速器131读取解析任务描述符的时间和神经网络加速器131计算上一个任务的时间并行化,从而把描述符解析的时间覆盖在神经网络加速器131工作时间内,节省了整体时间开销。这种设计的方法,尤其适用于大批量任务处理,从而可以保证神经网络加速器131内的计算引擎,始终处于高效的连续工作状态,任务之间没有等待开销。
神经网络加速器131每一帧任务的待计算原始数据,由CPU提供的一进程(例如将在下文描述的第一进程)在每个任务描述符下发前,提前启动DMA(Direct Memory Access,直接存储器访问),从CPU DRAM112中搬移至加速器DRAM132中规划好的地址空间。如图2示出的addr0,addr1,直到addr X。可以对应任务帧0,任务帧1,直到任务帧n。每帧任务可以配置成不同的神经网络模型推理计算,则每帧任务被分配的加速器DRAM132地址空间大小可实时调整,动态可配。具体而言,本发明各实施例中,加速器DRAM132的空间大小理论上成为最大可支持任务缓冲区数量的限制条件,而一般DRAM数据存储能力都在GByte以上,每帧任务的图像数据在MByte数量级,所以发明对大批量数据任务有较强的计算能力,这也对应了本发明实施例的在任务下发模块1334中的任务描述符缓冲区最大支持512个任务队列加速的原因。
神经网络加速器131可以实时上报工作/空闲状态给状态监控模块1334,状态监控模块1334在一段单位时间内,统计神经网络加速器131负载占比,以每个单位时间的频率更新加速器负载状态寄存器。加速器负载状态寄存器可以被CPU的一进程(例如将在下文中描述的第三进程)周期性查询,以反馈给用于下发任务的进程,做任务下发参考,同时可以作为加速器硬件资源的参考。在一个多加速器的系统中,可以利用用于进行监控的监控进程的监控信息,实现加速器资源池的任务分配规划工作。图2中仅仅示出了一个神经网络加速器131的实施例,但本发明并非以此为限制,多个神经网络加速器131的实现也在本发明的保护范围之内。
神经网络加速器131可以向计算控制模块1335发送完成中断消息。完成中断消息是每帧任务完成的标志。计算控制模块1335接收到完成中断消息会立即将完成中断消息发送至任务接收模块1333,提示任务接受模块133把该任务的输出数据对应的起始地址,上报接口寄存器列表模块1331中的任务完成标示寄存器。具体而言,任务完成标示寄存器中的地址可以是灵活多变的,类根据上位机软件的需求进行上报。在一些具体实现中,上报的地址例如可以是该任务的参数起始地址、输入数据起始地址等,本发明并非以此为限制。
任务完成标示寄存器的个数,在本实施例中,有32个,连续放置在接口寄存器列表模块1331中。这表示本实施例中,任务完成输出缓冲区的缓冲能力为32个任务队列。CPU提供的一进程(例如将在下文中描述的第二进程)负责检查任务完成标示寄存器。在本实施例,该每次得到一个完成中断消息,则立即检查任务完成标示寄存器,确认当前返回任务的序列。随后,该进程启动DMA,取出当前中断消息对应的加速器DRAM132中的计算结果之后,该进程需要清理对应的任务完成标示寄存器。底层加速器计算控制模块实时检查任务完成标示寄存器,确认当前任务完成输出缓冲区的可用空间,决定是否进行下一帧任务的计算。具体而言,任务完成标示寄存器的缓冲能力并非以此为限制,可根据系统CPU的处理能力,修改加速器设计,经过实验配合,达到优化任务完成输出缓冲区的缓冲能力的目的。
任务接收模块1335配置任务完成标示寄存器之后,再把对应的中断行为,通过中断上报模块1332,发送至系统CPU。在实施例中,各消息的传输基于PCIe接口接口,所传输的中断消息的类型可以为MSIX消息类型,本发明并非以此为限制。
具体而言,本发明还提供基于上述结构的神经网络算法加速器的任务调度方法。该任务调度方法在片外中央处理器执行。该任务调度方法可以提供多个并行的进程。例如可以提供用于实现任务下发的第一进程、用于实现任务完成中断的第二进程、以及实现任务监控的第三进程。
CPU提供的第一进程首先可以从前端图像传感器或视频流解码单元得到待推理的任务帧特征图,以下简称为任务帧。
CPU提供的第一进程启动PCIe DMA,把若干任务帧发送至加速器DRAM。
CPU提供的第一进程通过PCIe指令通道,即通过基地址寄存器所映射出的加速器内部接口寄存器列表,按照加速器需要的任务描述符格式,向相应定义位置的寄存器,写入任务描述符。CPU提供的第一进程完成若干个任务描述符连续写入后,即返回到第一步,继续监控前端业务是否有新的任务帧。第一进程对新任务的接收操作,将不会被已有任务的计算完成中断影响。
CPU提供的第二进程实时运行,获取来自加速器的任务计算完成中断。神经网络加速器每次完成一个任务帧,都向CPU上报中断。当第二进程得到中断,启动PCIe DMA,从加速器DRAM中取出结算结果,并且做出结果计算处理。第二进程的处理中断频次取决于不同任务结果的CPU计算时长,而这期间可能存在多次加速器上报中断。因此,第二进程在使用中断为输入信号的同时,需要同时检查加速器接口寄存器列表的特定寄存器状态位,查看当前加速器任务完成缓冲区的标志。
在第二进程运行的同时,CPU提供的第三进程实时启动,第三进程负责检查加速器任务接收缓冲区的占比标志,对应相关的加速器接口寄存器列表的偏移地址,如果当前加速器任务接收缓冲区不满,则共享信息给第一进程,提示当前加速器可用。第三进程还可以访问加速器寄存器列表中关于加速器计算引擎在过去一个单位时间内的负载情况,该状态可以被第三进程转换成百分比或者其它可视化显示方式,从而进行实时显示,同时可以共享给第一进程,以供第一进程判断当前加速器是否已经达到最高运行效率。
图3至图5分别示出了根据本发明实施例的神经网络算法加速器的任务调度方法的三个进程的流程图。
第一进程(进程A_1至进程A_n)负责任务帧规划管理及下发。第一进程这种大类型进程中,可对不同种的神经网络模型,启动一一对应的进程,即图中的进程A_1到进程A_n,对应待推理的模型1到模型n。
首先,进程A_1可以执行步骤A11,同步第二进程(进程B)和第三进程(进程C)的反馈信息,以同步获得加速器输入输出缓冲区载荷信息,同步获得加速器工作负载信息。然后执行步骤A12,判断应用是否请求模型1进行推理。若步骤A12判断为否则回到步骤A11。若步骤A12判断为是,则执行步骤A13规划模型1任务帧加速器DRAM地址空间。然后执行步骤A14,读取任务描述符接收寄存器。步骤A15,判断任务描述符接收寄存器的触发位(标志位)是否为非触发值(0)。若步骤A15判断为否则返回步骤A14。若步骤A15判断为是,则执行步骤A16将任务描述符写入任务描述符接收寄存器。步骤A16执行完成后可以回到步骤A11。类似地,模型n的第一进程的实现如进程A_n的流程图示出。以此类推,各不同模型的第一进程的实现可以按图3的流程实现,本发明并非以此为限制。
由此,本实施例中,可以实现软件侧多模型多进程一一对应,并行乱序下发,依靠专门设计的地址返回机制,处理返回结果乱序问题。
第二进程用于处理中断。第二进程首先执行步骤B1,监控中断响应。然后执行步骤B2,判断是否收到完成中断消息。若步骤B2判断为否,则回到步骤B1继续监控。若步骤B2判断为是,则执行步骤B3,读取任务完成标示寄存器。然后执行步骤B4,启动PCIe DMA,并监控PCIe DMA是否完成输出数据的搬移。步骤B5,判断PCIe DMA是否完成输出数据的搬移。若步骤B5判断为否,则返回执行步骤B4。若步骤B5判断为是,则执行步骤B6,将任务的输出数据完成搬移的信息同步至第一进程。步骤B6之后可以回到步骤B1循环执行。
具体而言,第二进程负责任务完成中断响应。本实施例有个明显特征是,多个第一进程向同一个神经网络加速器发送任务描述符,经过CPU底层I/O(输入/输出),到达加速器输入缓冲区的队列中,各个进程发送来的任务描述符组成的队列顺序不可预估,无法提前预判。只有神经网络加速器完成之后,由加速器向CPU上报完成序列,配合任务完成标示寄存器中的关键地址标示,第二进程才可以确认返回的完成队列顺序。由此,本实施例利用任务完成标示寄存器中的关键地址标示,解决了返回队列中任务结果区分问题,进而才让第一进程可扩充至多个,和模型一一对应,实现了多模型任务下发的高并行度,配合加速器512个任务输入缓冲队列,极大地提升了加速器对上层应用请求的响应接收能力,使整个软硬件系统的任务输入能力极大提升。
第三进程用于进行神经网络加速器的任务执行状态的监控。第三进程首先执行步骤C1,监控加速器任务接收缓冲区状态寄存器以及加速器负载状态寄存器,并将状态信息同步至第一进程。然后执行步骤C2,判断加速器任务接收缓冲区状态寄存器中的待处理任务是否达到缓冲阈值。若步骤C2判断为否,则返回执行步骤C1,若步骤C2判断为是,则执行步骤C3生成告警信息,并发送至第一进程,以进行缓冲告警。
具体而言,第二进程每完成一个中断处理,向第一进程发送一次同步信息。第三进程需要实时持续向第一进程发送同步信息。每个第一进程启动任务发送前,需要更新至第二进程和第三进程发来的最新的同步信息。
以上仅仅是示意性地描述本发明提供的第一进程至第三进程的具体实现。本发明并非以此为限制,进程的增加、省略、并行、单进程运行都在本发明的保护范围之内。
进一步地,常见的加速器,如果是ASIC(定制化芯片)物理形态,内核主频高,且往往堆叠了上千个乘加单元,算力以TOPS(Tera Operations Per Second,TOPS标识处理器每秒钟可进行一万亿次(1012)操作)为单位增长。但是内核算力的增加,必须配合一套高效的调度系统才能发挥最大性能。异构计算常见框架,控制CPU如果只做简单的单线程调度,必然使加速器在某段时间内处于空闲期,则加速器性能无法达到最优。为了能使基于FPGA(Field-Programmable Gate Array,即现场可编程门阵列)/ASIC平台的加速器,在业务场景下,发挥出最大单位时间内有效算力。在本发明的实施例中:
在硬件侧,在神经网络加速器的片上,设计了任务管理模块及接口模块等,最大程度利用片上的微架构,对加速器计算的行为进行管理,同时负责和软件侧交互,从硬件侧的设计出发,支持多种高效的系统软件应用方式,使整体系统性能在不同场景下,达到资源和性能的平衡,达到最优可调。此外,在片内,还设计有加速器负载监控模块,负责监控加速器的工作和空闲状态比,并且更新上报。
在软件侧,主要针对上述自研的硬件加速器的特征,配合设计出多进程的软件架构,本软件架构可以有若干种配置方法,CPU核资源和系统性能均实现了优化可调。本发明利用多进程架构,把任务下发和中断处理作为不同进程处理,针对神经网络模型的特点,一个加速器可能运行不同模型,又把不同模型分为不同下发进程处理。此外,系统内还有一个进程负责读取加速器上报的负载监控信息,实时监控加速器的使用效率,可以反馈至任务发送进程,以达到实时调节加速器负载平衡的关键作用。由此,相当于有三个维度的多进程思路融合进行操作。
总体来说,相比于常见的单进程模式:发送任务,等待中断,处理中断,再发送任务的设计方法,本发明从加速器微架构入手,配合高效利用CPU多核资源的软件架构,让系统性性能继续提升。在系统实际实施中,本系统可以根据加速器硬件配置不同版本决定成本和性能。对于加速器,同等设计规模的乘加单元个数,同等芯片工艺制程的条件下,假设FPGA和ASIC都选择28nm工艺,FPGA形态的加速器相比于ASIC,主频相对较低,则算力相对较低,本系统框架下所要对应的CPU资源消耗就低。而ASIC形态的加速器主频高,算力较高,本系统框架下所需要对应的软件CPU资源消耗高。因此基于FPGA的系统架构可以选择低成本的CPU平台,而搭配ASIC的系统则可以作为高性能高成本的计算平台。
进一步地,本发明还可以实现如下技术效果:
每个加速器自带独立的片内存储+片外存储,不和控制CPU共享物理内存,不会和控制CPU的内存争抢带宽;控制CPU多核,软件架构启动多进程模式,任务下发和任务结果中断收集分进程处理;则中断解析不打断任务下发的进程;下发进程和待执行前向的模型一一对应,可保证每个进程的权重初始化仅做一次,每个任务初始化仅需规划特征图的内存地址;多个下发进程并行发送任务,任务乱序进入加速器缓冲队列,加速器串行执行任务;每个批次的多任务数量可以不固定,完成中断+完成地址标志任务的完成顺序;加速器挂在PCI总线上,作为EP(EP代表加速器所在的硬件设备是作为PCIe endpoint device,即终端设备,接入PCI总线,是工作模式的一种,通常作为从设备),可扩展至多个。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由所附的权利要求指出。
Claims (8)
1.一种神经网络算法加速系统,其特征在于,包括:
神经网络加速器,配置成执行神经网络加速计算;
加速器动态随机存取存储器,配置成向神经网络加速器提供输入数据,以及接收神经网络加速器的输出数据;
加速器控制模块,包括:
接口寄存器列表模块,包括多个储存不同任务执行参数的寄存器;
任务控制模块,配置成依据所述接口寄存器列表模块执行任务的接收、任务的下发以及任务的中断;
状态监控模块,配置成基于神经网络加速器的任务执行状态,向所述接口寄存器列表模块提供至少部分任务执行参数,
其中,所述神经网络加速器以及所述加速器控制模块位于加速器芯片的片内,所述加速器动态随机存取存储器位于所述加速器芯片的片外;
所述接口寄存器列表模块包括任务描述符接收寄存器,所述任务描述符接收寄存器对于片外中央处理器为可读写状态,所述任务控制模块包括任务接收模块,当所述任务描述符接收寄存器被片外中央处理器写入任务描述符时,所述任务描述符接收寄存器的触发位被从非触发值置为触发值;所述任务接收模块监控所述任务描述符接收寄存器的触发位为触发值时,则自所述任务描述符接收寄存器读取任务描述符,且将所述任务描述符接收寄存器的触发位置为非触发值,其中,所述任务描述符供所述神经网络加速器执行任务;
所述接口寄存器列表模块还包括加速器任务接收缓冲区状态寄存器,所述任务描述符接收寄存器对于片外中央处理器为只读状态,所述加速器任务接收缓冲区状态寄存器用以表示所述神经网络加速器当前的待执行任务数量,所述任务控制模块还包括任务下发模块,所述任务接收模块监控读取所述任务描述符后,将所述任务描述符写入所述任务下发模块中的加速器任务接收缓冲区内,并由所述状态监控模块更新所述加速器任务接收缓冲区状态寄存器。
2.如权利要求1所述的神经网络算法加速系统,其特征在于,所述任务控制模块还包括计算控制模块,
当所述任务下发模块中的加速器任务接收缓冲区内的待执行任务不为空,且所述计算控制模块的预读取待执行任务的任务描述符已写入所述神经网络加速器的参数配置区时,所述计算控制模块自所述任务下发模块中预读取一个待执行任务的任务描述符,并对所述任务描述符进行解析,由所述状态监控模块更新所述加速器任务接收缓冲区状态寄存器;
所述计算控制模块监控所述神经网络加速器处于空闲状态时,所述计算控制模块将经解析的任务描述符写入所述神经网络加速器的参数配置区。
3.如权利要求2所述的神经网络算法加速系统,其特征在于,所述接口寄存器列表模块还包括加速器负载状态寄存器,
所述神经网络加速器向所述状态监控模块实时上报工作状态或空闲状态,并由所述状态监控模块写入所述加速器负载状态寄存器。
4.如权利要求3所述的神经网络算法加速系统,其特征在于,所述接口寄存器列表模块还包括任务完成标示寄存器,所述任务控制模块还包括中断上报模块,
所述神经网络加速器执行完任务后,向所述计算控制模块发送中断消息;
所述计算控制模块将所述中断消息发送至任务接收模块;
所述任务接收模块将所述神经网络加速器执行任务的输出数据的起始地址上报至所述任务完成标示寄存器;
所述任务接收模块将所述中断消息发送至所述中断上报模块,以供所述中断上报模块发送至片外中央处理器。
5.一种神经网络算法加速器调度系统,其特征在于,包括:
如权利要求1至4任一项所述的神经网络算法加速系统;
片外中央处理器以及中央处理器动态随机存取存储器;
传输接口,包括指令通道以及数据通道,所述指令通道供所述片外中央处理器与所述加速器控制模块进行通信,所述数据通道供所述中央处理器动态随机存取存储器与所述加速器动态随机存取存储器进行通信。
6.一种神经网络算法加速器的任务调度方法,其特征在于,应用于如权利要求5所述的神经网络算法加速器调度系统,所述任务调度方法在片外中央处理器执行,所述任务调度方法包括:
提供第一进程,所述第一进程执行:
通过所述数据通道,以将待执行任务的任务帧发送至所述加速器动态随机存取存储器;
通过所述指令通道,向所述接口寄存器列表模块写入部分任务执行参数;
提供第二进程,所述第二进程执行:
获取来自所述神经网络加速器的终端消息;
通过所述数据通道,从所述加速器动态随机存取存储器读取所述神经网络加速器的输出数据;
提供第三进程,所述第三进程执行:
监控所述接口寄存器列表模块;
当所述神经网络加速器的任务接收缓冲区未满,则向所述第一进程发送第一指示信息,所述第一指示信息指示所述神经网络加速器可用;
向所述第一进程发送所述神经网络加速器的负载状态信息。
7.如权利要求6所述的神经网络算法加速器的任务调度方法,其特征在于,所述片外中央处理器于所述第一进程、所述第二进程以及所述第三进程中选择一个或多个进程执行。
8.如权利要求6所述的神经网络算法加速器的任务调度方法,其特征在于,所述第二进程和所述第三进程与所述第一进程同时执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110344439.6A CN112949847B (zh) | 2021-03-29 | 2021-03-29 | 神经网络算法加速系统、调度系统及调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110344439.6A CN112949847B (zh) | 2021-03-29 | 2021-03-29 | 神经网络算法加速系统、调度系统及调度方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112949847A CN112949847A (zh) | 2021-06-11 |
CN112949847B true CN112949847B (zh) | 2023-07-25 |
Family
ID=76231106
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110344439.6A Active CN112949847B (zh) | 2021-03-29 | 2021-03-29 | 神经网络算法加速系统、调度系统及调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112949847B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114510339B (zh) * | 2022-04-20 | 2022-07-29 | 苏州浪潮智能科技有限公司 | 一种计算任务调度方法、装置、电子设备及可读存储介质 |
CN117971317B (zh) * | 2024-03-28 | 2024-07-02 | 北京微核芯科技有限公司 | 中央处理器与加速器交互方法、装置及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108665059A (zh) * | 2018-05-22 | 2018-10-16 | 中国科学技术大学苏州研究院 | 基于现场可编程门阵列的卷积神经网络加速系统 |
CN110390384A (zh) * | 2019-06-25 | 2019-10-29 | 东南大学 | 一种可配置的通用卷积神经网络加速器 |
CN111832718A (zh) * | 2020-06-24 | 2020-10-27 | 上海西井信息科技有限公司 | 芯片架构 |
WO2020240113A1 (fr) * | 2019-05-28 | 2020-12-03 | Bull Sas | Procede d'implementation d'un accelerateur materiel d'un reseau de neurones |
CN112074846A (zh) * | 2018-05-04 | 2020-12-11 | 苹果公司 | 用于在神经网络处理器中分配任务的系统和方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2565770B (en) * | 2017-08-15 | 2019-09-18 | Advanced Risc Mach Ltd | Data processing systems |
-
2021
- 2021-03-29 CN CN202110344439.6A patent/CN112949847B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112074846A (zh) * | 2018-05-04 | 2020-12-11 | 苹果公司 | 用于在神经网络处理器中分配任务的系统和方法 |
CN108665059A (zh) * | 2018-05-22 | 2018-10-16 | 中国科学技术大学苏州研究院 | 基于现场可编程门阵列的卷积神经网络加速系统 |
WO2020240113A1 (fr) * | 2019-05-28 | 2020-12-03 | Bull Sas | Procede d'implementation d'un accelerateur materiel d'un reseau de neurones |
CN110390384A (zh) * | 2019-06-25 | 2019-10-29 | 东南大学 | 一种可配置的通用卷积神经网络加速器 |
CN111832718A (zh) * | 2020-06-24 | 2020-10-27 | 上海西井信息科技有限公司 | 芯片架构 |
Non-Patent Citations (2)
Title |
---|
Research on Constructional Neural Network Accelerator Based on FPGA;Liu Boyang;《2018 International Computers, Signals and Systems Conference (ICOMSSC)》;20191217;全文 * |
专用指令集在基于FPGA的神经网络加速器中的应用;胡航天等;《空间控制技术与应用》;20200615(第03期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112949847A (zh) | 2021-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10545789B2 (en) | Task scheduling for highly concurrent analytical and transaction workloads | |
US11789895B2 (en) | On-chip heterogeneous AI processor with distributed tasks queues allowing for parallel task execution | |
US20210073170A1 (en) | Configurable heterogeneous ai processor | |
Bateni et al. | Co-optimizing performance and memory footprint via integrated cpu/gpu memory management, an implementation on autonomous driving platform | |
CN112949847B (zh) | 神经网络算法加速系统、调度系统及调度方法 | |
CN111190735B (zh) | 一种基于Linux的片上CPU/GPU流水化计算方法及计算机系统 | |
US11847497B2 (en) | Methods and apparatus to enable out-of-order pipelined execution of static mapping of a workload | |
US7565659B2 (en) | Light weight context switching | |
CN116541227B (zh) | 故障诊断方法、装置、存储介质、电子装置及bmc芯片 | |
CN113051199A (zh) | 数据传输方法及装置 | |
EP3779778A1 (en) | Methods and apparatus to enable dynamic processing of a predefined workload | |
CN114637536A (zh) | 任务处理方法、计算协处理器、芯片及计算机设备 | |
US9286129B2 (en) | Termination of requests in a distributed coprocessor system | |
WO2017088456A1 (zh) | 多输入多输出处理器流水线数据同步装置及方法 | |
CN112114967B (zh) | 一种基于服务优先级的gpu资源预留方法 | |
CN110825502A (zh) | 神经网络处理器和用于神经网络处理器的任务调度方法 | |
CN101305353B (zh) | 集中式中断控制器 | |
US8677028B2 (en) | Interrupt-based command processing | |
US11941722B2 (en) | Kernel optimization and delayed execution | |
US20240233066A1 (en) | Kernel optimization and delayed execution | |
KR102684511B1 (ko) | 작업부하의 정적 매핑의 비순차적 파이프라이닝된 실행을 가능하게 하기 위한 방법들 및 장치 | |
US11347544B1 (en) | Scheduling work items based on declarative constraints | |
WO2023231937A1 (zh) | 调度装置、方法及相关设备 | |
CN111026513B (zh) | 任务分派装置、任务调度器以及任务处理方法 | |
US20240160364A1 (en) | Allocation of resources when processing at memory level through memory request scheduling |
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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: Room 503-3, 398 Jiangsu Road, Changning District, Shanghai 200050 Applicant after: Shanghai Xijing Technology Co.,Ltd. Address before: Room 503-3, 398 Jiangsu Road, Changning District, Shanghai 200050 Applicant before: SHANGHAI WESTWELL INFORMATION AND TECHNOLOGY Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |