当前位置: 首页 > 专利查询>湖南大学专利>正文

一种基于Linux的片上CPU/GPU流水化计算方法及计算机系统技术方案

技术编号:24251283 阅读:80 留言:0更新日期:2020-05-22 23:26
本发明专利技术公开一种基于Linux的片上CPU/GPU流水化计算方法计算机系统,包括步骤:对任务按照流水线最大利用率进行重排序;在对所述缓存发起写请求任务完成后进行缓存刷新;在所述GPU计算核心空闲时,将所述任务中的所述并行计算型任务派发给所述GPU计算核心;在所述CPU计算核心空闲时,将所述任务中的所述串行、IO或者逻辑型任务派发给所述CPU计算核心;将任务数据规约到对应的发起CPU中,由CPU进行后续数据处理。从而使得片上异构多核计算系统同时兼顾CPU和GPU核心的不同计算特性并且能充分利用设备中各部分计算结构,具有性能高、计算利用率高的优点。

A pipeline computing method and computer system of CPU / GPU on chip based on Linux

【技术实现步骤摘要】
一种基于Linux的片上CPU/GPU流水化计算方法及计算机系统
本专利技术涉及计算机
,具体涉及一种基于Linux的片上CPU/GPU流水化计算方法及计算机系统。
技术介绍
随着大规模集成电路的发展以及移动互联网、人工智能的大量应用,单纯的中央处理器(CentralProcessingUnit,CPU)计算已经很难满足计算需求,异构计算系统应运而生。异构多核架构,即在同一芯片上集成多个CPU和图形处理器(GraphicsProcessingUnit,GPU)作为一种先进体系结构逐渐成为主流。现代的内存系统,主要是依据访存请求的局部性原理降低功耗和提高性能,异构多核架构下的CPU和GPU共享片上主存,所以来自不同内核的内存请求会争夺共享内存资源,相互干扰,单个应用程序的访存请求的局部性逐渐消失,从而严重影响到整体系统性能。现有技术中在CPU/GPU异构混合并行系统进行任务调度的研究一般是采取对各种类型硬件的计算能力或者是任务在各类处理器上的运行时间进行预测,然后进行一次性任务分配。这种方法缺项明显,因此预测可能不够准确,会造成各个计算节点的结束时间不一致,造成有些节点有长尾现象,其他节点可能在最后阶段空闲,没有充分发挥集群的计算能力,任务完成时间没有达到最短。当前在操作系统(OS)中,还没有专门为GPU提供任务调度机制。由于GPU任务需要由CPU任务发起,因此,OS将所有任务统一视为CPU任务调度执行。这种调度方式,无法充分利用CPU-GPU计算中流水的各个组件,由于以共享内存为桥梁的传输组件与CPU和GPU的计算组件相比具有更大的延时,因此,一方面会让流水线中的一部分组件空闲,另一方面,会使得整个系统的性能下降。为了避免这种情况,会要求程序员手动排布任务,通过计算掩藏掉流水中传输引起的延迟。片上系统(SoC)通常集成了不同的计算核心,如CPU、GPU、FPGA、DSP等。例如手机、游戏机、应用于无人驾驶的车载计算机等对图像、视频处理等应用有较高要求的设备,通常片上集成了多核CPU和GPU;专用人工智能芯片则通常集成了多核CPU和FPGA。这些计算核心在不同的任务类型上性能有较大差别,例如,CPU更适合进行逻辑、IO等低延迟的串行计算;GPU则更适合大规模高吞吐的并行计算。CPU与GPU共享内存,在计算过程中存在CPU内存使用、GPU内存使用,CPU/GPU通信交互的内存使用,使得系统在一定程度上存在竞争;第三,大量任务在CPU、共享内存、GPU三者之间流动需要一种合理的调度与流水化才能使各个组件的利用率达到最优。因此,如何进行多核CPU/GPU计算系统中的流水化,是有效利用异构系统的各组件资源的关键。
技术实现思路
本专利技术的主要目的是提供一种,旨在基于Linux的片上CPU/GPU流水化计算方法及计算机系统,以解决现有的片上异构CPU/GPU系统缺乏良好的流水化任务执行机制,无法充分利用CPU-GPU计算中存在的流水组件,将影响系统的整体效率的技术问题。为实现上述目的,本专利技术提出的一种基于Linux的片上CPU/GPU流水化计算方法,包括步骤:S1,根据预设的任务依赖算法以及任务的执行类型对所述任务进行排序,对排序后的所述任务按照流水线最大利用率进行重排序,其中所述执行类型包括并行计算型任务,以及串行、IO或者逻辑型任务;S2,对缓存进行缓存状态查询,在对所述缓存发起写请求任务完成后进行缓存刷新;S31,根据GPU计算核心的计算状态以及所述任务的重排序结果,在所述GPU计算核心空闲时,将所述任务中的所述并行计算型任务派发给所述GPU计算核心;S32,根据CPU计算核心的计算状态以及所述任务的重排序结果,在所述CPU计算核心空闲时,将所述任务中的所述串行、IO或者逻辑型任务派发给所述CPU计算核心;S4,将所述GPU计算核心处理的任务数据和所述CPU计算核心处理的任务数据规约到对应的发起CPU中,由CPU进行后续数据处理。更优地,所述步骤S1具体包括:根据所述预设的任务依赖算法对所述任务绘制任务图,对所述任务图进行拓扑排序;根据所述任务的所述执行类型,将所述拓扑排序后的所述任务中的所述串行、IO或者逻辑型任务存入CPU任务队列,以及将所述拓扑排序后的所述任务中的所述并行计算型任务存入GPU任务队列;对排序后的所述CPU任务队列以及所述GPU任务队列按照流水线最大利用率进行重排序。更优地,所述GPU任务队列中的任务的任务优先级高于所述CPU任务队列中任务的任务优先级;所述GPU任务队列中的任务的发射优先级高于所述CPU任务队列中任务的发射优先级。更优地,所述步骤S31中包括:判断所述CPU计算核心中的发射CPU核心是否空闲、判断系统共享内存是否足够且存在空余内存带宽、以及判断所述GPU计算核心中的流处理器是否空闲;在所述发射CPU核心空闲、所系统共享内存足够且存在空余内存带宽、或者所述GPU计算核心中的流处理器空闲三个条件中至少一个满足时,将所述GPU任务中的所述并行计算型任务通过所述发射CPU核心派发给所述GPU计算核心。更优地,所述判断所述CPU计算核心中的发射CPU核心是否空闲以及判断所述GPU计算核心中的流处理器是否空闲的步骤,具体包括:依次查询所述CPU计算核心以及所述GPU计算核心的五级流水信息;根据所述CPU计算核心的五级流水信息,所述GPU计算核心的五级流水信息,以及所述五级流水信息中任务的依赖关系判断所述CPU计算核心中的发射CPU核心是否空闲和判断所述GPU计算核心中的流处理器是否空闲。更优地,所述判断系统共享内存是否足够且存在空余内存带宽的步骤中通过性能监视器计数器统计从上一个Tick标记到当前Tick标记的两级缓存未命中数来计算所述内存带宽。更优地,所述步骤S2包括:在存在有所述GPU计算核心在计算流水线中时,对所述GPU计算核心所执行的当前任务中的数据从所述CPU写入内存和数据从所述GPU写入内存的阶段,对所述CPU对应的缓存以及所述GPU对应的二级缓存各进行一次缓存状态查询;在所述GPU计算核心所执行的所述当前任务中的数据从所述CPU写入内存和数据从所述GPU写入内存的阶段的写请求任务完成后进行缓存刷新,以保证任务数据的缓存一致性。更优地,在所述CPU包括n核{k0,k1,...kn}所述CPU计算核心时,固定并优先使用所述K0CPU计算核心作为所述GPU的发射CPU核心;其中,所有所述CPU计算核心具备所述GPU任务发射功能。本专利技术还提供一种计算机系统,包括:任务仲裁模块,用于根据预设的任务依赖算法以及任务的执行类型对所述任务进行排序,对排序后的所述任务按照流水线最大利用率进行重排序,其中所述执行类型包括并行计算型任务,以及串行、IO或者逻辑型任务;缓存一致性刷新模块,用于对缓存进行缓存状态查询,在对所述缓存发起写请求任务完成后进行缓存刷新;任务调度模块,包括GP本文档来自技高网
...

