CN104102546B - 一种实现cpu和gpu负载均衡的方法及系统 - Google Patents
一种实现cpu和gpu负载均衡的方法及系统 Download PDFInfo
- Publication number
- CN104102546B CN104102546B CN201410353847.8A CN201410353847A CN104102546B CN 104102546 B CN104102546 B CN 104102546B CN 201410353847 A CN201410353847 A CN 201410353847A CN 104102546 B CN104102546 B CN 104102546B
- Authority
- CN
- China
- Prior art keywords
- gpu
- started
- computing
- computing device
- cpu
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 41
- 238000012545 processing Methods 0.000 claims abstract description 20
- 230000001133 acceleration Effects 0.000 claims description 23
- 238000012360 testing method Methods 0.000 claims description 23
- 230000006870 function Effects 0.000 claims description 6
- 238000010977 unit operation Methods 0.000 claims description 6
- 238000004364 calculation method Methods 0.000 description 7
- 230000007717 exclusion Effects 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 238000007781 pre-processing Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
Landscapes
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请公开了一种实现CPU和GPU负载均衡的方法及系统,包括:获取系统当前配置的计算设备信息、物理内存及其他系统资源相关信息;根据获取的计算设备信息、物理内存及其他系统资源相关信息,确定启动的计算设备的种类及数量;根据启动的计算设备的种类及数量,创建相应的计算设备的控制线程;以实现各计算设备独立、并行运行;计算设备包括:中央处理器(CPU),和/或图形处理器(GPU)。本发明通过设备属性信息的数据结构来记录和管理系统配置的计算设备信息及物理内存等资源相关信息,在确定启动计算设备的种类和数量后,创建相应的控制线程,实现了CPU与GPU协同并行计算;另外,通过各计算设备相对于CPU的加速比分配任务负载,实现了CPU和GPU的负载均衡。
Description
技术领域
本申请涉及计算机领域,尤指一种实现中央处理器(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号及计算设备的相关属性信息。
进一步地,所述线程创建单元还用于,当所述启动的计算设备包含有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端的各计算线程通过共享的互斥锁竞争计算任务,实现动态负载均衡;各计算设备控制线程均独自进行读取源数据、源数据预处理、计算、输出结果数据等操作,各控制线程完全并行,分别输出计算结果。
各计算设备控制线程完成各自的计算任务后退出。
虽然本申请所揭露的实施方式如上,但所述的内容仅为便于理解本申请而采用的实施方式,并非用以限定本申请,如本发明实施方式中的具体的实现方法。任何本申请所属领域内的技术人员,在不脱离本申请所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本申请的专利保护范围,仍须以所附的权利要求书所界定的范围为准。
Claims (20)
1.一种实现CPU和GPU混合架构平台的CPU和GPU负载均衡的方法,其特征在于,
获取系统当前配置的计算设备信息、物理内存及其他资源相关信息;
根据获取的计算设备信息、物理内存及其他资源相关信息,确定启动的计算设备的种类及数量;
根据启动的计算设备的种类及数量,创建相应的计算设备的控制线程,以实现各计算设备独立、并行运行;
所述计算设备包括:中央处理器CPU,和/或图形处理器GPU;
所述创建的各启动的GPU相应的控制线程记录有所属GPU的属性信息,该方法还包括:根据记录的所属GPU的属性信息,动态配置GPU内核函数参数,以适应不同的GPU型号和控制GPU的工作性能;
所述GPU属性信息包括:设备类型、设备ID号及计算设备的相关属性信息。
2.根据权利要求1所述的方法,其特征在于,所述获取当前系统配置的计算设备信息、物理内存及其他资源相关信息具体包括:按照创建的数据结构对象获取当前系统配置的计算设备信息、物理内存及其他资源相关信息。
3.根据权利要求2所述的方法,其特征在于,该方法之前还包括:
对主线程的输入参数、中间数据内存空间、输出数据内存空间及其他作业任务相关参数进行初始化后,检测系统的计算设备和物理内存资源,根据检测的系统的计算设备和物理内存资源创建相关的数据结构对象并进行初始化。
4.根据权利要求1所述的方法,其特征在于,所述计算设备信息、物理内存及其他资源相关信息至少包括:
CPU硬件核数及逻辑核数,以及判别CPU是否开启了超线程,
和GPU硬件设备数、及硬件设备类型及相关参数,
和系统内物理内存总量、实时空闲内存总量,以提供给控制单元确定单次处理的作业的规模,即作业分块的大小,以及缓冲区的数量及大小。
5.根据权利要求1所述的方法,其特征在于,所述根据启动的计算设备的种类及数量,创建相应的计算设备的控制线程具体包括:
当所述启动的计算设备只包含GPU时,根据启动的GPU数量,为各启动的GPU创建相应个数的独立的控制线程;
当所述启动的计算设备包含有CPU与GPU时,为所有启动的CPU创建一个控制线程,为各启动的GPU创建相应的独立的控制线程。
6.根据权利要求5所述的方法,其特征在于,当所述启动的计算设备包含有CPU时,该方法还包括:
在所述为所有启动的CPU创建的一个控制线程中创建与CPU个数对应的并行计算的子线程。
7.根据权利要求6所述的方法,其特征在于,所述与CPU个数对应的并行计算的子线程采用互斥锁的方式通信,并以此竞争计算任务。
8.根据权利要求1~7任一项所述的方法,其特征在于,该方法还包括:对创建的所述各控制线程分别进行相同的作业测试,获取各所述启动的计算设备完成作业测试的时间,以计算各启动的计算设备相对于CPU的加速比;
根据各所述启动的计算设备相对与CPU的加速比静态的分配任务负载。
9.根据权利要求8所述的方法,其特征在于,该方法还包括:获取所述系统的作业任务信息,根据作业任务信息对作业任务进行划分,以调整各启动的计算设备的任务负载。
10.根据权利要求9所述的方法,其特征在于,所述作业任务信息包括:作业大小、作业总时间、单位作业平均时间、相对性能加速比指数。
11.一种实现CPU和GPU混合架构平台的CPU和GPU负载均衡的系统,其特征在于,包括,获取单元、确定单元、线程创建单元和若干计算设备;其中,
获取单元,用于获取系统当前配置的计算设备信息、物理内存及其他资源相关信息;
确定单元,用于根据获取的计算设备信息、物理内存及其他资源相关信息,确定启动的计算设备的种类及数量;
线程创建单元,用于根据启动的计算设备的种类及数量,创建相应的计算设备的控制线程,以实现各计算设备独立、并行运行;
各计算设备,用于根据控制单元确定的是否启动;根据线程创建单元创建的控制线程,实现各自独立的并行运行;
所述计算设备包括:中央处理器CPU,和/或图形处理器GPU;
该系统还包括动态配置单元,用于根据创建的、各启动的GPU相应的控制线程记录的所属GPU的属性信息,动态配置GPU内核函数参数,以适应不同的GPU型号和控制GPU的工作性能;
所述GPU属性信息包括:设备类型、设备ID号及计算设备的相关属性信息。
12.根据权利要求11所述的系统,其特征在于,所述获取单元具体用于,按照创建的数据结构对象获取系统当前配置的计算设备信息、物理内存及其他资源相关信息。
13.根据权利要求12所述的系统,其特征在于,该系统还包括初始化单元,用于对主线程的输入参数、中间数据内存空间及输出数据内存空间及其他作业任务相关参数进行初始化后,检测系统的计算设备和物理内存资源,根据检测的系统的计算设备和物理内存资源创建相关的数据结构对象并进行初始化。
14.根据权利要求11所述的系统,其特征在于,所述获取单元具体用于,获取至少包括:CPU硬件核数及逻辑核数,以及判别CPU是否开启了超线程,和GPU硬件设备数、及硬件设备类型及相关参数,
和系统内物理内存总量、实时空闲内存总量,以提供给控制单元确定单次处理的作业的规模,即作业分块的大小,以及缓冲区的数量及大小的所述系统配置的计算设备信息及物理内存相关信息。
15.根据权利要求11所述的系统,其特征在于,所述线程创建单元具体用于,
当所述启动的计算设备只包含GPU时,根据启动的GPU数量,为各GPU创建相应个数的独立的控制线程;
当所述启动的计算设备包含有CPU与GPU时,为所有启动的CPU创建一个控制线程,为各GPU创建相应的独立的控制线程。
16.根据权利要求15所述的系统,其特征在于,所述线程创建单元还用于,当所述启动的计算设备包含有CPU时,在所述为所有启动的CPU创建的一个控制线程中创建与CPU个数对应的并行计算的子线程。
17.根据权利要求16所述的系统,其特征在于,所述与CPU个数对应的并行计算的子线程采用互斥锁的方式通信,并以此竞争计算任务。
18.根据权利要求11~17任一项所述的系统,其特征在于,该系统还包括测试单元和任务分配单元,用于对各所述创建的控制线程分别进行相同的作业测试,获取各所述启动的计算设备完成作业测试的时间,以计算各启动的计算设备相对于CPU的加速比;
任务分配单元,用于根据各启动的计算设备相对与CPU的加速比静态的分配任务负载。
19.根据权利要求18所述的系统,其特征在于,所述任务分配单元还用于,获取所述系统的作业任务信息,根据作业任务信息对作业任务进行划分,以调整各启动的计算设备的任务负载。
20.根据权利要求19所述的系统,其特征在于,所述作业任务信息包括:作业大小、作业总时间、单位作业平均时间、相对性能加速比指数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410353847.8A CN104102546B (zh) | 2014-07-23 | 2014-07-23 | 一种实现cpu和gpu负载均衡的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410353847.8A CN104102546B (zh) | 2014-07-23 | 2014-07-23 | 一种实现cpu和gpu负载均衡的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104102546A CN104102546A (zh) | 2014-10-15 |
CN104102546B true CN104102546B (zh) | 2018-02-02 |
Family
ID=51670718
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410353847.8A Active CN104102546B (zh) | 2014-07-23 | 2014-07-23 | 一种实现cpu和gpu负载均衡的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104102546B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104536938A (zh) * | 2015-01-27 | 2015-04-22 | 浪潮(北京)电子信息产业有限公司 | 一种地震叠前时间偏移的计算方法及系统 |
CN104932659B (zh) * | 2015-07-15 | 2020-01-07 | 京东方科技集团股份有限公司 | 图像显示方法及显示系统 |
CN105357258B (zh) | 2015-09-28 | 2020-06-26 | 华为技术有限公司 | 一种加速管理节点、加速节点、客户端及方法 |
CN106919442A (zh) * | 2015-12-24 | 2017-07-04 | 中国电信股份有限公司 | 多gpu调度装置和分布式计算系统以及多gpu调度方法 |
CN106021943B (zh) * | 2016-05-27 | 2018-07-20 | 东南大学 | 一种结合gpu软硬件架构特点设计的直流故障筛选方法 |
CN106155796A (zh) * | 2016-07-25 | 2016-11-23 | 浪潮(北京)电子信息产业有限公司 | 一种基于队列的线程调度方法及装置 |
CN107688495B (zh) * | 2017-06-22 | 2020-11-03 | 平安科技(深圳)有限公司 | 调度处理器的方法及设备 |
US10614541B2 (en) | 2017-06-29 | 2020-04-07 | Nvidia Corporation | Hybrid, scalable CPU/GPU rigid body pipeline |
CN109933415B (zh) * | 2017-12-19 | 2021-05-04 | 中国移动通信集团河北有限公司 | 数据的处理方法、装置、设备及介质 |
CN110109861A (zh) * | 2019-04-22 | 2019-08-09 | 北京中科寒武纪科技有限公司 | 一种任务执行方法及装置 |
CN114039921B (zh) * | 2021-11-22 | 2024-04-19 | 北京计算机技术及应用研究所 | 一种适用于异构计算平台的ice负载均衡系统 |
CN114339412B (zh) * | 2021-12-30 | 2024-02-27 | 咪咕文化科技有限公司 | 视频质量增强方法、移动终端、存储介质及装置 |
CN117971441B (zh) * | 2024-04-01 | 2024-06-11 | 之江实验室 | 一种面向一体机的高性能线程模型实现方法和装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101894051A (zh) * | 2010-07-29 | 2010-11-24 | 中国科学技术大学 | 基于主辅数据结构的cpu-gpu合作计算方法 |
CN102135949A (zh) * | 2011-03-01 | 2011-07-27 | 浪潮(北京)电子信息产业有限公司 | 基于图形处理器的计算网络系统、方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9069622B2 (en) * | 2010-09-30 | 2015-06-30 | Microsoft Technology Licensing, Llc | Techniques for load balancing GPU enabled virtual machines |
-
2014
- 2014-07-23 CN CN201410353847.8A patent/CN104102546B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101894051A (zh) * | 2010-07-29 | 2010-11-24 | 中国科学技术大学 | 基于主辅数据结构的cpu-gpu合作计算方法 |
CN102135949A (zh) * | 2011-03-01 | 2011-07-27 | 浪潮(北京)电子信息产业有限公司 | 基于图形处理器的计算网络系统、方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104102546A (zh) | 2014-10-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104102546B (zh) | 一种实现cpu和gpu负载均衡的方法及系统 | |
CN102099788B (zh) | 用于在多处理器上进行数据并行计算的应用编程接口 | |
CN102870096B (zh) | 子缓冲器对象 | |
CN101551761A (zh) | 一种异构多处理器中共享流内存的方法 | |
US10664318B2 (en) | Method and apparatus for allocating computing resources of processor | |
US11687242B1 (en) | FPGA board memory data reading method and apparatus, and medium | |
US11243795B2 (en) | CPU overcommit with guest idle polling | |
CN102147722A (zh) | 实现中央处理器和图形处理器功能的多线程处理器及方法 | |
CN104050706A (zh) | 用于低功率图形渲染的像素着色器旁路 | |
US11726826B2 (en) | Dynamic load balancing of compute assets among different compute contexts | |
JP6911055B2 (ja) | グラフィック処理のためのパーシェーダープリアンブル | |
CN103176848A (zh) | 计算工作分布参考计数器 | |
CN108140234A (zh) | 基于命令流标记的gpu操作算法选择 | |
US11880715B2 (en) | Method and system for opportunistic load balancing in neural networks using metadata | |
US11948017B2 (en) | Thread modification to reduce command conversion latency | |
CN107250976B (zh) | 用于图形处理器的线程分派 | |
US20110249010A1 (en) | Utilization of a graphics processing unit based on production pipeline tasks | |
CN106796536A (zh) | 用于多操作系统的内存访问方法、装置和电子设备 | |
KR20140001970A (ko) | 결합된 cpu/gpu 아키텍처 시스템에서의 디바이스의 발견 및 토폴로지 보고 | |
US20220309606A1 (en) | Dynamically reconfigurable register file | |
CN104200508A (zh) | 基于Intel众核架构对等模式的光线追踪加速方法 | |
CN109558210A (zh) | 一种虚拟机应用主机gpu设备的方法及系统 | |
US9477480B2 (en) | System and processor for implementing interruptible batches of instructions | |
Lee et al. | Accelerating a computer vision algorithm on a mobile SoC using CPU-GPU co-processing: a case study on face detection | |
Tarakji et al. | The development of a scheduling system GPUSched for graphics processing units |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |