CN111190741A - 基于深度学习节点计算的调度方法、设备及存储介质 - Google Patents
基于深度学习节点计算的调度方法、设备及存储介质 Download PDFInfo
- Publication number
- CN111190741A CN111190741A CN202010004459.4A CN202010004459A CN111190741A CN 111190741 A CN111190741 A CN 111190741A CN 202010004459 A CN202010004459 A CN 202010004459A CN 111190741 A CN111190741 A CN 111190741A
- Authority
- CN
- China
- Prior art keywords
- node
- computing
- hardware
- software
- calculation
- 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
Images
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/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
-
- 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/5044—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 hardware capabilities
-
- 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/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- 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/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
-
- 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)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Life Sciences & Earth Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Power Sources (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Supply And Distribution Of Alternating Current (AREA)
Abstract
本发明实施例公开了一种基于深度学习节点计算的调度方法、设备及存储介质。该调度方法包括:获取预设神经网络计算图的待计算节点;判断所述待计算节点的节点类型,所述节点类型包括硬件计算节点和软件计算节点;在所述节点类型为硬件计算节点的情况下,调度所述硬件计算节点至第一队列,并判断所述硬件计算节点对应的硬件算力模块是否被占用;在所述硬件算力模块没有被占用的情况下,将所述硬件计算节点输入至所述硬件算力模块进行计算。本发明实施例实现了图推理过程异步化,充分利用软件和硬件的资源。
Description
技术领域
本发明实施例涉及深度学习技术,例如一种基于深度学习节点计算的调度方法、设备及存储介质。
背景技术
深度学习是机器学习的分支,是一种以人工神经网络为架构,对数据进行表征学习的算法。深度学习网络通常由算法训练得来。多数情况下,算法开发人员倾向于使用已有的公开深度学习框架进行模型训练,而大部分公开深度学习框架是针对于中央处理器(Central Processing Unit,CPU)/图像处理器(Graphics Processing Unit,GPU)这类计算设备设计的。CPU/GPU采用传统的指令集架构,架构效率较低,灵活性较高。
但随着深度学习相关技术的发展,现在深度学习相关技术中对算力的要求越来越高。传统的指令集架构低效率的缺陷已经不能满足应用场景的需求。对比而言,数据流架构效率更高,从技术路线来看更加适合深度学习技术的发展趋势。然而数据流架构与指令集架构的数据表达存在较大差异:数据流架构的算子颗粒度要远大于指令集架构;数据流架构算子计算前要预先根据数据依赖,确定计算模块的排列顺序。这种差异导致了数据流芯片只适用于深度学习算子,一些定制程度高的地方依旧需要通用计算设备进行辅助处理。软件节点的存在导致了以下情况:软件节点无硬件加速效果,运行较慢;在单线程的情况下运行图计算,软件节点的运行会导致硬件空闲,不利于加速。
发明内容
本发明实施例提供一种基于深度学习节点计算的调度方法、设备及存储介质,以实现图推理过程异步化,充分利用软件和硬件的资源。
本发明实施例提供了一种基于深度学习节点计算的调度方法,该基于深度学习节点计算的调度方法包括:获取预设神经网络计算图的待计算节点;判断所述待计算节点的节点类型,所述节点类型包括硬件计算节点和软件计算节点;在所述节点类型为硬件计算节点的情况下,调度所述硬件计算节点至第一队列,并判断所述硬件计算节点对应的硬件算力模块是否被占用;在所述硬件算力模块没有被占用的情况下,将所述硬件计算节点输入至所述硬件算力模块进行计算。
一方面,本发明实施例还提供了一种基于深度学习节点计算的调度设备,该设备包括:至少一个处理器;存储装置,用于存储至少一个程序,所述至少一个程序被所述至少一个处理器执行,使得所述至少一个处理器实现如本发明任一实施例提供的调度方法。
另一方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时,实现如本发明任一实施例提供的调度方法。
本发明实施例通过获取预设神经网络计算图的待计算节点;判断所述待计算节点的节点类型,所述节点类型包括硬件计算节点和软件计算节点;在所述节点类型为硬件计算节点的情况下,调度所述硬件计算节点至第一队列,并判断对应的硬件算力模块是否被占用;在所述硬件算力模块没有被占用的情况下,将所述硬件计算节点输入至所述硬件算力模块进行计算,避免了软件节点无硬件加速效果,运行时会导致硬件空闲,不利于加速的情况,实现了神经网络计算图计算过程异步化,充分利用软件和硬件的资源的效果。
附图说明
图1是本发明实施例一提供的一种基于深度学习节点计算的调度方法的流程示意图;
图2是本发明实施例二提供的一种基于深度学习节点计算的调度方法的流程示意图;
图3为本发明实施例三提供的一种基于深度学习节点计算的调度设备的结构示意图。
具体实施方式
在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各步骤描述成顺序的处理,但是其中的许多步骤可以被并行地、并发地或者同时实施。此外,各步骤的顺序可以被重新安排。在其操作完成的情况下处理可以被终止,但是还可以具有未包括在附图中的附加步骤。处理可以对应于方法、函数、规程、子例程、子程序等等。
实施例一
如图1所示,本发明一实施例提供了一种基于深度学习节点计算的调度方法,该基于深度学习节点计算的调度方法包括步骤S110至步骤S140。
在步骤S110中,获取预设神经网络计算图的待计算节点。
本实施例中,神经网络是由大量的、简单的处理单元(也可称为神经元)广泛地互相连接而形成的复杂网络系统,它反映了人脑功能的许多基本特征,是一个高度复杂的非线性动力学习系统。在神经网络实际计算过程的计算图中,将最简单的计算单元称为计算节点,每个未被计算的计算节点为待计算节点。获取预设神经网络计算图的待计算节点,即将需要计算的神经网络计算图中的待计算节点插入到设备中的计算队列中。在一实施例中,该计算队列为异步队列,即在该计算队列中计算某个待计算节点时,不需要等待其他进程返回指令信息而直接进行计算,当返回指令信息时按照该指令信息执行计算。
在步骤S120中,判断所述待计算节点的节点类型,所述节点类型包括硬件计算节点和软件计算节点。
本实施例中,硬件计算节点为硬件算力模块可以执行计算的计算节点,软件计算节点为硬件算力模块无法执行计算的计算节点。其中,硬件算力模块可以包括多个人工智能(Artificial Intelligence,AI)算力芯片,该AI算力芯片采用数据流架构,只能针对特定的计算节点进行计算,但其计算效率很高。
在步骤S130中,在所述节点类型为硬件计算节点的情况下,调度所述硬件计算节点至第一队列,并判断所述硬件计算节点对应的硬件算力模块是否被占用。
本实施例中,第一队列为硬件节点队列,进入第一队列的待计算都为硬件计算节点。硬件算力模块中的每个AI算力芯片都可以被设计为针对计算不同的硬件计算节点,在待计算节点为硬件计算节点的情况下,还需要判断该硬件计算节点对应的AI算力芯片是否被占用。
在步骤S140中,在所述硬件算力模块没有被占用的情况下,将所述硬件计算节点输入至所述硬件算力模块进行计算。
本实施例中,在待计算节点为硬件计算节点的情况下,该硬件计算节点对应的AI算力芯片也没有被占用时,将该硬件计算节点输入至硬件算力模块中与其对应的AI算力芯片中进行计算。
本发明实施例通过获取预设神经网络计算图的待计算节点;判断所述待计算节点的节点类型,所述节点类型包括硬件计算节点和软件计算节点;在所述节点类型为硬件计算节点的情况下,调度所述硬件计算节点至第一队列,并判断对应的硬件算力模块是否被占用;在所述硬件算力模块没有被占用的情况下,将所述硬件计算节点输入至所述硬件算力模块进行计算,避免了软件节点无硬件加速效果,运行时会导致硬件空闲,不利于加速的情况,实现了神经网络计算图计算过程异步化,充分利用软件和硬件的资源的效果。
实施例二
如图2所示,本发明实施例二在本发明实施例一的基础上作了进一步优化,本发明实施例二提供了一种基于深度学习节点计算的调度方法,该基于深度学习节点计算的调度方法包括步骤S100至步骤S422。
在步骤S100中,获取预设神经网络计算图的待计算节点。
本实施例中,神经网络是由大量的、简单的处理单元(也可称为神经元)广泛地互相连接而形成的复杂网络系统,它反映了人脑功能的许多基本特征,是一个高度复杂的非线性动力学习系统。在神经网络实际计算过程的计算图中,将最简单的计算单元称为计算节点,每个未被计算的计算节点为待计算节点。获取预设神经网络计算图的待计算节点,即将需要计算的神经网络计算图中的待计算节点插入到设备中的计算队列中。在一实施例中,该计算队列为异步队列,即在该计算队列中计算某个待计算节点时,不需要等待其他进程返回指令信息而直接进行计算,当返回指令信息时按照该指令信息执行计算。
在步骤S200中,判断预设线程数是否大于零,在所述预设线程数大于零的情况下,判断所述待计算节点的节点类型,所述节点类型包括硬件计算节点和软件计算节点。
本实施例中,判断预设线程数是否大于零的操作由CPU/GPU执行,线程数指进行计算调度的最小单位,一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并行多个线程,每条线程并行执行不同的任务,即一个线程数可以执行一次计算节点的调度。相关技术中的CPU/GPU都为多线程的处理器,以同时执行多个调度提高计算效率。预设线程数为CPU/GPU中空闲的线程数,预设线程数是根据调度情况实时变化的,当一个线程完成一次调度后,该线程为空闲的线程,可以执行下一次调度操作。在所述预设线程数大于零的情况下,代表CPU/GPU可以执行待计算节点的调度,从而判断待计算节点的节点类型。预设线程数为几就可以执行几个待计算节点的调度。硬件计算节点为硬件算力模块可以执行计算的计算节点,软件计算节点为硬件算力模块无法执行计算的计算节点。其中,硬件算力模块可以包括多个AI算力芯片,该AI算力芯片采用数据流架构,只能针对特定的计算节点进行计算,但其计算效率很高。
在步骤S210中,在所述预设线程数等于零的情况下,将所述待计算节点用于等待状态直到所述待预设线程数大于零。
本实施例中,在所述预设线程数等于零的情况下,代表CPU/GPU无法执行待计算节点的调度,该待计算节点变更为等待状态,直到预设线程数大于零时,执行判断待计算节点的节点类型。
在步骤S300中,在所述节点类型为硬件计算节点的情况下,调度所述硬件计算节点至第一队列,并判断所述硬件计算节点对应的硬件算力模块是否被占用。
本实施例中,第一队列为硬件节点队列,进入第一队列的待计算都为硬件计算节点。硬件算力模块中的每个AI算力芯片都可以被设计为针对计算不同的硬件计算节点,在待计算节点为硬件计算节点的情况下,还需要判断该硬件计算节点对应的AI算力芯片是否被占用。
在步骤S310中,在所述硬件算力模块没有被占用的情况下,将所述硬件计算节点输入至所述硬件算力模块进行计算。
本实施例中,在待计算节点为硬件计算节点的情况下,该硬件计算节点对应的AI算力芯片也没有被占用时,将该硬件计算节点输入至硬件算力模块中与其对应的AI算力芯片中进行计算。
在步骤S311中,在所述硬件算力模块被占用的情况下,将所述硬件计算节点输入至软件算力模块进行计算。
本实施例中,在待计算节点为硬件计算节点的情况下,但是该硬件计算节点对应的AI算力芯片被占用时,将该硬件计算节点输入至软件算力模块进行计算。其中,软件算力模块为CPU/GPU,CPU/GPU采用指令集架构,可以执行所有类型计算节点的计算,但计算效率较低。在硬件计算节点无法被硬件算力模块计算的情况下,调度硬件计算节点至软件算力模块计算,保证了存在硬件计算节点时硬件算力模块不会存在空闲状态;在存在硬计算件节点,且硬件算力模块也被占用的情况下,才将硬件计算节点调度至软件算力模块,保证了硬件计算节点不会在硬件算力模块被占用的情况下,存在堵塞排队的状态;而只有在硬件算力模块和软件算力模块都被占用的情况下,硬件计算节点才会存在堵塞排队的状态。
在步骤S320中,判断完成计算的硬件计算节点是否存在后续计算节点。
本实施例中,每个计算节点存在数据依赖关系,当一个计算节点的计算完成后,其后续计算节点才可以被计算。
在步骤S321中,在存在后续计算节点的情况下,优先调度后续计算节点后从步骤S200重新开始进行后续计算节点的计算。
在步骤S322中,在不存在后续计算节点的情况下,释放完成计算的硬件计算节点当前占用的线程后,从步骤S210重新开始进行。
本实施例中,当一个硬件计算节点的计算完成后,在该硬件计算节点还存在后续计算节点的情况下,优先调度该后续计算节点继续计算,即调度该硬件计算节点的线程继续调度该计算节点的后续计算节点,重复执行步骤S200,但在执行步骤S200的过程中不需要判断预设线程数是否大于零,直接判断是否为硬件计算节点。如此循环直到不存在后续计算节点的情况下,释放完成计算的硬件计算节点当前占用的线程,从步骤S210重新开始执行,通知处于等待状态的其他待计算节点可以通过该线程执行计算,执行判断待计算节点的节点类型。
在步骤S400中,在所述节点类型为软件计算节点的情况下,调度所述软件计算节点至第二队列,并判断是否存在未被占用的软件算力模块。
本实施例中,第二队列为软件节点队列,进入第二队列的待计算都为软件计算节点。其中,软件计算节点只能通过CPU/GPU进行计算。
在步骤S410中,在存在未被占用的软件算力模块的情况下,将所述软件计算节点输入至所述软件算力模块进行计算。
在步骤S411中,在不存在未被占用的软件算力模块的情况下,将所述软件计算节点用于等待状态直到存在未被占用的软件算力模块。
在步骤S420中,判断完成计算的软件计算节点是否存在后续计算节点。
在步骤S421中,在存在后续计算节点的情况下,优先调度后续计算节点后从步骤S200重新开始进行后续计算节点的计算。
在步骤S422中,在不存在后续计算节点的情况下,释放完成计算的软件计算节点当前占用的线程后,从步骤S210重新开始执行。
本实施例中,当一个软件计算节点的计算完成后,在该软件计算节点还存在后续计算节点的情况下,优先调度该后续计算节点继续计算,即调度该软件计算节点的线程继续调度该计算节点的后续计算节点,重复执行步骤S200,但在执行步骤S200的过程中不需要判断预设线程数是否大于零,直接判断是否为软件计算节点。如此循环直到不存在后续计算节点的情况下,释放完成计算的软件计算节点当前占用的线程后,从步骤S210重新开始执行,通知处于等待状态的其他待计算节点可以通过该线程执行计算,执行判断待计算节点的节点类型。
实施例三
图3为本发明实施例三提供的一种基于深度学习节点计算的调度设备的结构示意图。图3示出了适于用来实现本发明实施方式的示例性基于深度学习节点计算的调度设备12的框图。图3显示的基于深度学习节点计算的调度设备12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图3所示,基于深度学习节点计算的调度设备12以通用计算设备的形式表现。基于深度学习节点计算的调度设备12的组件可以包括但不限于:至少一个处理器或者处理单元16,存储装置28,连接不同系统组件(包括存储装置28和处理单元16)的总线18。
总线18表示几类总线结构中的至少一种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(Industry Standard Architecture,ISA)总线,微通道体系结构(Micro Channel Architecture,MAC)总线,增强型ISA总线、视频电子标准协会(Video Electronics Standards Association,VESA)局域总线以及外围组件互连(Peripheral Component Interconnect,PCI)总线。
基于深度学习节点计算的调度设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被基于深度学习节点计算的调度设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
存储装置28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(Random Access Memory,RAM)30和/或高速缓存存储器32。基于深度学习节点计算的调度设备12可以包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以提供用于读写不可移动的、非易失性磁介质的硬盘驱动器(图3未显示)。尽管图3中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如只读光盘(Compact Disc-Read Only Memory,CD-ROM),数字视盘(Digital Video Disc-Read Only Memory,DVD-ROM)或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过至少一个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括——但不限于——操作系统、至少一个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
基于深度学习节点计算的调度设备12也可以与至少一个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与至少一个使得用户能与该基于深度学习节点计算的调度设备12交互的设备通信,和/或与使得该基于深度学习节点计算的调度设备12能与至少一个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,基于深度学习节点计算的调度设备12还可以通过网络适配器20与至少一个网络(例如局域网(Local Area Network,LAN),广域网(WideArea Network,WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与基于深度学习节点计算的调度设备12的其它模块通信。应当明白,尽管图3中未示出,可以结合基于深度学习节点计算的调度设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、磁盘阵列(Redundant Arraysof Independent Disks,RAID)系统、磁带驱动器以及数据备份存储系统等。
处理单元16通过运行存储在存储装置28中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的调度方法:获取预设神经网络计算图的待计算节点;判断预设线程数是否大于零,在所述预设线程数大于零的情况下,判断所述待计算节点的节点类型,所述节点类型包括硬件计算节点和软件计算节点;在所述述预设线程数等于零的情况下,将所述待计算节点用于等待状态直到所述预设线程数大于零;在所述节点类型为硬件计算节点的情况下,调度所述硬件计算节点至第一队列,并判断所述硬件计算节点对应的硬件算力模块是否被占用;在所述硬件算力模块没有被占用的情况下,将所述硬件计算节点输入至所述硬件算力模块进行计算;在所述硬件算力模块被占用的情况下,将所述硬件计算节点输入至软件算力模块进行计算;判断完成计算的硬件计算节点是否存在后续计算节点;在存在后续计算节点的情况下,优先调度后续计算节点后从步骤“判断预设线程数是否大于零,在所述预设线程数大于零的情况下,判断所述待计算节点的节点类型,所述节点类型包括硬件计算节点和软件计算节点”重新开始进行后续计算节点的计算;在不存在后续计算节点的情况下,释放完成计算后的硬件计算节点当前占用的线程后,从步骤“在所述述预设线程数等于零的情况下,将所述待计算节点用于等待状态直到所述预设线程数大于零”重新开始进行;在所述节点类型为软件计算节点的情况下,调度所述软件计算节点至第二队列,并判断是否存在未被占用的软件算力模块;在存在未被占用的软件算力模块的情况下,将所述软件计算节点输入至所述软件算力模块进行计算;在不存在未被占用的软件算力模块的情况下,将所述软件计算节点用于等待状态直到存在未被占用的软件算力模块;判断完成计算的软件计算节点是否存在后续计算节点;在存在后续计算节点的情况下,优先调度后续计算节点后从步骤“判断预设线程数是否大于零,在所述预设线程数大于零的情况下,判断所述待计算节点的节点类型,所述节点类型包括硬件计算节点和软件计算节点”重新开始进行后续计算节点的计算;在不存在后续计算节点的情况下,释放完成计算的软件计算节点当前占用的线程后,从步骤“在所述述预设线程数等于零的情况下,将所述待计算节点用于等待状态直到所述预设线程数大于零”重新开始进行。
本发明一实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明所有发明实施例提供的调度方法:获取预设神经网络计算图的待计算节点;判断预设线程数是否大于零,在所述预设线程数大于零的情况下,判断所述待计算节点的节点类型,所述节点类型包括硬件计算节点和软件计算节点;在所述述预设线程数等于零的情况下,将所述待计算节点用于等待状态直到所述预设线程数大于零;在所述节点类型为硬件计算节点的情况下,调度所述硬件计算节点至第一队列,并判断所述硬件计算节点对应的硬件算力模块是否被占用;在所述硬件算力模块没有被占用的情况下,将所述硬件计算节点输入至所述硬件算力模块进行计算;在所述硬件算力模块被占用的情况下,将所述硬件计算节点输入至软件算力模块进行计算;判断完成计算的硬件计算节点是否存在后续计算节点;在存在后续计算节点的情况下,优先调度后续计算节点后从步骤“判断预设线程数是否大于零,在所述预设线程数大于零的情况下,判断所述待计算节点的节点类型,所述节点类型包括硬件计算节点和软件计算节点”重新开始进行后续计算节点的计算;在不存在后续计算节点的情况下,释放完成计算后的硬件计算节点当前占用的线程后,从步骤“在所述述预设线程数等于零的情况下,将所述待计算节点用于等待状态直到所述预设线程数大于零”重新开始进行;在所述节点类型为软件计算节点的情况下,调度所述软件计算节点至第二队列,并判断是否存在未被占用的软件算力模块;在存在未被占用的软件算力模块的情况下,将所述软件计算节点输入至所述软件算力模块进行计算;在不存在未被占用的软件算力模块的情况下,将所述软件计算节点用于等待状态直到存在未被占用的软件算力模块;判断完成计算的软件计算节点是否存在后续计算节点;在存在后续计算节点的情况下,优先调度后续计算节点后从步骤“判断预设线程数是否大于零,在所述预设线程数大于零的情况下,判断所述待计算节点的节点类型,所述节点类型包括硬件计算节点和软件计算节点”重新开始进行后续计算节点的计算;在不存在后续计算节点的情况下,释放完成计算后的软件计算节点当前占用的线程后,从步骤“在所述述预设线程数等于零的情况下,将所述待计算节点用于等待状态直到所述预设线程数大于零”重新开始进行。
本发明实施例的计算机存储介质,可以采用至少一个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有至少一个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于无线、电线、光缆、射频(Radio Frequency,RF)等等,或者上述的任意合适的组合。
可以以至少一种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (10)
1.一种基于深度学习节点计算的调度方法,包括:
获取预设神经网络计算图的待计算节点;
判断所述待计算节点的节点类型,所述节点类型包括硬件计算节点和软件计算节点;
在所述节点类型为硬件计算节点的情况下,调度所述硬件计算节点至第一队列,并判断所述硬件计算节点对应的硬件算力模块是否被占用;
在所述硬件算力模块没有被占用的情况下,将所述硬件计算节点输入至所述硬件算力模块进行计算。
2.根据权利要求1所述的调度方法,还包括:
在所述硬件算力模块被占用的情况下,将所述硬件计算节点输入至软件算力模块进行计算。
3.根据权利要求1所述的调度方法,还包括:
在所述节点类型为软件计算节点的情况下,调度所述软件计算节点至第二队列,并判断是否存在未被占用的软件算力模块;
在存在未被占用的软件算力模块的情况下,将所述软件计算节点输入至所述软件算力模块进行计算。
4.根据权利要求3所述的调度方法,还包括:
在不存在未被占用的软件算力模块的情况下,将所述软件计算节点用于等待状态直到存在未被占用的软件算力模块。
5.根据权利要求1所述的调度方法,其中,所述在所述硬件算力模块没有被占用的情况下,将所述硬件计算节点输入至所述硬件算力模块进行计算之后,包括:
判断完成计算的硬件计算节点是否存在后续计算节点;
在存在后续计算节点的情况下,优先调度后续计算节点继续计算,在不存在后续计算节点的情况下,释放完成计算的硬件计算节点当前占用的线程。
6.根据权利要求3所述的调度方法,其中,所述在存在未被占用的软件算力模块的情况下,将所述软件计算节点输入至所述软件算力模块进行计算之后,包括:
判断完成计算的软件计算节点是否存在后续计算节点;
在存在后续计算节点的情况下,优先调度后续计算节点继续计算,在不存在后续计算节点的情况下,释放所述完成计算的软件计算节点当前占用的线程。
7.根据权利要求1所述的调度方法,其中,所述判断所述待计算节点的节点类型,所述节点类型包括硬件计算节点和软件计算节点包括:
判断预设线程数是否大于零,在所述预设线程数大于零的情况下,判断所述待计算节点的节点类型,所述节点类型包括硬件计算节点和软件计算节点。
8.根据权利要求7所述的调度方法,还包括:
在所述预设线程数等于零的情况下,将所述待计算节点用于等待状态直到所述预设线程数大于零。
9.一种基于深度学习节点计算的调度设备,包括:
至少一个处理器;
存储装置,用于存储至少一个程序,所述至少一个程序被所述至少一个处理器执行,使得所述至少一个处理器实现如权利要求1-8中任一项所述的调度方法。
10.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现如权利要求1-8中任一项所述的调度方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010004459.4A CN111190741B (zh) | 2020-01-03 | 2020-01-03 | 基于深度学习节点计算的调度方法、设备及存储介质 |
PCT/CN2020/142198 WO2021136512A1 (zh) | 2020-01-03 | 2020-12-31 | 基于深度学习节点计算的调度方法、设备及存储介质 |
US17/790,667 US20230034881A1 (en) | 2020-01-03 | 2020-12-31 | Scheduling method and device based on deep learning node computation, and storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010004459.4A CN111190741B (zh) | 2020-01-03 | 2020-01-03 | 基于深度学习节点计算的调度方法、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111190741A true CN111190741A (zh) | 2020-05-22 |
CN111190741B CN111190741B (zh) | 2023-05-12 |
Family
ID=70708030
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010004459.4A Active CN111190741B (zh) | 2020-01-03 | 2020-01-03 | 基于深度学习节点计算的调度方法、设备及存储介质 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230034881A1 (zh) |
CN (1) | CN111190741B (zh) |
WO (1) | WO2021136512A1 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111752709A (zh) * | 2020-06-22 | 2020-10-09 | 深圳鲲云信息科技有限公司 | Ai计算配置方法、装置、设备及存储介质 |
CN111869303A (zh) * | 2020-06-03 | 2020-10-30 | 北京小米移动软件有限公司 | 一种资源调度的方法、装置、通信设备及存储介质 |
WO2021136512A1 (zh) * | 2020-01-03 | 2021-07-08 | 深圳鲲云信息科技有限公司 | 基于深度学习节点计算的调度方法、设备及存储介质 |
CN114091688A (zh) * | 2021-11-25 | 2022-02-25 | 北京九章云极科技有限公司 | 一种计算资源获取方法、装置、电子设备和存储介质 |
CN114429051A (zh) * | 2022-04-01 | 2022-05-03 | 深圳鲲云信息科技有限公司 | 数据流芯片的建模方法、装置、设备及介质 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210232969A1 (en) * | 2018-12-24 | 2021-07-29 | Intel Corporation | Methods and apparatus to process a machine learning model in a multi-process web browser environment |
CN117215802B (zh) * | 2023-11-07 | 2024-02-09 | 四川并济科技有限公司 | 一种针对虚拟化网络功能的gpu管理及调用方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180302800A1 (en) * | 2017-04-17 | 2018-10-18 | DeepSig Inc. | Placement and scheduling of radio signal processing dataflow operations |
CN109460827A (zh) * | 2018-11-01 | 2019-03-12 | 郑州云海信息技术有限公司 | 一种深度学习环境的搭建与优化方法和系统 |
US20190087383A1 (en) * | 2017-09-19 | 2019-03-21 | Beijing Baidu Netcom Science And Technology Co., Ltd. | Intelligent big data system, and method and apparatus for providing intelligent big data service |
CN110535631A (zh) * | 2018-05-25 | 2019-12-03 | 上海诚频信息科技合伙企业(有限合伙) | 边缘计算节点数据传输的方法、系统、设备及存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115061810A (zh) * | 2015-10-28 | 2022-09-16 | 谷歌有限责任公司 | 处理计算图 |
CN108604193A (zh) * | 2016-10-27 | 2018-09-28 | 华为技术有限公司 | 异构系统、计算任务分配方法及装置 |
CN109885388A (zh) * | 2019-01-31 | 2019-06-14 | 上海赜睿信息科技有限公司 | 一种适用于异构系统的数据处理方法和装置 |
US11790250B2 (en) * | 2019-05-09 | 2023-10-17 | Intel Corporation | Using computational cost and instantaneous load analysis for intelligent deployment of neural networks on multiple hardware executors |
CN111190741B (zh) * | 2020-01-03 | 2023-05-12 | 深圳鲲云信息科技有限公司 | 基于深度学习节点计算的调度方法、设备及存储介质 |
-
2020
- 2020-01-03 CN CN202010004459.4A patent/CN111190741B/zh active Active
- 2020-12-31 US US17/790,667 patent/US20230034881A1/en active Pending
- 2020-12-31 WO PCT/CN2020/142198 patent/WO2021136512A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180302800A1 (en) * | 2017-04-17 | 2018-10-18 | DeepSig Inc. | Placement and scheduling of radio signal processing dataflow operations |
US20190087383A1 (en) * | 2017-09-19 | 2019-03-21 | Beijing Baidu Netcom Science And Technology Co., Ltd. | Intelligent big data system, and method and apparatus for providing intelligent big data service |
CN110535631A (zh) * | 2018-05-25 | 2019-12-03 | 上海诚频信息科技合伙企业(有限合伙) | 边缘计算节点数据传输的方法、系统、设备及存储介质 |
CN109460827A (zh) * | 2018-11-01 | 2019-03-12 | 郑州云海信息技术有限公司 | 一种深度学习环境的搭建与优化方法和系统 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021136512A1 (zh) * | 2020-01-03 | 2021-07-08 | 深圳鲲云信息科技有限公司 | 基于深度学习节点计算的调度方法、设备及存储介质 |
CN111869303A (zh) * | 2020-06-03 | 2020-10-30 | 北京小米移动软件有限公司 | 一种资源调度的方法、装置、通信设备及存储介质 |
CN111869303B (zh) * | 2020-06-03 | 2023-10-17 | 北京小米移动软件有限公司 | 一种资源调度的方法、装置、通信设备及存储介质 |
CN111752709A (zh) * | 2020-06-22 | 2020-10-09 | 深圳鲲云信息科技有限公司 | Ai计算配置方法、装置、设备及存储介质 |
CN111752709B (zh) * | 2020-06-22 | 2024-04-30 | 深圳鲲云信息科技有限公司 | Ai计算配置方法、装置、设备及存储介质 |
CN114091688A (zh) * | 2021-11-25 | 2022-02-25 | 北京九章云极科技有限公司 | 一种计算资源获取方法、装置、电子设备和存储介质 |
CN114429051A (zh) * | 2022-04-01 | 2022-05-03 | 深圳鲲云信息科技有限公司 | 数据流芯片的建模方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
US20230034881A1 (en) | 2023-02-02 |
CN111190741B (zh) | 2023-05-12 |
WO2021136512A1 (zh) | 2021-07-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111190741B (zh) | 基于深度学习节点计算的调度方法、设备及存储介质 | |
CN107885762B (zh) | 智能大数据系统、提供智能大数据服务的方法和设备 | |
US10949328B2 (en) | Data flow graph computation using exceptions | |
US9396028B2 (en) | Scheduling workloads and making provision decisions of computer resources in a computing environment | |
CN111310936A (zh) | 机器学习训练的构建方法、平台、装置、设备及存储介质 | |
KR102334511B1 (ko) | 작업 의존성 관리 | |
CN111145076B (zh) | 数据并行化处理方法、系统、设备及存储介质 | |
WO2023082575A1 (zh) | 一种面向神经网络模型计算的图执行流水并行方法和装置 | |
CN110825440A (zh) | 指令执行方法和装置 | |
CN112860396B (zh) | 一种基于分布式深度学习的gpu调度方法及系统 | |
CN114217966A (zh) | 基于资源调整的深度学习模型动态批处理调度方法和系统 | |
WO2020005412A2 (en) | Method and system for opportunistic load balancing in neural networks using metadata | |
CN114327894A (zh) | 资源分配方法、装置、电子设备及存储介质 | |
Li et al. | Efficient algorithms for task mapping on heterogeneous CPU/GPU platforms for fast completion time | |
CN110825514A (zh) | 人工智能芯片以及用于人工智能芯片的指令执行方法 | |
US10564948B2 (en) | Method and device for processing an irregular application | |
CN118313458A (zh) | 数据处理方法、数据处理器、电子设备、存储介质 | |
CN111813721B (zh) | 神经网络数据处理方法、装置、设备及存储介质 | |
US20120151145A1 (en) | Data Driven Micro-Scheduling of the Individual Processing Elements of a Wide Vector SIMD Processing Unit | |
CN113051049A (zh) | 任务调度系统、方法、电子设备及可读存储介质 | |
CN110825461B (zh) | 数据处理方法和装置 | |
CN113741977B (zh) | 数据操作方法、数据操作装置、数据处理器 | |
US20230236878A1 (en) | Efficiently launching tasks on a processor | |
CN111913812B (zh) | 一种数据处理方法、装置、设备及存储介质 | |
CN116069485A (zh) | 用于处理任务的方法、装置、电子设备和介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |