CN115391035A - 一种异构计算资源协同管理调度的方法 - Google Patents

一种异构计算资源协同管理调度的方法 Download PDF

Info

Publication number
CN115391035A
CN115391035A CN202211005592.7A CN202211005592A CN115391035A CN 115391035 A CN115391035 A CN 115391035A CN 202211005592 A CN202211005592 A CN 202211005592A CN 115391035 A CN115391035 A CN 115391035A
Authority
CN
China
Prior art keywords
heterogeneous
resources
resource
task
scheduling
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
CN202211005592.7A
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.)
Beijing Institute of Computer Technology and Applications
Original Assignee
Beijing Institute of Computer Technology and Applications
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 Beijing Institute of Computer Technology and Applications filed Critical Beijing Institute of Computer Technology and Applications
Priority to CN202211005592.7A priority Critical patent/CN115391035A/zh
Publication of CN115391035A publication Critical patent/CN115391035A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation 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/5038Allocation 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5011Pool
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/508Monitor

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及一种异构计算资源协同管理调度的方法,属于计算资源管理领域。本发明构建NPU、FPGA、GPU异构资源镜像;编辑任务资源文件,填写异构资源的数量需求、应用路径、执行命令,分时复杂任务需按照执行顺序组织为任务列表;将任务资源文件发送给协同管理调度程序,程序根据任务的资源满足需求调度异构资源:若空闲资源满足需求,分配资源;若不满足需求,将任务加入等待执行队列,当有空闲资源时唤醒任务并分配资源;根据分配的资源和任务创建容器,执行命令。本发明支持更多种类型的异构计算资源管理调度,包括国产FPGA、NPU等,并针对分时使用多种异构资源的复杂任务进行设计,使异构资源分工协作,使资源调度对用户透明。

Description