【技术保护点】
1.一种基于Linux的片上CPU/GPU流水化计算方法,其特征在于,包括步骤:/nS1,根据预设的任务依赖算法以及任务的执行类型对所述任务进行排序,对排序后的所述任务按照流水线最大利用率进行重排序,其中所述执行类型包括并行计算型任务,以及串行、IO或者逻辑型任务;/nS2,对缓存进行缓存状态查询,在对所述缓存发起写请求任务完成后进行缓存刷新;/nS31,根据GPU计算核心的计算状态以及所述任务的重排序结果,在所述GPU计算核心空闲时,将所述任务中的所述并行计算型任务派发给所述GPU计算核心;/nS32,根据CPU计算核心的计算状态以及所述任务的重排序结果,在所述CPU计算核心空闲时,将所述任务中的所述串行、IO或者逻辑型任务派发给所述CPU计算核心;/nS4,将所述GPU计算核心处理的任务数据和所述CPU计算核心处理的任务数据规约到对应的发起CPU中,由CPU进行后续数据处理。/n

【技术特征摘要】
1.一种基于Linux的片上CPU/GPU流水化计算方法,其特征在于,包括步骤:
S1,根据预设的任务依赖算法以及任务的执行类型对所述任务进行排序,对排序后的所述任务按照流水线最大利用率进行重排序,其中所述执行类型包括并行计算型任务,以及串行、IO或者逻辑型任务;
S2,对缓存进行缓存状态查询,在对所述缓存发起写请求任务完成后进行缓存刷新;
S31,根据GPU计算核心的计算状态以及所述任务的重排序结果,在所述GPU计算核心空闲时,将所述任务中的所述并行计算型任务派发给所述GPU计算核心;
S32,根据CPU计算核心的计算状态以及所述任务的重排序结果,在所述CPU计算核心空闲时,将所述任务中的所述串行、IO或者逻辑型任务派发给所述CPU计算核心;
S4,将所述GPU计算核心处理的任务数据和所述CPU计算核心处理的任务数据规约到对应的发起CPU中,由CPU进行后续数据处理。


