CN107168782A - 一种基于Spark与GPU的并行计算*** - Google Patents

一种基于Spark与GPU的并行计算*** Download PDF

Info

Publication number
CN107168782A
CN107168782A CN201710270400.8A CN201710270400A CN107168782A CN 107168782 A CN107168782 A CN 107168782A CN 201710270400 A CN201710270400 A CN 201710270400A CN 107168782 A CN107168782 A CN 107168782A
Authority
CN
China
Prior art keywords
gpu
resource
stage
task
spark
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
CN201710270400.8A
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.)
Fudan University
Original Assignee
Fudan University
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 Fudan University filed Critical Fudan University
Priority to CN201710270400.8A priority Critical patent/CN107168782A/zh
Publication of CN107168782A publication Critical patent/CN107168782A/zh
Pending legal-status Critical Current

Links

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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17318Parallel communications techniques, e.g. gather, scatter, reduce, roadcast, multicast, all to all
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17331Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
    • 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/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/505Allocation 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 load
    • 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/5083Techniques for rebalancing the load in a distributed system

Landscapes

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

Abstract

本发明属于并行计算技术领域,具体为一种基于Spark与GPU的并行计算框架***。本发明基于YARN资源管理平台,通过改进其资源管理器与节点管理器,使其能够有效感知异构集群的GPU资源,从而支持对集群GPU资源的管理与调度;然后在YARN部署模式下,对Spark的作业调度机制与任务执行机制进行改进,使其支持对GPU型任务的调度与执行。通过在资源申请、资源分配、DAG生成、stage划分与任务执行等阶段引入对GPU资源的标识,使执行引擎能够感知GPU任务,并在异构集群中有效执行;同时利用Spark本身高效内存计算的特性,结合GPU多核并行计算的优势提出了在该框架下有效的编程模型。本发明能够有效的处理数据密集型与计算密集型作业,极大提高作业处理效率。

Description

