首页 / 一种异构架构并行编程模型优化系统

一种异构架构并行编程模型优化系统公开 发明

技术领域

[0001] 本发明涉及异构架构并行编程模型优化技术领域,具体为一种异构架构并行编程模型优化系统。

相关背景技术

[0002] 目前科研工程等领域的应用对计算能力(简称算力)的需求越来越大,计算体系结构创新的内涵有两个方面:其一是规模,即由单核转向多核并行计算,传统的高性能计算研究聚焦在单核性能上,当前则是依靠多核集群,集中分布式算力,通过规模化效应提升算力;其二是架构,如中央处理器(Center Process Unit,CPU)、图像处理器(Graph Process Unit,GPU)和可编程门阵列(Field Program Gate Array,FPGA)等计算器件均有各自擅长的处理领域,按照一定组织方式组成多核异构的系统;每种计算器件有各自计算存储模型,不同计算器件的组合使得系统具有异构性。
[0003] 目前,混合两种及两种以上计算器件的多核异构芯片、系统、集群都已经出现,通过组合不同的计算器件,从性能、功耗等方面的需求出发,通过新型计算体系架构将硬件性能发挥到极致,异构计算器件组合可以满足多样化的计算任务需求,但是,器件集成在同一系统并不意味着算力相加,包含不同计算器件,但是各个计算器件的计算、存储和连接等均有独立标准,异构器件之间的任务划分、调度、通信、存储、同步等机制的不同为系统管理带来新的问题,若不解决这些问题,异构系统难以发挥其理论上的性能和能耗优势,异构特征反而会成为系统负担;
[0004] 异构计算架构是目前高性能计算研究的重要领域,在异构计算架构中,不同种类的计算器件协同工作需要解决如任务调度、数据通信、存储、同步优化等问题,这些问题会对异构计算架构系统的运行性能、功耗、可靠性等指标产生重要影响,异构计算架构模型把底层硬件抽象表示,提供统一编程接口,解决异构系统并行计算、存储、通信等一系列问题,主流的异构计算架构,例如,OpenCL、CUDA等,这类异构计算编程模型接口相对低级,开发者需大量手工操作实现细节优化,这不仅增加编程难度导致较低开发效率,也会导致适用性差、易出错等问题,本申请拟提供一种异构架构并行编程模型优化系统,基于现有编程框架改进或扩展,通过封装编程接口降低编程难度,提高现有异构编程框架的可用性,适配CPU/GPU/NPU等高性能处理器构建异构计算架构。

具体实施方式

[0031] 本发明实施例公开一种异构架构并行编程模型优化系统,如图1‑7所示,为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,并通过实施例的方式,对本发明实施例中的技术方案进行清楚、完整地描述。
[0032] 实施例一、
[0033] 如图1‑7所示一种异构架构并行编程模型优化系统,该优化系统采用显式异构编程模型方案,构建异构计算架构,多数异构编程模型针对特定架构,例如CPU+GPU的架构,异构系统处理任务划分、调度、通信、同步等问题,对应大量的编程接口,异构编程模型以显式编程形式实现异构系统优化,采用Host/Device的分工形式,Host运行CPU的控制代码,Device运行加速设备的代码,将复杂的编程接口简化,构建结构化的编程框架,提供编程接口和调度算法,将编程框架分为三个部分:硬件模型、软件模型和映射模型,硬件模型识别系统中的计算设备,软件模型为编程和任务划分调度提供支持,映射模型实现从任务到设备的映射,从而实现流水线混合并行的优化处理流程,加速GPU之间的流水线混合并行,减少通信延迟和内存使用频率,同时从编程难度、计算性能、并行规模3个维度出发,对异构架构并行编程模型进行优化。
[0034] 优选的,所述硬件模型异构计算系统所拥有不同种类的硬件设备,包括CPU、GPU、NPU、DSP或FPGA加速器等,通过识别系统中的计算设备,并对设备的特点、计算能力和互连关系进行建模,而每个硬件设备都依附在一个板卡上,多个板卡构成一个计算节点,每个计算系统可能包括不同层级的计算节点,因此从单个计算设备到系统形成了一个树状的层级结构,命名为设备树。
[0035] 优选的,所述设备树分为系统、平台、设备三个层次,将同一厂商生产的支持相同编程框架的设备归为一个平台,设备树的最底层为设备,与异构计算系统中的硬件一一对应,对设备树上的每个设备或每组设备进行命名,用户可以通过名字指定设备或设备组来执行任务,从而实现硬件实体到软件对象的一一对应,为调度算法提供设备集合,在编程中体现为编程接口。
[0036] 优选的,所述软件模型的任务是明确当前的计算任务,任务与任务之间的关系,任务的输入和输出,软件模型提供任务级的结构化并行编程接口,任务级并行编程模型的目的是简化并行编程并且提高多核利用率,任务并行编程模型的基本单位是并行的任务,它提供了任务的划分和同步的编程接口,用户可以通过编程接口把应用程序划分成大量的细粒度任务,任务创建、管理和调度由运行时系统负责,异构计算系统中不同的设备之间通常承担不同的计算任务。
[0037] 优选的,所述任务级编程模型适用于异构计算系统的并行任务描述,使用结构化的并行编程方法来降低并行程序的复杂性以CoBegin和Future两种并行结构为例;
[0038] CoBegin的语义为:多个任务并发执行,父任务需要等待所有的子任务执行结束后才能继续执行,并行的子任务之间可以共享读操作;CoBegin可以多层嵌套使用,CoBegin{…}CoEnd包含的部分代码段为一个CoBegin块;
[0039] Future的语义为父任务创建子任务后继续执行,直到某个节点需要使用子任务的结果时,才对子任务进行查询;若子任务已执行结束,直接获取任务结果,否则将等待至子任务结束,Future{…}包含的部分为一个Future块,通过get()方法获取Future块的执行结果;
[0040] 所述任务级编程模型对PyOpenCL中一些复杂的方法进行封装,同时增加了并行结构,增加了与编程者的交互,更快更便捷地使用PyOpenCL中对OpenCL的调用,开发者只需要定义任务和结构,并选择异构计算需要的硬件,就能够快速地完成并发任务的描述和映射。
[0041] 优选的,所述映射模型是通过脚本语言指定执行任务的设备和映射方式,共为四种映射方式,分别为一对一映射、一对多映射、多对一映射、多对多映射,通过模型提供的编程接口指定任务和设备的映射方式,四项任务与设备的N对M的映射,设备可以是同个平台上的多个设备,也可以是不同平台上的多个设备,同时在多对一映射和多对多映射中,多个任务之间若存在着数据依赖关系,用户需自行定义这些任务的并行结构。
[0042] 优选的,所述优化系统在生成执行机器码过程中,采用SPIR中间表示,SPIR作为LLVMIR的二进制中间语言,用于图形计算和内核计算,LLVM可以作为多种语言编译器的后台来使用,将代码编译成多种不同硬件架构的指令集,适配不同的异构计算资源,所述异构编程语言可分为非托管式的和托管式的,基于Java语言设计异构并行计算编程架构,以高级抽象的方式管理硬件资源,并在内部运行时系统进行中间优化操作,同时提供Python封装接口,使用PyOpenCL调用接口,用于异构粗粒度硬件构建、编译和生成机器码,解决异构可重构平台的可访问性问题。
[0043] 优选的,所述优化系统运行时,自动为每个设备选择和部署合适的内核,管理数据移动并隐藏启动细节,高度并行异构系统需要处理好粗粒度并行和细粒度并行,混合粗粒度和细粒度并行的编程框架,采用通用、混合和优化稀疏的工具包,按照MPI+X的范式,为多核计算器件提供内核和资源管理,采用MPI+OpenMP+CUDA(MOC)混合并行编程模型,通过基于节点间(粗粒度)和节点内(细粒度)的并行处理架构实现CPU和GPU协作的大规模异构并行计算,同时提出MPI+OpenMP+OpenCL的并行化方法,增强异构系统的数据可移植性。
[0044] 优选的,所述优化系统的关键点在于如何提高资源利用率和减少通信开销,通过线性规划方法,根据处理器类型和时间表约束进行任务调度,最小化通信延迟和能耗,以评价函数为标准通过不断迭代找到最优解,采用混合双目标并行遗传算法,采用加权求和的方法,根据用户的偏好平衡能耗和执行时间,基于搜索的调度算法,通过剪枝技术缩小搜索空间,通过启发式函数指导最优解搜索;
[0045] 同时使用混合的元启发式集合方法,寻找异构系统的最优帕累托映射方案,同时优化执行时间和能耗,动态调度方法通过感知系统能耗,动态实时调度子任务,把能耗感知作为大规模异构计算环境中并行调度策略的重要参考依据,将不同并行层级任务映射到目标计算平台,将动态电压频率标度和动态功率管理等系统参数量化,基于多目标全局优化元启发式算法,研究能耗感知和融合能效感知的调度模型。
[0046] 优选的,所述减少通信开销异是通过采用动态二进制转换任务迁移方法,减少因数据转换造成的开销,采用空间域分解和射线并行相结合的方法进行异构并行计算,使MPI通信时间与GPU上的传输扫描时间重叠,隐藏GPU与CPU之间的通信和数据传输时间,通过性能分析模型识别性能影响因素,实现数据计算与数据传递操作相互重叠,本课题提出流水线混合并行的优化方法,加速GPU之间的流水线混合并行,减少通信延迟和内存使用频率。
[0047] 该异构架构并行编程模型优化系统,采用显式异构编程模型方案,构建异构计算架构,多数异构编程模型针对特定架构,异构系统处理任务划分、调度、通信、同步等问题,对应大量的编程接口,异构编程模型以显式编程形式实现异构系统优化,采用Host/Device的分工形式,Host运行CPU的控制代码,Device运行加速设备的代码,将复杂的编程接口简化,构建结构化的编程框架,提供编程接口和调度算法,将编程框架分为三个部分:硬件模型、软件模型和映射模型,硬件模型识别系统中的计算设备,软件模型为编程和任务划分调度提供支持,映射模型实现从任务到设备的映射,从而实现流水线混合并行的优化处理流程,加速GPU之间的流水线混合并行,减少通信延迟和内存使用频率,同时从编程难度、计算性能、并行规模3个维度出发,对异构架构并行编程模型进行优化。
[0048] 以上显示和描述了本发明的基本原理和主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。

当前第1页 第1页 第2页 第3页