2.如权利要求1所述的基于Linux的片上CPU/GPU流水化计算方法,其特征在于,所述步骤S1具体包括:
根据所述预设的任务依赖算法对所述任务绘制任务图,对所述任务图进行拓扑排序;
根据所述任务的所述执行类型,将所述拓扑排序后的所述任务中的所述串行、IO或者逻辑型任务存入CPU任务队列,以及将所述拓扑排序后的所述任务中的所述并行计算型任务存入GPU任务队列;
对排序后的所述CPU任务队列以及所述GPU任务队列按照流水线最大利用率进行重排序。


3.如权利要求2所述的基于Linux的片上CPU/GPU流水化计算方法,其特征在于,所述GPU任务队列中的任务的任务优先级高于所述CPU任务队列中任务的任务优先级;所述GPU任务队列中的任务的发射优先级高于所述CPU任务队列中任务的发射优先级。


4.如权利要求2所述的基于Linux的片上CPU/GPU流水化计算方法,其特征在于,所述步骤S31中包括:
判断所述CPU计算核心中的发射CPU核心是否空闲、判断系统共享内存是否足够且存在空余内存带宽、以及判断所述GPU计算核心中的流处理器是否空闲;
在所述发射CPU核心空闲、所系统共享内存足够且存在空余内存带宽、或者所述GPU计算核心中的流处理器空闲三个条件中至少一个满足时,将所述GPU任务中的所述并行计算型任务通过所述发射CPU核心派发给所述GPU计算核心。


5.如权利要求4所述的基于Linux的片上CPU/GPU流水化计算方法,其特征在于,所述判断所述CPU计算核心中的发射CPU核心是否空闲以及判断所述GPU计算核心中的流处理器是否空闲的步骤,具体包括:
依次查询所述CPU计算核心以及所述GPU计算核心的五级流水信息;
根据所述CPU计算核心的五级流水信息,所述...

【专利技术属性】
技术研发人员:黄一智刘彦张在美谢国琪李仁发
申请(专利权)人:湖南大学
类型:发明
国别省市:湖南;43

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1