一种基于Spark与GPU的并行计算***
技术领域
本发明属于并行计算技术领域,具体涉及一种基于Spark与GPU的并行计算框架***。
背景技术
当今社会,各行业需要处理的数据规模已经呈现海量趋势,大数据引起了社会各行业的的广泛关注。毋庸置疑,大数据蕴含着丰富的有用信息,如果能够合理地挖掘和使用大数据,将对科学研究和社会经济产生巨大的促进作用。由于大数据中所蕴含的信息能够辅助商业决策与科学研究,所以已经在许多行业内得到了快速的发展与应用。在大数据时代中,一切以数据为中心,从海量的历史数据中能够挖掘分析出许多通过其它方式无法获得的有效信息,从而提高决策的准确性。
分布式计算的发展为充分发掘数据价值提供了有效的手段。分布式计算能够利用廉价的计算机集群,对海量数据进行快速计算分析,有从而有效的节省了数据分析成本。在这样的环境下,一批分布式计算框架技术应运而生,其中Spark由于其基于内存计算的特性,能够有效提升数据处理的效率,且在机器学习与交互式分析等领域有着广泛的应用。
与此同时,GPU因其拥有众多核心的特性,使其在很多应用中能够取得比单纯CPU计算更高的计算效率,而这种加速效果往往是以十倍或是百倍来衡量。相比单纯的提升CPU性能,利用GPU进行并行计算往往更加廉价和有效。这使得GPU在高性能计算领域有着重要的地位。
虽然Spark能够有效的处理数据密集型作业,但对于计算密集型作业来说不太适合。且集群规模扩展有限,如果单纯使用CPU进行计算,那么对于大批量作业的处理性能提升仍然有待提高。如果能够在Spark中引入对GPU设备的支持,使其既能够充分发挥Spark本身高效内存计算的特性,又能够利用GPU多核并行计算的优势,这将极大提升对海量数据的处理效率。
原生Spark框架中没有引入对GPU设备的支持,现有的在Spark中调用GPU加速计算的解决方案是基于在Java/Scala语言中调用C/C++程序进行处理,这种方式存在很多弊端。由于Spark中无法感知GPU计算任务,所以其无法区分CPU任务与GPU任务,在调度任务执行时,将可能会在不含GPU设备的节点中启动GPU任务,造成任务执行失败。且在YARN资源管理器中,只支持对CPU与内存资源的调度,无法感知GPU资源,其无法向上层的Spark框架提供对GPU资源的分配与调度。由于YARN与Spark框架自身的原因,在Spark中执行GPU计算的传统方法无法适应异构集群环境。
发明内容
本发明的目的在于提供一种处理效率高,且能够适应异构集群环境的基于Spark与GPU的并行计算***。
本发明提供的基于Spark与GPU的并行计算***,将Spark与GPU进行整合,使其能够有效的处理数据密集型与计算密集型作业,极大提高了作业处理效率。
本发明提供的基于Spark与GPU的并行计算框架***,包括:
组件一,改进的的资源管理平台,其支持对GPU、CPU与内存等多维资源进行调度与管理;
组件二,改进的Spark分布式计算框架,其支持对GPU型任务的调度与执行。
(1)所述改进的的资源管理平台,包括:
改进YARN的资源管理器与节点管理器,使其能够有效感知异构集群的GPU资源,从而支持对集群GPU资源的管理与调度。其中,包括资源表示模型、资源调度模型、资源抢占模型、资源隔离机制及GPU设备的动态绑定机制的改进。
(2)所述改进的Spark分布式计算框架,包括:
改进Spark的资源申请与分配机制、作业调度机制与任务执行机制,使其支持对GPU型任务的调度与执行。通过在资源申请、资源分配、DAG生成、stage划分与任务执行等阶段引入对GPU资源的标识,使其执行引擎能够感知GPU任务,并在异构集群中有效执行。
本发明中,所述改进的的资源管理平台,能够支持对包含GPU资源在内的多维资源进行管理与调度。具体来说:
关于资源表示模型,首先可自定义节点中包含的GPU设备数量,并修改资源表示协议,使其增加对GPU资源的表示。待节点启动时,节点管理器初始化资源列表,并与资源管理器通过心跳机制汇报该节点的资源信息。
关于资源调度模型,本发明将GPU与CPU、内存资源一起添加到资源管理平台的层级管理队列中。这样不仅能够保持资源管理的统一性,也能更灵活的针对GPU资源进行权限的设定,更适合在大规模集群中处理多用户作业的场景下应用。本发明依据DRF算法对资源调度模块进行修改,使其添加对GPU资源的调度与管理。该算法如下:
(1)初始化变量。其中,R=<totalCPU,totalGPU,totalMem>表示集群CPU、GPU及内存资源的总量。C=<usedCPU,usedGPU,usedMem>表示集群中已被消费的CPU、GPU及内存资源的数量。si表示作业i的主资源占相应总资源的份额。Ui=<CPUi,GPUi,Memi>表示已经分配给作业i的资源量。Di=<CPUi,GPUi,Memi>表示作业i的每个任务需要的资源量。
在每次选取作业进行资源分配时,依次执行以下步骤:
(2)选取主资源份额si最小的作业执行。
(3)如果C+Di≤R,则将资源分配给作业i,更新C=C+Di,Ui=Ui+Di,
si=max{Ui/R}。否则,集群资源无法满足需求,停止分配。
关于资源抢占模型,通过资源调度器对层级队列中的每个队列设置每种资源的可用上限与下限。资源调度器将负载较轻的队列的资源分配给其他负载较重的队列以提高集群资源利用率。但当有新的应用程序提交到负载较轻的队列时,调度器会资源抢占机制收回其他队列所占用的资源,从而将本属于该队列的资源分配给它。在资源抢占机制发生时,需要释放GPU资源。
这个工作交由节点节点管理器完成,这里新增releaseGPU方法用于释放GPU资源。资源管理器将需要释放的资源列表信息通过心跳机制发送给响应的节点管理器,节点管理器检测到待释放的资源实体中含有GPU资源时,会调用releaseGPU方法释放GPU资源。然后资源管理器将所释放的资源进一步分配给相关队列。
关于资源隔离模型,由于Cgroups具备较好的隔离性能且其支持对GPU资源进行隔离,本发明采用Cgroups方案对GPU资源进行隔离。
关于GPU设备的动态绑定机制,当分配给该任务的资源实体中包含GPU资源时,相应的节点管理器需要将节点上的GPU设备与该资源实体进行绑定。如果节点上有多个空闲的GPU资源,那么需要选择一个进行分配。本发明将GPU的运行状态信息表示为<GPU设备号,资源实体号>列表,列表的每条数据标识了GPU设备与相关资源实体的对应关系。节点管理器会在节点刚启动时根据相关配置文件以及该节点上的GPU设备信息初始化该列表。
当有新的任务请求使用GPU资源时,节点管理器通过查找该列表,从而获得处于空闲状态的GPU设备信息,并将其分配给相关任务。如果节点管理器节点上拥有多个GPU资源处于空闲状态,则通过轮转法进行GPU资源的分配。同时,将已经运行的资源实体与GPU资源的对应信息进行保存至数据库中。在节点管理器需要重新启动的情况下,能够从数据库中直接读取GPU设备的分配信息,避免了对节点资源的再分配。
本发明中,所述改进的Spark分布式计算框架,是对于Spark内核进行改进,使其支持对GPU型任务的调度与执行。具体来说:
在提交作业时,如果Spark应用程序的应用程序控制器检测到该应用程序需要GPU资源,则需要在资源申请时,将所需的GPU资源加入到资源请求描述中。
申请的Container包括两种:CPU型Container与GPU型Container。因为对于GPU型任务,也需要CPU完成数据的处理、传输及GPU核函数的启动,所以GPU型Container除了需要1个单位的GPU资源外,还需要指定数量的CPU核心。在申请资源时,需要确定所要申请的两种类型的Container数目。这里,用executorCores表示每个Container所要包含的CPU核数,totalCores表示应用程序申请的CPU核数,GPUNum表示应用程序申请的GPU资源数量,则GPU型Container的数量为GPUNum,非GPU型Container的数量为(totalCores-GPUNum*executorCores)/executorCores。然后再根据设置的内存资源数量进行判定,检测总的内存数量是否能够满足所有Container需要的内存总量,以进一步处理。发出资源请求后,资源调度器并不会立马为它返回满足要求的资源,而需要Spark对应的应用程序控制器不断通过心跳机制与资源管理器通信,以探测请求到的资源是否已经分配完成。应用程序控制器在收到所申请的资源后,将其加入程序内部的待分配资源列表中,以分配给具体执行的任务。
在Spark接口中,需要对GPU的任务进行标识。本发明提出了mapPartitionsGPU算子与mapPartitionsGPURDD,用于针对GPU任务进行处理。
Spark的作业调度器DAGScheduler在生成DAG图后,开始划分stage时,需要增加字段以标识当前stage内是否包含GPU操作。在一个stage内部,根据每个RDD上运行的计算方法是否需要GPU资源,其内部的RDD分为两种:需要GPU资源的RDD与不需要GPU资源的RDD。如果该stage中包含需要GPU资源的RDD时,则在为这个stage中RDD的分区分配资源时,应该为其分配足够的GPU资源,即便可能只有其中一个RDD在计算时需要。否则,任务在计算过程可能会因为没有可使用的GPU资源而导致执行失败。为了标识stage中是否包含需要GPU资源的RDD,需要为stage增加字段flagGPU,当flagGPU为真时,表明该stage中包含需要GPU资源的RDD。通过设置flagGPU字段,在下一步的资源分配中,能够被任务管理器识别并为其分配GPU资源。
本发明中,在Spark内部的作业调度器DAGScheduler中进行标识stage类型的流程如下:
(1)DAG生成后,划分stage。在生成stage时,检测该stage内部所包含的RDD的flagGPU字段是否为真,如果是,则说明该stage在执行过程中需要GPU资源,标记该stage的flagGPU字段为真。作为以后任务管理器进行GPU资源分配的依据。
(2)执行引擎提交stage的算法是一个递归的过程,它会首先提交DAG图中的最后一个stage,然后检查该stage的父stage是否都已提交完毕,如果全部提交则开始执行此次stage所对应的任务集。如果其父stage有的没有提交,则递归提交其父stage,并同样作出上述检查。所以最终的结果是按照DAG图,从前往后执行stage。这样做是的好处是能够确保当前stage执行时其输入数据已经准备完毕,并且在RDD中的分区数据丢失时,能够沿着DAG图从后往前寻找最近的RDD中已生成的分区数据,然后重新执行以获得丢失分区。
(3)提交stage后,任务管理器开始将该stage划分成任务集,并向集群管理器申请执行所需的资源。任务集中所包含的任务数量与RDD的分区数量相同。任务管理器首先检测该stage的flagGPU字段是否为真,如果是则为其分配包含GPU资源的container。在进行该container的分配时,如果有多个container可以选择,则根据本地化策略进行判断。即依次选择本地节点、本机架的其它节点及其他机架节点。然后在资源所在节点中启动任务,并将任务中间结果与最终结果存入存储体系中。这个过程中,如果包含GPU资源的container数量少于GPU型任务的数量,则暂未分配GPU资源的任务需要等待,待其他任务执行完毕,有GPU资源处于空闲状态时则进行分配。
(4)在任务执行完毕后,归还资源。将回收的container加入待分配列表中,以分配给其他任务使用。
本发明基于改进的框架,提出了一种针对GPU型任务的有效的编程模型。
在Spark中,RDD中的数据由若干个分区组成,其最终以分区为单位被分配到若干个节点中完成计算。实际上,根据分区数据执行粒度,可以将利用Spark进行GPU计算的类型主要分为两种:
(1)以分区为单位完成GPU计算。即将RDD分区中的数据全部放入GPU中以完成并行计算,提高程序执行效率;
(2)以单个记录为单位完成GPU计算。即将RDD分区中的数据逐个放入GPU中完成计算,以单个记录为单位进行加速处理。
在改进的框架中,新增加的mapPartitionsGPU算子能够感知GPU型任务,以分区数据作为输入进行处理。该算子的主要执行逻辑如下:
(1)首先在方法中初始化GPU设备;
(2)然后判断对分区数据执行的粒度是以分区为单位还是以单条记录为单位。如果是以分区单位,那么利用CUDA API将分区数据传输到GPU显存中,这个过程可能涉及数据格式的转换,将RDD中分区数据转换成成能够被GPU处理的数据格式。然后调用GPU核函数对数据进行并行计算,在计算完成后,将输出结果传输至内存中。如果分区数据执行的粒度是以单条记录为单位,那么需要对逐个对每个分区记录顺序处理。每次拷贝一个记录数据至GPU显存中,调用GPU核函数对数据进行并行计算,在计算完成后,将输出结果拷贝至内存中。在全部记录处理完毕后,需要将整个记录的输出结果转换成一个分区集合;
(3)释放GPU设备,并且返回分区集合迭代器。
与现有技术相比,本发明的优点和效果有:
1、本发明所提出的改进的资源管理平台能够感知异构集群中的CPU、内存及GPU资源,并且能够有效地对其进行管理和调度;
2、基于Spark分布式计算框架进行改进,使其能够有效的判别GPU型任务,在DAG生成、stage划分、资源的申请与分配等阶段能够针对性的进行处理,使其能够对GPU型作业进行正确的调度与执行;
3、本发明提出的框架,能够适应集群中部分节点具备GPU设备及单点多卡的异构环境,其将GPU型任务正确的分配到集群中包含GPU资源的节点中执行,解决了传统执行GPU任务时无法在异构集群环境下正常工作的问题。
附图说明
图1为GPU设备分配与释放。
图2为改进的框架执行流程图。
图3为mapPartitionsGPU工作原理。
具体实施方式
下面结合附图对本发明所述技术方案进一步说明。
图1是模型训练和图像识别的框图,主要包括:
1、在资源表示上,首先可自定义节点中包含的GPU设备数量,并修改资源表示协议,使其增加对GPU资源的表示。待节点启动时,节点管理器初始化资源列表,并与资源管理器通过心跳机制汇报该节点的资源信息。
2、在资源调度上,本发明将GPU与CPU、内存资源一起添加到资源管理平台的层级管理队列中。
3、资源管理器将需要释放的资源列表信息通过心跳机制发送给响应的节点管理器,节点管理器检测到待释放的资源实体中含有GPU资源时,会调用releaseGPU方法释放GPU资源。然后资源管理器将所释放的资源进一步分配给相关队列。
4、在资源隔离上,由于Cgroups具备较好的隔离性能且其支持对GPU资源进行隔离,本发明采用Cgroups方案对GPU资源进行隔离。
5、在GPU设备的动态绑定上,当分配给任务的资源实体中包含GPU资源时,相应的节点管理器需要将节点上的GPU设备与该资源实体进行绑定。本发明将GPU的运行状态信息表示为<GPU设备号,资源实体号>列表,节点管理器会在节点刚启动时根据相关配置文件以及该节点上的GPU设备信息初始化该列表。当有新的任务请求使用GPU资源时,节点管理器通过查找该列表,从而获得处于空闲状态的GPU设备信息,并将其分配给相关任务。如果节点管理器节点上拥有多个GPU资源处于空闲状态,则通过轮转法进行GPU资源的分配。同时,将已经运行的资源实体与GPU资源的对应信息进行保存至数据库中。
6、本发明提出了mapPartitionsGPU算子与mapPartitionsGPURDD,用于针对GPU任务进行处理。在生成DAG图后,开始划分stage时,需要增加字段以标识当前stage内是否包含GPU操作。
7、任务管理器将该stage划分成任务集时,首先检测该stage是否具备GPU标识,如果是则为其分配包含GPU资源的container。
8、对于具备GPU标识的任务,将其调度到包含GPU设备的节点中执行。
参考文献:
[1]Ali Ghodsi,MateiZaharia.Dominant Resource Fairness:Fair Allocationof Multiple Resource Types[J].Berkeley.
[2]M.Zaharia,M.Chowdhury,T.Das,et al.Resilient distributed datasets:Afault tolerant abstraction for in-memory cluster computing[C]//Proceedings ofthe 9th USENIX conference on Networked Systems Design and Implementation.CA,USA:USENIX Association,2012
[3]Janki Bhimani,Miriam Leeser,Ningfang Mi.Accelerating K-Meansclustering with parallel implementations and GPU computing[A].2015IEEE HighPerformance Extreme Computing Conference(HPEC)[C].2015,1-6.
[4]Huang Chao-Qiang,Yang Shu-Qiang.RDDShare:Reusing Results of SparkRDD[A].2016IEEE First International Conference on Data Science in Cyberspace(DSC)[J].2016,290-295.
[5]Jie Zhu 1,Juanjuan Li.GPU-In-Hadoop:Enabling MapReduce AcrossDistributed Heterogeneous Platforms.IEEE ICIS 2014[J].2014,1-6。