一种异构计算资源协同管理调度的方法
技术领域
本发明属于计算资源管理领域,具体涉及一种异构计算资源协同管理调度的方法。
背景技术
在专用领域的计算任务中,异构计算资源表现出了比CPU更为优越的性能。如GPU(图形处理单元)具有更强的并行计算能力,更适合图像处理相关操作;FPGA(现场可编辑逻辑门阵列)灵活性更强,可动态重构并实现硬件级算法,快速执行算法对应的加解密任务;NPU(神经网络处理单元)支持定制的算法算子,可显著提高神经网络训练、推理等密集计算任务的速度等。
由于商业原因,每种异构计算资源的驱动与管理程序通常是由硬件厂商提供的,即异构资源管理与硬件设备是紧耦合的,每种异构资源对应一种管理程序,管理程序之间相互独立。同时,异构资源管理程序更多地是对设备的状态进行监控,保证设备功能正常,提供查询和调用接口等。异构资源的调度往往由用户实现,如在应用代码中指定使用的设备,这无疑增加了应用开发的难度。此外,随着算力的增强和算法的改进,一些复杂应用需要分时使用不同异构资源,如何实现多种异构资源的管理与协作,充分利用异构资源的计算特性也需要用户进行精心设计。另一方面,异构资源都有各自依赖的驱动和开发、运行库(如opencv),不同异构资源的依赖之间可能产生冲突,即便同一种异构资源,也可能由于依赖的迭代更新导致已有应用无法正常运行,不能向前兼容。
现有的一种异构计算资源管理调度方法。Kubernetes实现了设备插件机制,以允许容器访问GPU等异构资源,目前支持对节点上的AMD和NVIDIA GPU进行管理,该功能处于实验状态。通过将异构资源的依赖封装到容器中,可以解决不同资源间依赖冲突以及依赖向前兼容的问题,并将对异构资源的管理转化为对容器的管理,从而打破不同异构资源的独立性,提供统一的容器管理接口。然而,Kubernetes存在以下问题:(1)仅实验性地支持GPU资源管理,没有适配FPGA、NPU等异构计算资源(2)资源管理局限于一类异构资源的使用,没有从计算任务的角度进行设计,异构资源间相互独立,多种异构资源间的协作仍需要用户进行实现。
发明内容
(一)要解决的技术问题
本发明要解决的技术问题是如何提供一种异构计算资源协同管理调度的方法,以解决Kubernetes仅实验性地支持GPU资源管理,没有适配FPGA、NPU等异构计算资源,而且资源管理局限于一类异构资源的使用,没有从计算任务的角度进行设计,异构资源间相互独立,多种异构资源间的协作仍需要用户进行实现的问题。
(二)技术方案
为了解决上述技术问题,本发明提出一种异构计算资源协同管理调度的方法,该方法包括如下步骤:
S1、构建异构资源镜像;异构资源包括:NPU、FPGA、GPU;
S2、编辑任务资源文件,填写异构资源的数量需求、应用路径和执行命令,分时复杂任务需按照执行顺序组织为任务列表;
S3、将任务资源文件发送给协同管理调度程序,程序根据任务的资源需求调度异构资源:若空闲资源满足需求,分配资源;若不满足需求,将任务加入等待执行队列,当有空闲资源时唤醒任务并分配资源;
S4、根据分配的资源和任务创建容器,执行命令。
进一步地,所述步骤S1具体包括:将宿主机上异构资源的依赖库、SDK、驱动和开发框架封装在镜像中,构建相互隔离的应用开发和运行环境,异构资源包括NPU、FPGA和GPU。
进一步地,所述步骤S1中,每种异构资源对应一种镜像,或者根据依赖版本构建多种镜像。
进一步地,所述步骤S3中,每个异构资源对应系统中的一个逻辑设备,具有唯一的资源ID。
进一步地,所述步骤S3具体包括:协同管理调度程序启动时,通过扫描发现异构资源,并将空闲异构资源按照ID排序,组织成资源队列;所有异构资源队列组成异构计算资源池;对于单个任务,如果有空闲的异构资源,则从队列头部选择所需数量的异构资源构建资源容器并执行;如果没有空闲的异构资源,则加入待执行任务队列,并定期检查异构资源占用情况,当有足够的异构资源时,唤醒等待的任务;任务执行完毕后,释放占用的异构资源,并将异构资源对应的ID插入资源队列尾部。
进一步地,所述步骤S3还包括:对于有执行顺序要求的分时复杂任务,根据关联任务的执行情况来确定执行时机。
进一步地,所述步骤S3还包括:协同管理调度程序在创建分时复杂任务时,根据任务资源文件建立并维护各功能段的顺序关系,监控每个功能段的异构资源容器运行状态;任务列表按序分解为单个任务,第一个任务立即执行,后续任务加入待执行任务队列;一旦发现功能段执行完毕,立即启动下一功能段的任务。
进一步地,所述步骤S4中,将宿主机上的异构资源以指定名称映射到容器中,且指定名称对容器内的应用可见。
进一步地,所述步骤S4中,通过异构资源映射将多个应用隔离开,运行于独立的命名空间,只要宿主机有空闲的该类资源,即映射为指定名称使用。
进一步地,所述步骤S4中,通过容器管理接口实现对多种异构资源的统一管理。
(三)有益效果
本发明提出一种异构计算资源协同管理调度的方法,与现有技术相比,本发明提出的技术方案支持更多种类型的异构计算资源管理调度,包括国产FPGA、NPU等,并针对分时使用多种异构资源的复杂任务进行设计,使异构资源分工协作,使资源调度对用户透明,从而将更多精力放在应用开发上。
附图说明
图1为本发明的异构资源容器镜像示意图;
图2为本发明的任务执行流程图;
图3为本发明的单个任务数据流程图。
具体实施方式
为使本发明的目的、内容和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
本发明的目的是提出一种针对国产NPU、GPU和FPGA等异构计算资源的统一管理调度方法。
(一)异构资源容器镜像
如图1所示,将宿主机上NPU、FPGA、GPU等异构资源的依赖库、SDK、驱动和开发框架等封装在镜像中,构建相互隔离的应用开发和运行环境,执行任务时通过镜像创建容器,将异构资源映射到容器中实现虚拟化,由此将对异构资源的管理调度转化为对异构资源容器的管理调度,通过容器管理接口实现对多种异构资源的统一管理。每种异构资源至少对应一种镜像,也可根据依赖版本构建多种镜像。
(二)任务资源文件
为了使异构资源的管理调度对用户透明,本发明设计了任务资源文件,使资源分配与应用开发解耦。单个简单任务资源文件内容如下:
Figure BDA0003808882690000041
对于单个简单任务,用户需要在任务资源文件中填写异构资源的数量需求、应用路径、执行命令;对于分时复杂任务,除需填写单个任务的上述信息外,还需按照执行顺序将任务组织成列表形式。协同管理调度程序根据任务资源文件,分配调度异构资源,完成任务执行。
(三)异构资源映射
通常用户在开发应用时,会指定需要使用的异构资源名称。当多个应用指定的资源名称一致时,同时运行会发生冲突,导致任务运行失败,即使此时仍存在同类型空闲但非用户指定名称的异构资源。异构资源映射可将宿主机上的异构资源以指定名称映射到容器中,且指定名称对容器内的应用可见。通过异构资源映射可将多个应用隔离开,运行于独立的命名空间,不必在开发时考虑指定的资源名称是否会冲突,只要宿主机有空闲的该类资源,即映射为指定名称使用。
(四)异构资源分配与任务调度
每个异构资源对应系统中的一个逻辑设备,具有唯一的资源ID。协同管理调度程序启动时,通过扫描发现异构资源,并将空闲异构资源按照ID排序,组织成资源队列。所有异构资源队列组成异构计算资源池。对于单个任务,如果有空闲的异构资源,则从队列头部选择所需数量的异构资源构建资源容器并执行;如果没有空闲的异构资源,则加入待执行任务队列,并定期检查异构资源占用情况,当有足够的异构资源时,唤醒等待的任务。任务执行完毕后,释放占用的异构资源,并将异构资源对应的ID插入资源队列尾部。
对于有执行顺序要求的分时复杂任务,需要根据关联任务的执行情况来确定执行时机。协同管理调度程序在创建分时复杂任务时,根据任务资源文件建立并维护各功能段的顺序关系,监控每个功能段的异构资源容器运行状态。任务列表按序分解为单个任务,第一个任务立即执行(设该任务所需资源满足需求),后续任务加入待执行任务队列。一旦发现功能段执行完毕,立即启动下一功能段的任务。结合冗余的异构执行部件,可实现类似流水线的并行工作,大幅提高分时复杂任务执行效率。
本发明的异构计算资源协同管理调度的方法的流程如下:
S1、构建NPU、FPGA、GPU异构资源镜像
S2、编辑任务资源文件,填写异构资源的数量需求、应用路径、执行命令,分时复杂任务需按照执行顺序组织为任务列表;
S3、将任务资源文件发送给协同管理调度程序,程序根据任务的资源需求调度异构资源:若空闲资源满足需求,分配资源;若不满足需求,将任务加入等待执行队列,当有空闲资源时唤醒任务并分配资源;
S4、根据分配的资源和任务创建容器,执行命令。
与现有技术相比,本发明提出的技术方案支持更多种类型的异构计算资源管理调度,包括国产FPGA、NPU等,并针对分时使用多种异构资源的复杂任务进行设计,使异构资源分工协作,使资源调度对用户透明,从而将更多精力放在应用开发上。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

