书签 分享 收藏 举报 版权申诉 / 12

一种实现CPU和GPU负载均衡的方法及系统.pdf

  • 上传人:1**
  • 文档编号:627960
  • 上传时间:2018-02-27
  • 格式:PDF
  • 页数:12
  • 大小:766.42KB
  • 摘要
    申请专利号:

    CN201410353847.8

    申请日:

    2014.07.23

    公开号:

    CN104102546A

    公开日:

    2014.10.15

    当前法律状态:

    实审

    有效性:

    审中

    法律详情:

    实质审查的生效IPC(主分类):G06F 9/50申请日:20140723|||公开

    IPC分类号:

    G06F9/50

    主分类号:

    G06F9/50

    申请人:

    浪潮(北京)电子信息产业有限公司

    发明人:

    吴庆; 吴韶华; 张广勇; 王娅娟

    地址:

    100085 北京市海淀区上地信息路2号2-1号C栋1层

    优先权:

    专利代理机构:

    北京安信方达知识产权代理有限公司 11262

    代理人:

    王丹;李丹

    PDF完整版下载: PDF下载
    内容摘要

    本申请公开了一种实现CPU和GPU负载均衡的方法及系统,包括:获取系统当前配置的计算设备信息、物理内存及其他系统资源相关信息;根据获取的计算设备信息、物理内存及其他系统资源相关信息,确定启动的计算设备的种类及数量;根据启动的计算设备的种类及数量,创建相应的计算设备的控制线程;以实现各计算设备独立、并行运行;计算设备包括:中央处理器(CPU),和/或图形处理器(GPU)。本发明通过设备属性信息的数据结构来记录和管理系统配置的计算设备信息及物理内存等资源相关信息,在确定启动计算设备的种类和数量后,创建相应的控制线程,实现了CPU与GPU协同并行计算;另外,通过各计算设备相对于CPU的加速比分配任务负载,实现了CPU和GPU的负载均衡。

    权利要求书

    1.  一种实现CPU和GPU负载均衡的方法,其特征在于,
    获取系统当前配置的计算设备信息、物理内存及其他资源相关信息;
    根据获取的计算设备信息、物理内存及其他资源相关信息,确定启动的计算设备的种类及数量;
    根据启动的计算设备的种类及数量,创建相应的计算设备的控制线程,以实现各计算设备独立、并行运行;
    所述计算设备包括:中央处理器CPU,和/或图形处理器GPU。

    2.
      根据权利要求1所述的方法,其特征在于,所述获取当前系统配置的计算设备信息、物理内存及其他资源相关信息具体包括:按照创建的数据结构对象获取当前系统配置的计算设备信息、物理内存及其他资源相关信息。

    3.
      根据权利要求2所述的方法,其特征在于,该方法之前还包括:
    对主线程的输入参数、中间数据内存空间、输出数据内存空间及其他作业任务相关参数进行初始化后,检测系统的计算设备和物理内存资源,根据检测的系统的计算设备和物理内存资源创建相关的数据结构对象并进行初始化。

    4.
      根据权利要求1所述的方法,其特征在于,所述计算设备信息、物理内存及其他资源相关信息至少包括:
    CPU硬件核数及逻辑核数,以及判别CPU是否开启了超线程,
    和GPU硬件设备数、及硬件设备类型及相关参数,
    和系统内物理内存总量、实时空闲内存总量,以提供给控制单元确定单次处理的作业的规模,即作业分块的大小,以及缓冲区的数量及大小。

    5.
      根据权利要求1所述的方法,其特征在于,所述根据启动的计算设备的种类及数量,创建相应的计算设备的控制线程具体包括:
    当所述启动的计算设备只包含GPU时,根据启动的GPU数量,为各启动的GPU创建相应个数的独立的控制线程;
    当所述启动的计算设备包含有CPU与GPU时,为所有启动的CPU创建一个控制线程,为各启动的GPU创建相应的独立的控制线程。

    6.
      根据权利要求1所述的方法,其特征在于,所述创建的各启动的GPU相应的控制线程记录有所属GPU的属性信息,该方法还包括:根据记录的所属GPU的属性信息,动态配置GPU内核函数参数,以适应不同的GPU型号和控制GPU的工作性能;
    所述GPU属性信息包括:设备类型、设备ID号及计算设备的相关属性信息。

    7.
      根据权利要求5所述的方法,其特征在于,当所述启动的计算设备包含有CPU时,该方法还包括:
    在所述为所有启动的CPU创建的一个控制线程中创建与CPU个数对应的并行计算的子线程。

    8.
      根据权利要求7所述的方法,其特征在于,所述与CPU个数对应的并行计算的子线程采用互斥锁的方式通信,并以此竞争计算任务。

    9.
      根据权利要求1~8任一项所述的方法,其特征在于,该方法还包括:对创建的所述各控制线程分别进行相同的作业测试,获取各所述启动的计算设备完成作业测试的时间,以计算各启动的计算设备相对于CPU的加速比;
    根据各所述启动的计算设备相对与CPU的加速比静态的分配任务负载。

    10.
      根据权利要求9所述的方法,其特征在于,该方法还包括:获取所述系统的作业任务信息,根据作业任务信息对作业任务进行划分,以调整各启动的计算设备的任务负载。

    11.
      根据权利要求10所述的方法,其特征在于,所述作业任务信息包括:作业大小、作业总时间、单位作业平均时间、相对性能加速比指数。

    12.
      一种实现CPU和GPU负载均衡的系统,其特征在于,包括,获取单元、确定单元、线程创建单元和若干计算设备;其中,
    获取单元,用于获取系统当前配置的计算设备信息、物理内存及其他资源相关信息;
    确定单元,用于根据获取的计算设备信息、物理内存及其他资源相关信息,确定启动的计算设备的种类及数量;
    线程创建单元,用于根据启动的计算设备的种类及数量,创建相应的计算设备的控制线程,以实现各计算设备独立、并行运行;
    各计算设备,用于根据控制单元确定的是否启动;根据线程创建单元创建的控制线程,实现各自独立的并行运行;
    所述计算设备包括:中央处理器CPU,和/或图形处理器GPU。

    13.
      根据权利要求12所述的系统,其特征在于,所述获取单元具体用于,按照创建的数据结构对象获取系统当前配置的计算设备信息、物理内存及其他资源相关信息。

    14.
      根据权利要求13所述的系统,其特征在于,该装置还包括初始化单元,用于对主线程的输入参数、中间数据内存空间及输出数据内存空间及其他作业任务相关参数进行初始化后,检测系统的计算设备和物理内存资源,根据检测的系统的计算设备和物理内存资源创建相关的数据结构对象并进行初始化。

    15.
      根据权利要求12所述的系统,其特征在于,所述获取单元具体用于,获取至少包括:CPU硬件核数及逻辑核数,以及判别CPU是否开启了超线程,
    和GPU硬件设备数、及硬件设备类型及相关参数,
    和系统内物理内存总量、实时空闲内存总量,以提供给控制单元确定单次处理的作业的规模,即作业分块的大小,以及缓冲区的数量及大小的所述系统配置的计算设备信息及物理内存相关信息。

    16.
      根据权利要求12所述的系统,其特征在于,所述线程创建单元具体用于,
    当所述启动的计算设备只包含GPU时,根据启动的GPU数量,为各GPU创建相应个数的独立的控制线程;
    当所述启动的计算设备包含有CPU与GPU时,为所有启动的CPU创建一个控制线程,为各GPU创建相应的独立的控制线程。

    17.
      根据权利要求12所述的系统,其特征在于,该系统还包括动态配置单元,用于根据创建的、各启动的GPU相应的控制线程记录的所属GPU的属性信息,动态配置GPU内核函数参数,以适应不同的GPU型号和控制GPU的工作性能;
    所述GPU属性信息包括:设备类型、设备ID号及计算设备的相关属性信息。

    18.
      根据权利要求16所述的系统,其特征在于,所述线程创建单元还用于,当所述启动的计算设备包含有CPU时,在所述为所有启动的CPU创建的一个控制线程中创建与CPU个数对应的并行计算的子线程。

    19.
      根据权利要求18所述的系统,其特征在于,所述与CPU个数对应的并行计算的子线程采用互斥锁的方式通信,并以此竞争计算任务。

    20.
      根据权利要求12~19任一项所述的系统,其特征在于,该系统还包括测试单元和任务分配单元,用于对各所述创建的控制线程分别进行相同的作业测试,获取各所述启动的计算设备完成作业测试的时间,以计算各启动的计算设备相对于CPU的加速比;
    任务分配单元,用于根据各启动的计算设备相对与CPU的加速比静态的分配任务负载。

    21.
      根据权利要求20所述的系统,其特征在于,所述任务分配单元还用于,获取所述系统的作业任务信息,根据作业任务信息对作业任务进行划分,以调整各启动的计算设备的任务负载。

    22.
      根据权利要求21所述的系统,其特征在于,所述作业任务信息包括:作业大小、作业总时间、单位作业平均时间、相对性能加速比指数。

    说明书

    一种实现CPU和GPU负载均衡的方法及系统
    技术领域
    本申请涉及计算机领域,尤指一种实现中央处理器(CPU)和图形处理器(GPU)负载均衡的方法及系统。
    背景技术
    硬件系统在新技术的推动下进行着快速演进,表现出更好的性能、更低的价格。CPU和GPU在硬件系统的演进过程中扮演着重要的角色。CPU从单核不断的向多核直至众核发展,并随着多核体系结构处理器的普及,应用软件多线程的并行处理方法得到了重视。GPU除了传统的应用(图形显示,多用于游戏)以外,由于其超强的浮点计算能力,越来越多地应用在数学计算上,并且逐步成为数学计算的主流。面向GPU编程的高级语言和开发工具也开始大量涌现。GPU作为CPU的协处理器,用于辅助CPU处理高并行度、高密度的计算任务,作为众核处理器,GPU的单芯片上集成数百甚至数千处理核心,其单成本计算能力(GFLOPS/$)、单功耗计算能力(GFLOPS/W)与传统的CPU架构相比,具有巨大的优势。因此,在既追求计算能力,又追求计算效率的高性能计算领域,近年来GPU得到越来越广泛的应用,并且成为高性能计算重要的发展趋势。
    然而,多核、众核的方案,只是让处理器获得硬件性能上的提升,应用软件要借此获得性能提升,必须进行革命性的改进,才能使多核/众核完全发挥效力。这一重大的软硬件一体化的技术变革,就是并行计算。在高性能并行计算领域,GPU常见的应用模式是在传统的多核CPU架构基础上扩展GPU架构处理器,组成CPU与GPU混合的架构平台;基于该架构平台设计相应的软件解决方案,使CPU与GPU能够有效的进行协同并行计算。在CPU与GPU协同并行计算的解决方案设计过程中,涉及到一个主要的方面是CPU与GPU的负载均衡问题,这关系到能否将CPU与GPU混合架构平台的计算性能发挥到极致。
    目前,在CPU与GPU混合架构平台上,CPU与GPU协同并行计算常见的负载均衡方式有完全动态负载均衡和完全静态负载均衡。其中,动态负载均衡,是指各计算设备根据自身实际计算能力,采用“能者多劳”的策略,实时、动态、自主的任务负载分配方式,动态负载均衡灵活高效,但是对算法要求严格,要求各计算任务彼此完全独立无依赖,从而可被并行处理;静态负载均衡,是指各计算设备根据预先设定的、固定不变的任务负载分配比例分配计算任务,静态负载均衡实现简单,但缺乏灵活性和适应性。这两种负载均衡方式各有局限性,并不适用所有场合,例如,各基本计算任务的输入和预处理有重叠和冗余的高性能并行计算场合,完全动态负载均衡会导致大量的冗余输入和预处理,造成引入的额外开销过大,从而整体效率不佳;而完全静态负载均衡,能最大限度地避免输入和预处理的冗余,但却无法根据实际运行情况,实时动态地调整计算任务分配比例,严重缺乏灵活性和适应性,使用效果也不好。
    综上,完全动态负载均衡的算法局限性,和静态负载均衡的缺乏灵活性和适应性,影响了CPU与GPU协同并行计算的性能的发挥。
    发明内容
    为了解决上述问题,本发明提供一种实现CPU和GPU负载均衡的方法及系统,实现CPU与GPU协同并行计算。
    为了达到本发明的目的,本申请提供一种实现CPU和GPU负载均衡的方法;包括:
    获取系统当前配置的计算设备信息、物理内存及其他资源相关信息;
    根据获取的计算设备信息、物理内存及其他资源相关信息,确定启动的计算设备的种类及数量;
    根据启动的计算设备的种类及数量,创建相应的计算设备的控制线程,以实现各计算设备独立、并行运行;
    所述计算设备包括:中央处理器CPU,和/或图形处理器GPU。
    进一步地,获取当前系统配置的计算设备信息、物理内存及其他资源相 关信息具体包括:按照创建的数据结构对象获取当前系统配置的计算设备信息、物理内存及其他资源相关信息。
    进一步地,该方法之前还包括:
    对主线程的输入参数、中间数据内存空间、输出数据内存空间及其他作业任务相关参数进行初始化后,检测系统的计算设备和物理内存资源,根据检测的系统的计算设备和物理内存资源创建相关的数据结构对象并进行初始化。
    进一步地,计算设备信息、物理内存及其他资源相关信息至少包括:
    CPU硬件核数及逻辑核数,以及判别CPU是否开启了超线程,
    和GPU硬件设备数、及硬件设备类型及相关参数,
    和系统内物理内存总量、实时空闲内存总量,以提供给控制单元确定单次处理的作业的规模,即作业分块的大小,以及缓冲区的数量及大小。
    进一步地,根据启动的计算设备的种类及数量,创建相应的计算设备的控制线程具体包括:
    当所述启动的计算设备只包含GPU时,根据启动的GPU数量,为各启动的GPU创建相应个数的独立的控制线程;
    当所述启动的计算设备包含有CPU与GPU时,为所有启动的CPU创建一个控制线程,为各启动的GPU创建相应的独立的控制线程。
    进一步地,创建的各启动的GPU相应的控制线程记录有所属GPU的属性信息,该方法还包括:根据记录的所属GPU的属性信息,动态配置GPU内核函数参数,以适应不同的GPU型号和控制GPU的工作性能;
    GPU属性信息包括:设备类型、设备ID号及计算设备的相关属性信息。
    进一步地,当启动的计算设备包含有CPU时,该方法还包括:
    在为所有启动的CPU创建的一个控制线程中创建与CPU个数对应的并行计算的子线程。
    进一步地,与CPU个数对应的并行计算的子线程采用互斥锁的方式通信, 并以此竞争计算任务。
    进一步地,该方法还包括:对创建的所述各控制线程分别进行相同的作业测试,获取各所述启动的计算设备完成作业测试的时间,以计算各启动的计算设备相对于CPU的加速比;
    根据各启动的计算设备相对与CPU的加速比静态的分配任务负载。
    进一步地,该方法还包括:获取所述系统的作业任务信息,根据作业任务信息对作业任务进行划分,以调整各启动的计算设备的任务负载。
    进一步地,作业任务信息包括:作业大小、作业总时间、单位作业平均时间、相对性能加速比指数。
    另一方面,本申请还提供一种实现CPU和GPU负载均衡的系统,包括,获取单元、确定单元、线程创建单元和若干计算设备;其中,
    获取单元,用于获取系统当前配置的计算设备信息、物理内存及其他资源相关信息;
    确定单元,用于根据获取的计算设备信息、物理内存及其他资源相关信息,确定启动的计算设备的种类及数量;
    线程创建单元,用于根据启动的计算设备的种类及数量,创建相应的计算设备的控制线程,以实现各计算设备独立、并行运行;
    各计算设备,用于根据控制单元确定的是否启动;根据线程创建单元创建的控制线程,实现各自独立的并行运行;
    所述计算设备包括:中央处理器CPU,和/或图形处理器GPU。
    进一步地,获取单元具体用于,按照创建的数据结构对象获取系统当前配置的计算设备信息、物理内存及其他资源相关信息。
    进一步地,该装置还包括初始化单元,用于对主线程的输入参数、中间数据内存空间及输出数据内存空间及其他作业任务相关参数进行初始化后,检测系统的计算设备和物理内存资源,根据检测的系统的计算设备和物理内存资源创建相关的数据结构对象并进行初始化。
    进一步地,获取单元具体用于,获取至少包括:CPU硬件核数及逻辑核 数,以及判别CPU是否开启了超线程,
    和GPU硬件设备数、及硬件设备类型及相关参数,
    和系统内物理内存总量、实时空闲内存总量,以提供给控制单元确定单次处理的作业的规模,即作业分块的大小,以及缓冲区的数量及大小的所述系统配置的计算设备信息及物理内存相关信息。
    进一步地,线程创建单元具体用于,
    当启动的计算设备只包含GPU时,根据启动的GPU数量,为各GPU创建相应个数的独立的控制线程;
    当启动的计算设备包含有CPU与GPU时,为所有启动的CPU创建一个控制线程,为各GPU创建相应的独立的控制线程。
    进一步地,该系统还包括动态配置单元,用于根据创建的、各启动的GPU相应的控制线程记录的所属GPU的属性信息,动态配置GPU内核函数参数,以适应不同的GPU型号和控制GPU的工作性能;
    GPU属性信息包括:设备类型、设备ID号及计算设备的相关属性信息。
    18、根据权利要求16所述的系统,其特征在于,所述线程创建单元还用于,当所述启动的计算设备包含有CPU时,在所述为所有启动的CPU创建的一个控制线程中创建与CPU个数对应的并行计算的子线程。
    进一步地,与CPU个数对应的并行计算的子线程采用互斥锁的方式通信,并以此竞争计算任务。
    进一步地,该系统还包括测试单元和任务分配单元,用于对各所述创建的控制线程分别进行相同的作业测试,获取各所述启动的计算设备完成作业测试的时间,以计算各启动的计算设备相对于CPU的加速比;
    任务分配单元,用于根据各启动的计算设备相对与CPU的加速比静态的分配任务负载。
    进一步地,任务分配单元还用于,获取所述系统的作业任务信息,根据作业任务信息对作业任务进行划分,以调整各启动的计算设备的任务负载。
    进一步地,作业任务信息包括:作业大小、作业总时间、单位作业平均 时间、相对性能加速比指数。
    与现有技术相比,本发明提供的技术方案,包括:获取系统当前配置的计算设备信息、物理内存及其他资源相关信息;根据获取的计算设备信息、物理内存及其他资源相关信息,确定启动的计算设备的种类及数量;根据启动的计算设备的种类及数量,创建相应的计算设备的控制线程,以实现各计算设备独立、并行运行;计算设备包括:中央处理器(CPU),和/或图形处理器(GPU)。本发明通过创建数据结构对象获取系统配置的计算设备信息及物理内存相关信息,在确定启动计算设备的种类和数量后,创建相应的控制线程,实现了CPU与GPU协同并行计算;另外,通过各计算设备相对于CPU的加速比分配任务负载,实现了CPU和GPU的负载均衡。
    附图说明
    附图用来提供对本申请技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本申请的技术方案,并不构成对本申请技术方案的限制。
    图1为本发明实现CPU和GPU负载均衡的方法的流程图;
    图2为本发明实现CPU和GPU负载均衡的系统的结构框图。
    具体实施方式
    为使本申请的目的、技术方案和优点更加清楚明白,下文中将结合附图对本申请的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
    图1为本发明实现CPU和GPU负载均衡的方法的流程图,如图1所示,包括:
    步骤100、获取系统当前配置的计算设备信息、物理内存及其他资源相关信息。
    具体的,包括按照创建的数据结构对象获取系统当前配置的计算设备信息及物理内存相关信息。
    本步骤之前还包括:对主线程的输入参数、中间数据内存空间及输出数 据内存空间及其他作业任务相关参数进行初始化后,检测系统的计算设备和物理内存资源,根据检测的系统的计算设备和物理内存资源创建相关的数据结构对象并进行初始化。
    需要说明的是,其他作业相关参数是指与作业任务(即计算任务)相关的常量、变量、及计算过程涉及到的参数,根据不同的系统及计算任务,这些参数存在不同,因此无法进行一一列举。另外,这里所说的主线程是指本发明方法应用执行启动时,自动生成的线程,输入参数、中间数据内存空间及输出数据内存空间及其他作业任务相关参数等是主线程中包含的参数,在此不再赘述。
    本发明获取系统配置的计算设备信息、物理内存及其他资源相关信息至少包括:CPU硬件核数及逻辑核数,以及判别CPU是否开启了超线程,
    和GPU硬件设备数、及硬件设备类型及相关参数,
    和系统内物理内存总量、实时空闲内存总量,以提供给控制单元确定单次处理的作业的规模,即作业分块的大小,以及缓冲区的数量及大小。
    步骤101、根据获取的计算设备信息、物理内存及其他资源相关信息,确定启动的计算设备的种类及数量。这里,计算设备包括:中央处理器(CPU),和/或图形处理器(GPU)。
    需要说明的是,确定启动的计算设备的种类及数量,是本领域技术人员根据系统计算任务及工作效率等进行确定的。其他资源相关信息是指其他与计算任务,计算性能等相关的信息,例如磁盘的容量、读写速度等信息。
    步骤102、根据启动的计算设备的种类及数量,创建相应的计算设备的控制线程,以实现各计算设备独立、并行运行。
    具体包括以下过程:
    当启动的计算设备只包含GPU时,根据GPU数量,为各启动的GPU创建相应个数的独立的控制线程;当启动的计算设备包含有CPU与GPU时,为启动的所有CPU创建一个控制线程,为各启动的GPU创建相应的独立的控制线程。
    创建的各启动的GPU相应的控制线程记录有所属GPU的属性信息,本发明方法还包括:根据记录的所属GPU的属性信息,动态配置GPU内核函数参数,以适应不同的GPU型号和控制GPU的工作性能;
    GPU属性信息包括:设备类型、设备ID号及计算设备的相关属性信息。
    进一步地,当启动的计算设备包含有CPU时,该方法还包括:在为所有启动的CPU创建的一个控制线程中创建与CPU个数对应的并行计算的子线程。
    这里,与CPU个数对应的并行计算的子线程采用互斥锁的方式通信,并以此竞争计算任务。
    本发明方法还包括:对创建的各控制线程分别进行相同的作业测试,获取各启动的计算设备完成作业测试的时间,以计算各启动的计算设备相对于CPU的加速比;
    根据各启动的计算设备相对与CPU的加速比静态的分配任务负载。
    进一步地,本发明方法还包括:获取系统的作业任务信息,根据作业任务信息对作业任务进行划分,以调整各启动的计算设备的任务负载。这里作业任务信息包括:作业大小、作业总时间、单位作业平均时间、相对性能加速比指数。
    通过创建数据结构对象获取系统的计算设备的种类、数量及相关参数信息,在确定启动计算设备的种类和数量后,创建相应的计算设备独立的控制线程;以实现各计算设备独立运行,各计算设备之间并行运行,实现了CPU与GPU协同并行计算。通过对各控制线程分别进行相同的作业测试,以获得各计算设备相对于CPU的加速比,根据加速比静态的分配任务负载,实现了CPU和GPU的负载均衡。
    图2为本发明实现CPU和GPU负载均衡的系统的结构框图,如图2所示,包括,获取单元、确定单元、线程创建单元和若干计算设备;其中,
    获取单元,用于获取系统当前配置的计算设备信息、物理内存及其他资源相关信息。
    获取单元具体用于,按照创建的数据结构对象获取系统当前配置的计算 设备信息、物理内存及其他资源相关信息。这里,获取的系统配置的计算设备信息、物理内存及其他资源相关信息至少包括:CPU硬件核数及逻辑核数,以及判别CPU是否开启了超线程,
    和GPU硬件设备数、及硬件设备类型及相关参数,
    和系统内物理内存总量、实时空闲内存总量,以提供给控制单元确定单次处理的作业的规模,即作业分块的大小,以及缓冲区的数量及大小。
    本发明装置还包括初始化单元,用于对主线程的输入参数、中间数据内存空间及输出数据内存空间及其他作业任务相关参数进行初始化后,检测系统的计算设备和物理内存资源,根据检测的系统的计算设备和物理内存资源创建相关的数据结构对象并进行初始化。
    确定单元,用于根据获取的计算设备信息、物理内存及其他资源相关信息,确定启动的计算设备的种类及数量。
    线程创建单元,用于根据启动的计算设备的种类及数量,创建相应的计算设备的控制线程,以实现各计算设备独立、并行运行。线程创建单元具体用于,
    当启动的计算设备只包含GPU时,根据启动的GPU数量,为各GPU创建相应个数的独立的控制线程;当启动的计算设备包含有CPU与GPU时,为所有启动的CPU创建一个控制线程,为各启动的GPU创建相应的独立的控制线程。
    线程创建单元还用于,当启动的计算设备包含有CPU时,在为所有启动的CPU创建的一个控制线程中创建与CPU个数对应的并行计算的子线程。进一步地,与CPU个数对应的并行计算的子线程采用互斥锁的方式通信,并以此竞争计算任务。
    本发明系统还包括动态配置单元,用于根据创建的、各启动的GPU相应的控制线程记录的所属GPU的属性信息,动态配置GPU内核函数参数,以适应不同的GPU型号和控制GPU的工作性能;
    GPU属性信息包括:设备类型、设备ID号及计算设备的相关属性信息。
    各计算设备,用于根据控制单元确定的是否启动;根据线程创建单元创建的控制线程,实现各自独立的并行运行。
    计算设备包括:中央处理器(CPU),和/或图形处理器(GPU)。
    本发明系统还包括测试单元和任务分配单元,用于对各创建的控制线程分别进行相同的作业测试,获取各所述启动的计算设备完成作业测试的时间,以计算各启动的计算设备相对于CPU的加速比;
    任务分配单元,用于根据各启动的计算设备相对与CPU的加速比静态的分配任务负载。
    任务分配单元还用于,获取系统的作业任务信息,根据作业任务信息对作业任务进行划分,以调整各启动的计算设备的任务负载。这里,作业任务信息包括:作业大小、作业总时间、单位作业平均时间、相对性能加速比指数。
    以下通过具体实施例,对本发明进行清楚详细的说明,实施例并不用于限定本发明的保护范围。
    实施例1
    首先,对主线程的输入参数、中间数据内存空间及输出数据内存空间及其他作业任务相关参数进行初始化后,检测系统的计算设备和物理内存资源,根据检测的系统的计算设备和物理内存资源创建相关的数据结构对象并进行初始化。
    根据数据结构对象获取系统当前配置的计算设备信息、物理内存及其他相关信息。
    根据获取的计算设备信息、物理内存及其他资源相关信息,确定启动的计算设备的种类及数量。假设确定启动的GPU设备数N、CPU计算核数M;
    根据启动的计算设备的种类和数量、创建相应的计算设备独立的控制线程;以实现各计算设备独立、并行运行。具体的,为所有启动的CPU设备创建1个控制线程,为各启动的GPU设备分别创建一个GPU的控制线程。
    各控制线程分别进行相同的作业测试,获取各计算设备完成作业测试的时间,以计算各计算设备相对于CPU的加速比,然后该计算设备控制线程向 控制单元发出一个作业测试完成的信号sem_post(TestRunFinish_sem);等待所有设备控制线程都发出测试作业运行完毕的信号sem_wait(TestRunFinish_sem),然后依据各计算设备控制线程反馈的作业测试运行性能结果,换算各计算设备的相对性能加速比作为运算能力强弱的指标,并据此为各计算设备控制线程分配正式作业任务(计算任务)。
    CPU控制线程管理CPU设备,根据启用的CPU计算核数(默认为自动检测的系统核数)创建更细粒度的并行计算线程,这些细粒度并行计算线程通过互斥锁竞争计算任务。一个GPU控制线程管理一个GPU设备,负责源数据由内存拷贝至GPU显存、启动GPU计算、结果数据由GPU显存拷贝回主机内存等操作;CPU端的各计算线程通过共享的互斥锁竞争计算任务,实现动态负载均衡;各计算设备控制线程均独自进行读取源数据、源数据预处理、计算、输出结果数据等操作,各控制线程完全并行,分别输出计算结果。
    各计算设备控制线程完成各自的计算任务后退出。
    虽然本申请所揭露的实施方式如上,但所述的内容仅为便于理解本申请而采用的实施方式,并非用以限定本申请,如本发明实施方式中的具体的实现方法。任何本申请所属领域内的技术人员,在不脱离本申请所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本申请的专利保护范围,仍须以所附的权利要求书所界定的范围为准。

    关 键  词:
    一种 实现 CPU GPU 负载 均衡 方法 系统
      专利查询网所有文档均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    0条评论

    还可以输入200字符

    暂无评论,赶快抢占沙发吧。

    关于本文
    本文标题:一种实现CPU和GPU负载均衡的方法及系统.pdf
    链接地址:https://www.zhuanlichaxun.net/p-627960.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
    经营许可证编号:粤ICP备2021068784号-1