Claims (6)

1.一种基于Spark与GPU的并行计算***,其特征在于,包括:
改进的的资源管理平台,其支持对GPU、CPU与内存等多维资源进行调度与管理;
改进的Spark分布式计算框架,其支持对GPU型任务的调度与执行;
(1)所述改进的的资源管理平台,包括:
改进YARN的资源管理器与节点管理器,使其能够有效感知异构集群的GPU资源,从而支持对集群GPU资源的管理与调度;其中,包括资源表示模型、资源调度模型、资源抢占模型、资源隔离机制及GPU设备的动态绑定机制的改进;
(2)所述改进的Spark分布式计算框架,包括:
改进Spark的资源申请与分配机制、作业调度机制与任务执行机制,使其支持对GPU型任务的调度与执行;通过在资源申请、资源分配、DAG生成、stage划分与任务执行等阶段引入对GPU资源的标识,使其执行引擎能够感知GPU任务,并在异构集群中有效执行。
2.根据权利要求1所述的基于Spark与GPU的并行计算***,其特征在于,所述改进的的资源管理平台,能够支持对包含GPU资源在内的多维资源进行管理与调度:
关于资源表示模型,首先自定义节点中包含的GPU设备数量,并修改资源表示协议,使其增加对GPU资源的表示;待节点启动时,节点管理器初始化资源列表,并与资源管理器通过心跳机制汇报该节点的资源信息;
关于资源调度模型,将GPU与CPU、内存资源一起添加到资源管理平台的层级管理队列中;依据DRF算法对资源调度模块进行修改,使其添加对GPU资源的调度与管理;该算法如下:
(1)初始化变量;其中,R=<totalCPU,totalGPU,totalMem>表示集群CPU、GPU及内存资源的总量,C=<usedCPU,usedGPU,usedMem>表示集群中已被消费的CPU、GPU及内存资源的数量,si表示作业i的主资源占相应总资源的份额,Ui=<CPUi,GPUi,Memi>表示已经分配给作业i的资源量,Di=<CPUi,GPUi,Memi>表示作业i的每个任务需要的资源量,在每次选取作业进行资源分配时,依次执行以下步骤:
(2)选取主资源份额si最小的作业执行;
(3)如果C+Di≤R,则将资源分配给作业i,更新C=C+Di,Ui=Ui+Di,
si=max{Ui/R};否则,集群资源无法满足需求,停止分配;
关于资源抢占模型,通过资源调度器对层级队列中的每个队列设置每种资源的可用上限与下限;资源调度器将负载较轻的队列的资源分配给其他负载较重的队列以提高集群资源利用率;但当有新的应用程序提交到负载较轻的队列时,调度器会资源抢占机制收回其他队列所占用的资源,从而将本属于该队列的资源分配给它;在资源抢占机制发生时,需要释放GPU资源;这个工作由节点管理器完成,这里新增releaseGPU方法用于释放GPU资源;资源管理器将需要释放的资源列表信息通过心跳机制发送给响应的节点管理器,节点管理器检测到待释放的资源实体中含有GPU资源时,调用releaseGPU方法释放GPU资源;然后资源管理器将所释放的资源进一步分配给相关队列;
关于资源隔离模型,采用Cgroups方案对GPU资源进行隔离;
关于GPU设备的动态绑定机制,当分配给该任务的资源实体中包含GPU资源时,相应的节点管理器需要将节点上的GPU设备与该资源实体进行绑定;如果节点上有多个空闲的GPU资源,那么需要选择一个进行分配;将GPU的运行状态信息表示为<GPU设备号,资源实体号>列表,列表的每条数据标识了GPU设备与相关资源实体的对应关系;节点管理器在节点刚启动时根据相关配置文件以及该节点上的GPU设备信息初始化该列表;
当有新的任务请求使用GPU资源时,节点管理器通过查找该列表,从而获得处于空闲状态的GPU设备信息,并将其分配给相关任务;如果节点管理器节点上拥有多个GPU资源处于空闲状态,则通过轮转法进行GPU资源的分配;同时,将已经运行的资源实体与GPU资源的对应信息进行保存至数据库中;在节点管理器需要重新启动的情况下,能够从数据库中直接读取GPU设备的分配信息,避免了对节点资源的再分配。
3.根据权利要求2所述的基于Spark与GPU的并行计算***,其特征在于,所述改进的Spark分布式计算框架,是对于Spark内核进行改进,使其支持对GPU型任务的调度与执行:
在提交作业时,如果Spark应用程序的应用程序控制器检测到该应用程序需要GPU资源,则在资源申请时,将所需的GPU资源加入到资源请求描述中;
申请的Container包括两种:CPU型Container与GPU型Container;因为对于GPU型任务,也需要CPU完成数据的处理、传输及GPU核函数的启动,所以GPU型Container除了需要1个单位的GPU资源外,还需要指定数量的CPU核心;在申请资源时,确定所要申请的两种类型的Container数目;这里,用executorCores表示每个Container所要包含的CPU核数,totalCores表示应用程序申请的CPU核数,GPUNum表示应用程序申请的GPU资源数量,则GPU型Container的数量为GPUNum,非GPU型Container的数量为(totalCores-GPUNum*executorCores)/executorCores;然后再根据设置的内存资源数量进行判定,检测总的内存数量是否能够满足所有Container需要的内存总量,以进一步处理;发出资源请求后,资源调度器并不立马为它返回满足要求的资源,而需要Spark对应的应用程序控制器不断通过心跳机制与资源管理器通信,以探测请求到的资源是否已经分配完成;应用程序控制器在收到所申请的资源后,将其加入程序内部的待分配资源列表中,以分配给具体执行的任务;
在Spark接口中,对GPU的任务进行标识,其中将mapPartitionsGPU算子与mapPartitionsGPURDD,用于针对GPU任务进行处理;
Spark的作业调度器DAGScheduler在生成DAG图后,开始划分stage时,增加字段以标识当前stage内是否包含GPU操作;在一个stage内部,根据每个RDD上运行的计算方法是否需要GPU资源,其内部的RDD分为两种:需要GPU资源的RDD与不需要GPU资源的RDD;如果该stage中包含需要GPU资源的RDD时,则在为这个stage中RDD的分区分配资源时,为其分配足够的GPU资源,即便可能只有其中一个RDD在计算时需要;否则,任务在计算过程可能会因为没有可使用的GPU资源而导致执行失败;为了标识stage中是否包含需要GPU资源的RDD,为stage增加字段flagGPU,当flagGPU为真时,表明该stage中包含需要GPU资源的RDD;通过设置flagGPU字段,在下一步的资源分配中,能够被任务管理器识别并为其分配GPU资源。
4.根据权利要求3所述的基于Spark与GPU的并行计算***,其特征在于,在Spark内部的作业调度器DAGScheduler中进行标识stage类型的流程如下:
(1)DAG生成后,划分stage;在生成stage时,检测该stage内部所包含的RDD的flagGPU字段是否为真,如果是,则说明该stage在执行过程中需要GPU资源,标记该stage的flagGPU字段为真;作为以后任务管理器进行GPU资源分配的依据;
(2)执行引擎提交stage的算法是一个递归的过程,首先提交DAG图中的最后一个stage,然后检查该stage的父stage是否都已提交完毕,如果全部提交则开始执行此次stage所对应的任务集;如果其父stage有的没有提交,则递归提交其父stage,并同样作出上述检查;所以最终的结果是按照DAG图,从前往后执行stage;
(3)提交stage后,任务管理器开始将该stage划分成任务集,并向集群管理器申请执行所需的资源;任务集中所包含的任务数量与RDD的分区数量相同;任务管理器首先检测该stage的flagGPU字段是否为真,如果是,则为其分配包含GPU资源的container;在进行该container的分配时,如果有多个container可以选择,则根据本地化策略进行判断,即依次选择本地节点、本机架的其它节点及其他机架节点;然后在资源所在节点中启动任务,并将任务中间结果与最终结果存入存储体系中;这个过程中,如果包含GPU资源的container数量少于GPU型任务的数量,则暂未分配GPU资源的任务需要等待,待其他任务执行完毕,有GPU资源处于空闲状态时则进行分配;
(4)在任务执行完毕后,归还资源;将回收的container加入待分配列表中,以分配给其他任务使用。
5.根据权利要求4所述的基于Spark与GPU的并行计算***,其特征在于,提出一种针对GPU型任务的有效的编程模型:
在Spark中,RDD中的数据由若干个分区组成,其最终以分区为单位被分配到若干个节点中完成计算;根据分区数据执行粒度,将利用Spark进行GPU计算的类型主要分为两种:
(1)以分区为单位完成GPU计算,即将RDD分区中的数据全部放入GPU中以完成并行计算,以提高程序执行效率;
(2)以单个记录为单位完成GPU计算,即将RDD分区中的数据逐个放入GPU中完成计算,以单个记录为单位进行加速处理。
6.根据权利要求4所述的基于Spark与GPU的并行计算***,其特征在于,新增加的mapPartitionsGPU算子能够感知GPU型任务,以分区数据作为输入进行处理;该算子的主要执行逻辑如下:
(1)首先在方法中初始化GPU设备;
(2)然后判断对分区数据执行的粒度是以分区为单位还是以单条记录为单位;如果是以分区单位,那么利用CUDA API将分区数据传输到GPU显存中,这个过程可能涉及数据格式的转换,将RDD中分区数据转换成成能够被GPU处理的数据格式;然后调用GPU核函数对数据进行并行计算;在计算完成后,将输出结果传输至内存中;如果分区数据执行的粒度是以单条记录为单位,那么对逐个对每个分区记录顺序处理;每次拷贝一个记录数据至GPU显存中,调用GPU核函数对数据进行并行计算;在计算完成后,将输出结果拷贝至内存中;在全部记录处理完毕后,将整个记录的输出结果转换成一个分区集合;
(3)释放GPU设备,并且返回分区集合迭代器。
CN201710270400.8A 2017-04-24 2017-04-24 一种基于Spark与GPU的并行计算*** Pending CN107168782A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710270400.8A CN107168782A (zh) 2017-04-24 2017-04-24 一种基于Spark与GPU的并行计算***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710270400.8A CN107168782A (zh) 2017-04-24 2017-04-24 一种基于Spark与GPU的并行计算***