Claims (10)

1.一种异构计算资源协同管理调度的方法,其特征在于,该方法包括如下步骤:
S1、构建异构资源镜像;异构资源包括:NPU、FPGA、GPU;
S2、编辑任务资源文件,填写异构资源的数量需求、应用路径和执行命令,分时复杂任务需按照执行顺序组织为任务列表;
S3、将任务资源文件发送给协同管理调度程序,程序根据任务的资源需求调度异构资源:若空闲资源满足需求,分配资源;若不满足需求,将任务加入等待执行队列,当有空闲资源时唤醒任务并分配资源;
S4、根据分配的资源和任务创建容器,执行命令。
2.如权利要求1所述的异构计算资源协同管理调度的方法,其特征在于,所述步骤S1具体包括:将宿主机上异构资源的依赖库、SDK、驱动和开发框架封装在镜像中,构建相互隔离的应用开发和运行环境,异构资源包括NPU、FPGA和GPU。
3.如权利要求1所述的异构计算资源协同管理调度的方法,其特征在于,所述步骤S1中,每种异构资源对应一种镜像,或者根据依赖版本构建多种镜像。
4.如权利要求1所述的异构计算资源协同管理调度的方法,其特征在于,所述步骤S3中,每个异构资源对应系统中的一个逻辑设备,具有唯一的资源ID。
5.如权利要求1-4任一项所述的异构计算资源协同管理调度的方法,其特征在于,所述步骤S3具体包括:协同管理调度程序启动时,通过扫描发现异构资源,并将空闲异构资源按照ID排序,组织成资源队列;所有异构资源队列组成异构计算资源池;对于单个任务,如果有空闲的异构资源,则从队列头部选择所需数量的异构资源构建资源容器并执行;如果没有空闲的异构资源,则加入待执行任务队列,并定期检查异构资源占用情况,当有足够的异构资源时,唤醒等待的任务;任务执行完毕后,释放占用的异构资源,并将异构资源对应的ID插入资源队列尾部。
6.如权利要求5所述的异构计算资源协同管理调度的方法,其特征在于,所述步骤S3还包括:对于有执行顺序要求的分时复杂任务,根据关联任务的执行情况来确定执行时机。
7.如权利要求5所述的异构计算资源协同管理调度的方法,其特征在于,所述步骤S3还包括:协同管理调度程序在创建分时复杂任务时,根据任务资源文件建立并维护各功能段的顺序关系,监控每个功能段的异构资源容器运行状态;任务列表按序分解为单个任务,第一个任务立即执行,后续任务加入待执行任务队列;一旦发现功能段执行完毕,立即启动下一功能段的任务。
8.如权利要求5所述的异构计算资源协同管理调度的方法,其特征在于,所述步骤S4中,将宿主机上的异构资源以指定名称映射到容器中,且指定名称对容器内的应用可见。
9.如权利要求8所述的异构计算资源协同管理调度的方法,其特征在于,所述步骤S4中,通过异构资源映射将多个应用隔离开,运行于独立的命名空间,只要宿主机有空闲的该类资源,即映射为指定名称使用。
10.如权利要求8所述的异构计算资源协同管理调度的方法,其特征在于,所述步骤S4中,通过容器管理接口实现对多种异构资源的统一管理。
CN202211005592.7A 2022-08-22 2022-08-22 一种异构计算资源协同管理调度的方法 Pending CN115391035A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211005592.7A CN115391035A (zh) 2022-08-22 2022-08-22 一种异构计算资源协同管理调度的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211005592.7A CN115391035A (zh) 2022-08-22 2022-08-22 一种异构计算资源协同管理调度的方法

