你好,欢迎访问达普芯片交易网!|  电话:010-82614113

达普芯片交易网 > 新闻资讯 > 设计应用

详细解析众核多计算模式系统的构建

发布时间:2018-08-02

在航空航天、医疗服务、地质勘探等复杂应用领域,需要处理的数据量急剧增大,需要高性能的实时计算能力提供支撑。与多核处理器相比,众核处理器计算资源密度更高、片上通信开销显着降低、性能/功耗比明显提高,可为实时系统提供强大的计算能力。

在复杂应用领域当中,不同应用场景对计算的需求可能不同。例如,移动机器人在作业时,可能需要同时执行路径规划、目标识别等多个任务,这些任务需要同时执行;在对遥感图像处理时,需要对图像数据进行配准、融合、重构、特征提取等多个步骤,这些步骤间既需要同时执行,又存在前驱后继的关系。因此,基于众核处理器进行计算模式的动态构造,以适应不同的应用场景和应用任务成为一种新的研究方向。文献[1]研究了具有逻辑核构造能力的众核处理器体系结构,其基本思想是基于多个细粒度处理器核构建成粗粒度逻辑核,将不断增加的处理器核转化为单线程串行应用的性能提升。文献提出并验证了一种基于类数据流驱动模型的可重构众核处理器结构,实现了逻辑核处理器的运行时可重构机制。文献 提出了一种支持核资源动态分组的自适应调度算法,通过对任务簇的拆分与合并,动态构建可弹性分区的核逻辑组,实现核资源的隔离优化访问。

GPGPU(General - Purpose Computing on GraphicsProcessing Units)作为一种典型的众核处理器,有关研究多面向单任务并发执行方面的优化以及应用算法的加速。本文以GPGPU为平台,通过研究和设计,构建了单任务并行、多任务并行和多任务流式处理的多计算模式处理系统。

1 众核处理机

1.1 众核处理机结构

众核处理机是基于众核控制单元(MPU)与众核处理器(GPGPU)相结合的主、协处理方式构建而成,其逻辑结构如图1所示。众核处理机由众核控制单元和众核计算单元两部分组成,其中众核控制单元采用X86结构的MPU,与众核计算单元之间通过PCI-E总线进行互连。


1.2 CUDA流与Hyper-Q

在统一计算设备架构(Compute Unified Device Ar-chitecture,CUDA)编程模型中,CUDA流(CUDA Stream)表示GPU的一个操作队列,通过CUDA流来管理任务和并行。CUDA 流的使用分为两种:一种是CUDA 在创建上下文时会隐式地创建一个CUDA流,从而命令可以在设备中排队等待执行;另一种是在编程时,在执行配置中显式地指定CUDA 流。不管以何种方式使用CUDA流,所有的操作在CUDA流中都是按照先后顺序排队执行,然后每个操作按其进入队列的顺序离开队列。换言之,队列充当了一个FIFO(先入先出)缓冲区,操作按照它们在设备中的出现顺序离开队列。

在GPU 中,有一个CUDA 工作调度器(CUDA WorkDistributor,CWD)的硬件单元,专门负责将计算工作分发到不同的流处理器中。在Fermi架构中,虽然支持16 个内核的同时启动,但由于只有一个硬件工作队列用来连接主机端CPU 和设备端GPU,造成并发的多个CUDA 流中的任务在执行时必须复用同一硬件工作队列,产生了虚假的流内依赖关系,必须等待同一CUDA流中相互依赖的kernel执行结束,另一CUDA流中的ker-nel才能开始执行。而在Kepler GK110架构中,新具有的Hyper-Q特性消除了只有单一硬件工作队列的限制,增加了硬件工作队列的数量,因此,在CUDA 流的数目不超过硬件工作队列数目的前提下,允许每个CUDA流独占一个硬件工作队列,CUDA流内的操作不再阻塞其他CUDA流的操作,多个CUDA流能够并行执行。

如图2 所示,当利用Hyper-Q 和CUDA 流一起工作时,虚线上方显示为Fermi模式,流1、流2、流3 复用一个硬件工作队列,而虚线下方为Kepler Hyper-Q 模式,允许每个流使用单独的硬件工作队列同时执行。


2 众核多计算模式处理框架

为了充分发挥众核处理器的计算能力,众核处理系统面对不同的计算任务的特点,可构建三种计算模式,即单任务并行计算、多任务并行计算、多任务流式计算。

2.1 众核多计算模式处理系统结构

众核多计算模式处理系统结构如图3 所示。众核处理系统包括数据通信、任务管理、形态管理、资源管理和控制监听模块。


数据通信模块:提供接口给主控机,负责接收从主控机发送来的任务命令和任务计算所需的任务数据,并且最终将众核处理机运算完成的计算结果通过该模块返回给主控机。

控制监听模块:在众核处理系统运行时,实时获取主控机发送给众核处理机的任务命令,将其传送给任务管理模块,并接收任务管理模块返回的任务命令执行结果。

任务管理模块:负责计算任务的加载过程,将控制监听模块发送来的任务命令存于任务队列,当众核计算单元需要加载任务进行计算时,从任务队列中获取任务命令,根据任务命令从任务配置文件中获取任务计算所需的任务信息,该任务信息包含了计算任务运行时所需的存储空间大小、适合于该任务的计算模式、执行函数(即CUDA中的kernel函数)等内容,在计算任务在被加载前,需要通知形态管理模块把众核计算单元切换到指定的计算模式下,并通知资源管理模块分配存储空间,通过数据通信模块获取任务数据,然后读取任务计算库,加载执行函数进行计算。

形态管理模块:接收任务管理模块发送来的目标计算模式,切换到该种计算模式。

资源管理模块:根据任务管理模块发送的参数分配存储空间,包括众核控制单元的存储空间和众核计算单元的存储空间,众核控制单元的存储空间用于对任务数据进行缓存,然后通过数据传输的API接口把缓存在众核控制单元的数据传送到众核计算单元的存储空间,在计算时由从众核计算单元存储空间加载数据进行计算。

热点排行

在线人工客服

点击这里给我发消息

点击这里给我发消息

点击这里给我发消息

010-82614113

客服在线时间周一至周五
9:00-17:30