Publications (1)

Publication Number Publication Date
CN107168782A true CN107168782A (zh) 2017-09-15

Family

ID=59813923

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710270400.8A Pending CN107168782A (zh) 2017-04-24 2017-04-24 一种基于Spark与GPU的并行计算***

Country Status (1)

Country Link
CN (1) CN107168782A (zh)

Cited By (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108596824A (zh) * 2018-03-21 2018-09-28 华中科技大学 一种基于gpu优化富元数据管理的方法和***
CN108652610A (zh) * 2018-06-04 2018-10-16 成都皓图智能科技有限责任公司 一种多人心跳的非接触式检测方法
CN108762921A (zh) * 2018-05-18 2018-11-06 电子科技大学 一种Spark集群***的在线优化分区的任务调度方法及装置
CN109032809A (zh) * 2018-08-13 2018-12-18 华东计算技术研究所(中国电子科技集团公司第三十二研究所) 基于遥感影像存储位置的异构并行调度***
CN109086137A (zh) * 2018-08-06 2018-12-25 清华四川能源互联网研究院 Gpu并行计算资源配置方法及装置
CN109254851A (zh) * 2018-09-30 2019-01-22 武汉斗鱼网络科技有限公司 一种调度gpu的方法及相关装置
CN109743453A (zh) * 2018-12-29 2019-05-10 出门问问信息科技有限公司 一种分屏显示方法及装置
CN109977306A (zh) * 2019-03-14 2019-07-05 北京达佳互联信息技术有限公司 广告引擎的实现方法、***、服务器及介质
CN109995965A (zh) * 2019-04-08 2019-07-09 复旦大学 一种基于fpga的超高分辨率视频图像实时校准方法
CN110018817A (zh) * 2018-01-05 2019-07-16 中兴通讯股份有限公司 数据的分布式运行方法及装置、存储介质及处理器
CN110109747A (zh) * 2019-05-21 2019-08-09 北京百度网讯科技有限公司 基于Apache Spark的数据交换方法及***、服务器
CN110134521A (zh) * 2019-05-28 2019-08-16 北京达佳互联信息技术有限公司 资源分配的方法、装置、资源管理器及存储介质
CN110351384A (zh) * 2019-07-19 2019-10-18 深圳前海微众银行股份有限公司 大数据平台资源管理方法、装置、设备及可读存储介质
CN110442446A (zh) * 2019-06-29 2019-11-12 西南电子技术研究所(中国电子科技集团公司第十研究所) 实时处理高速数字信号数据流的方法
CN110458294A (zh) * 2019-08-19 2019-11-15 Oppo广东移动通信有限公司 模型运行方法、装置、终端及存储介质
CN110704186A (zh) * 2019-09-25 2020-01-17 国家计算机网络与信息安全管理中心 基于混合分布架构的计算资源分配方法、装置和存储介质
CN110795219A (zh) * 2019-10-24 2020-02-14 华东计算技术研究所(中国电子科技集团公司第三十二研究所) 适用于多种计算框架的资源调度方法及***
CN110879753A (zh) * 2019-11-19 2020-03-13 ***通信集团广东有限公司 基于自动化集群资源管理的gpu加速性能优化方法和***
CN110955526A (zh) * 2019-12-16 2020-04-03 湖南大学 一种用于在分布式异构环境下实现多gpu调度的方法和***
CN111240844A (zh) * 2020-01-13 2020-06-05 星环信息科技(上海)有限公司 一种资源调度方法、设备及存储介质
CN111314401A (zh) * 2018-12-12 2020-06-19 百度在线网络技术(北京)有限公司 资源配置方法、装置、***、终端和计算机可读存储介质
CN111400035A (zh) * 2020-03-04 2020-07-10 杭州海康威视***技术有限公司 一种显存分配方法、装置、电子设备及存储介质
CN111656323A (zh) * 2018-01-23 2020-09-11 派泰克集群能力中心有限公司 应用运行时确定的异构计算资源的动态分配
CN112035261A (zh) * 2020-09-11 2020-12-04 杭州海康威视数字技术股份有限公司 数据处理方法及***
CN112711448A (zh) * 2020-12-30 2021-04-27 安阳师范学院 一种基于Agent技术的并行构件组装及性能优化方法
CN112835996A (zh) * 2019-11-22 2021-05-25 北京初速度科技有限公司 一种地图生产***及其方法
CN113515361A (zh) * 2021-07-08 2021-10-19 中国电子科技集团公司第五十二研究所 一种面向服务的轻量级异构计算集群***
CN113808001A (zh) * 2021-11-19 2021-12-17 南京芯驰半导体科技有限公司 一种单***同时支持多gpu工作的方法及***
CN114840125B (zh) * 2022-03-30 2024-04-26 曙光信息产业(北京)有限公司 设备资源配置、管理方法、装置、设备、介质和程序产品

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104407921A (zh) * 2014-12-25 2015-03-11 浪潮电子信息产业股份有限公司 一种基于时间的yarn任务资源动态调度方法
CN105022670A (zh) * 2015-07-17 2015-11-04 中国海洋大学 一种云计算平台中的异构分布式任务处理***及其处理方法
EP3067797A1 (en) * 2015-03-12 2016-09-14 International Business Machines Corporation Creating new cloud resource instruction set architecture
CN106506266A (zh) * 2016-11-01 2017-03-15 中国人民解放军91655部队 基于GPU、Hadoop/Spark混合计算框架的网络流量分析方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104407921A (zh) * 2014-12-25 2015-03-11 浪潮电子信息产业股份有限公司 一种基于时间的yarn任务资源动态调度方法
EP3067797A1 (en) * 2015-03-12 2016-09-14 International Business Machines Corporation Creating new cloud resource instruction set architecture
CN105022670A (zh) * 2015-07-17 2015-11-04 中国海洋大学 一种云计算平台中的异构分布式任务处理***及其处理方法
CN106506266A (zh) * 2016-11-01 2017-03-15 中国人民解放军91655部队 基于GPU、Hadoop/Spark混合计算框架的网络流量分析方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
刘德波: "基于YARN的GPU集群***研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *
郑伟: "Spark下MPI/GPU并行计算处理机制的研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Cited By (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110018817A (zh) * 2018-01-05 2019-07-16 中兴通讯股份有限公司 数据的分布式运行方法及装置、存储介质及处理器
CN111656323A (zh) * 2018-01-23 2020-09-11 派泰克集群能力中心有限公司 应用运行时确定的异构计算资源的动态分配
CN108596824A (zh) * 2018-03-21 2018-09-28 华中科技大学 一种基于gpu优化富元数据管理的方法和***
CN108762921A (zh) * 2018-05-18 2018-11-06 电子科技大学 一种Spark集群***的在线优化分区的任务调度方法及装置
CN108652610A (zh) * 2018-06-04 2018-10-16 成都皓图智能科技有限责任公司 一种多人心跳的非接触式检测方法
CN109086137A (zh) * 2018-08-06 2018-12-25 清华四川能源互联网研究院 Gpu并行计算资源配置方法及装置
CN109032809A (zh) * 2018-08-13 2018-12-18 华东计算技术研究所(中国电子科技集团公司第三十二研究所) 基于遥感影像存储位置的异构并行调度***
CN109254851A (zh) * 2018-09-30 2019-01-22 武汉斗鱼网络科技有限公司 一种调度gpu的方法及相关装置
CN111314401A (zh) * 2018-12-12 2020-06-19 百度在线网络技术(北京)有限公司 资源配置方法、装置、***、终端和计算机可读存储介质
CN109743453A (zh) * 2018-12-29 2019-05-10 出门问问信息科技有限公司 一种分屏显示方法及装置
CN109977306B (zh) * 2019-03-14 2021-08-20 北京达佳互联信息技术有限公司 广告引擎的实现方法、***、服务器及介质
CN109977306A (zh) * 2019-03-14 2019-07-05 北京达佳互联信息技术有限公司 广告引擎的实现方法、***、服务器及介质
CN109995965B (zh) * 2019-04-08 2021-12-03 复旦大学 一种基于fpga的超高分辨率视频图像实时校准方法
CN109995965A (zh) * 2019-04-08 2019-07-09 复旦大学 一种基于fpga的超高分辨率视频图像实时校准方法
CN110109747B (zh) * 2019-05-21 2021-05-14 北京百度网讯科技有限公司 基于Apache Spark的数据交换方法及***、服务器
CN110109747A (zh) * 2019-05-21 2019-08-09 北京百度网讯科技有限公司 基于Apache Spark的数据交换方法及***、服务器
CN110134521A (zh) * 2019-05-28 2019-08-16 北京达佳互联信息技术有限公司 资源分配的方法、装置、资源管理器及存储介质
CN110442446B (zh) * 2019-06-29 2022-12-13 西南电子技术研究所(中国电子科技集团公司第十研究所) 实时处理高速数字信号数据流的方法
CN110442446A (zh) * 2019-06-29 2019-11-12 西南电子技术研究所(中国电子科技集团公司第十研究所) 实时处理高速数字信号数据流的方法
CN110351384A (zh) * 2019-07-19 2019-10-18 深圳前海微众银行股份有限公司 大数据平台资源管理方法、装置、设备及可读存储介质
CN110458294A (zh) * 2019-08-19 2019-11-15 Oppo广东移动通信有限公司 模型运行方法、装置、终端及存储介质
CN110458294B (zh) * 2019-08-19 2022-02-25 Oppo广东移动通信有限公司 模型运行方法、装置、终端及存储介质
CN110704186B (zh) * 2019-09-25 2022-05-24 国家计算机网络与信息安全管理中心 基于混合分布架构的计算资源分配方法、装置和存储介质
CN110704186A (zh) * 2019-09-25 2020-01-17 国家计算机网络与信息安全管理中心 基于混合分布架构的计算资源分配方法、装置和存储介质
CN110795219A (zh) * 2019-10-24 2020-02-14 华东计算技术研究所(中国电子科技集团公司第三十二研究所) 适用于多种计算框架的资源调度方法及***
CN110795219B (zh) * 2019-10-24 2022-03-18 华东计算技术研究所(中国电子科技集团公司第三十二研究所) 适用于多种计算框架的资源调度方法及***
CN110879753A (zh) * 2019-11-19 2020-03-13 ***通信集团广东有限公司 基于自动化集群资源管理的gpu加速性能优化方法和***
CN110879753B (zh) * 2019-11-19 2024-04-05 ***通信集团广东有限公司 基于自动化集群资源管理的gpu加速性能优化方法和***
CN112835996A (zh) * 2019-11-22 2021-05-25 北京初速度科技有限公司 一种地图生产***及其方法
CN110955526A (zh) * 2019-12-16 2020-04-03 湖南大学 一种用于在分布式异构环境下实现多gpu调度的方法和***
CN111240844A (zh) * 2020-01-13 2020-06-05 星环信息科技(上海)有限公司 一种资源调度方法、设备及存储介质
CN111400035A (zh) * 2020-03-04 2020-07-10 杭州海康威视***技术有限公司 一种显存分配方法、装置、电子设备及存储介质
CN112035261A (zh) * 2020-09-11 2020-12-04 杭州海康威视数字技术股份有限公司 数据处理方法及***
CN112711448A (zh) * 2020-12-30 2021-04-27 安阳师范学院 一种基于Agent技术的并行构件组装及性能优化方法
CN113515361A (zh) * 2021-07-08 2021-10-19 中国电子科技集团公司第五十二研究所 一种面向服务的轻量级异构计算集群***
CN113808001A (zh) * 2021-11-19 2021-12-17 南京芯驰半导体科技有限公司 一种单***同时支持多gpu工作的方法及***
CN114840125B (zh) * 2022-03-30 2024-04-26 曙光信息产业(北京)有限公司 设备资源配置、管理方法、装置、设备、介质和程序产品

Similar Documents

Publication Publication Date Title
CN107168782A (zh) 一种基于Spark与GPU的并行计算***
WO2021208546A1 (zh) Kubernetes集群架构***下多维资源调度方法
CN109885389B (zh) 一种基于容器的并行深度学习调度训练方法及***
US7945913B2 (en) Method, system and computer program product for optimizing allocation of resources on partitions of a data processing system
CN111344688B (zh) 云计算中资源提供的方法及***
CN101727357B (zh) 用于分配计算中心中资源的方法和装置
US11816509B2 (en) Workload placement for virtual GPU enabled systems
CN108762896A (zh) 一种基于Hadoop集群任务调度方法及计算机设备
CN112416585B (zh) 面向深度学习的gpu资源管理与智能化调度方法
US20070226743A1 (en) Parallel-distributed-processing program and parallel-distributed-processing system
US8527988B1 (en) Proximity mapping of virtual-machine threads to processors
CN108572873A (zh) 一种解决Spark数据倾斜问题的负载均衡方法及装置
CN102937918A (zh) 一种hdfs运行时数据块平衡方法
US20240111586A1 (en) Multi-policy intelligent scheduling method and apparatus oriented to heterogeneous computing power
CN110990154B (zh) 一种大数据应用优化方法、装置及存储介质
CN114356543A (zh) 一种基于Kubernetes的多租户机器学习任务资源调度方法
CN104881322A (zh) 一种基于装箱模型的集群资源调度方法及装置
CN115994567A (zh) 一种深度神经网络模型并行计算任务异步调度方法
US20210390405A1 (en) Microservice-based training systems in heterogeneous graphic processor unit (gpu) cluster and operating method thereof
CN111061565A (zh) 一种Spark环境下的两段式流水线任务调度方法及***
CN102184124B (zh) 任务调度方法及***
CN112306642A (zh) 一种基于稳定匹配博弈理论的工作流调度方法
CN107423114A (zh) 一种基于服务分类的虚拟机动态迁移方法
CN115361349B (zh) 资源使用方法和装置
CN113419827A (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
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20170915