Publications (1)

Publication Number Publication Date
CN115391035A true CN115391035A (zh) 2022-11-25

Family

ID=84121471

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211005592.7A Pending CN115391035A (zh) 2022-08-22 2022-08-22 一种异构计算资源协同管理调度的方法

Country Status (1)

Country Link
CN (1) CN115391035A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116069481A (zh) * 2023-04-06 2023-05-05 山东省计算中心(国家超级计算济南中心) 一种共享gpu资源的容器调度系统及调度方法
CN116578415A (zh) * 2023-04-26 2023-08-11 中国人民解放军92942部队 一种面向大样本负载仿真的并行方法
CN116739090A (zh) * 2023-05-12 2023-09-12 北京大学 基于Web浏览器的深度神经网络推理度量方法和装置

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116069481A (zh) * 2023-04-06 2023-05-05 山东省计算中心(国家超级计算济南中心) 一种共享gpu资源的容器调度系统及调度方法
CN116069481B (zh) * 2023-04-06 2023-07-18 山东省计算中心(国家超级计算济南中心) 一种共享gpu资源的容器调度系统及调度方法
CN116578415A (zh) * 2023-04-26 2023-08-11 中国人民解放军92942部队 一种面向大样本负载仿真的并行方法
CN116578415B (zh) * 2023-04-26 2024-06-04 中国人民解放军92942部队 一种面向大样本负载仿真的并行方法
CN116739090A (zh) * 2023-05-12 2023-09-12 北京大学 基于Web浏览器的深度神经网络推理度量方法和装置
CN116739090B (zh) * 2023-05-12 2023-11-28 北京大学 基于Web浏览器的深度神经网络推理度量方法和装置

Similar Documents

Publication Publication Date Title
US9996401B2 (en) Task processing method and virtual machine
CN115391035A (zh) 一种异构计算资源协同管理调度的方法
RU2530345C2 (ru) Экземпляры планировщика в процессе
US20180129570A1 (en) Saving program execution state
US8181151B2 (en) Modeling and managing heterogeneous applications
US7830387B2 (en) Parallel engine support in display driver model
EP2176778B1 (en) Progressively implementing declarative models in distributed systems
US6434594B1 (en) Virtual processing network enabler
US7721286B2 (en) Preemptive multi-tasking with cooperative groups of tasks
CN101421711B (zh) 用于资源受限设备的虚拟执行系统
US20160085592A1 (en) Dynamic job processing based on estimated completion time and specified tolerance time
EP0969383A2 (en) Method for efficient non-virtual main memory management
US20090165003A1 (en) System and method for allocating communications to processors and rescheduling processes in a multiprocessor system
US20080148300A1 (en) Providing Policy-Based Operating System Services in a Hypervisor on a Computing System
US7024669B1 (en) Managing workload within workflow-management-systems
MacIntyre et al. Language-level support for exploratory programming of distributed virtual environments
US20120158817A1 (en) Distributed Computing Architecture
CN111045786B (zh) 一种云环境下的基于镜像分层技术的容器创建系统及方法
JPH0687222B2 (ja) アプリケーションとデータベース管理システム間の相互通信システム及び方法
JP2005534116A (ja) 複数の消費者をもつコンピュータシステムで資源を動的に割当てて管理する方法
JPH05216692A (ja) プログラム実行を管理する方法およびシステム
CN113902120A (zh) 异构云解算平台混合计算任务动态自适应划分调度方法及系统
CN109800092A (zh) 一种共享数据的处理方法、装置及服务器
CN112306539A (zh) 一种单片机应用层开发方法、系统、终端及介质
CN115840619A (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