一种调度gpu进行批量运算的方法及装置的制造方法

文档序号:9471247阅读:550来源:国知局
一种调度gpu进行批量运算的方法及装置的制造方法
【技术领域】
[0001 ] 本发明涉及GPU并行计算领域,尤其是一种调度GPU进行批量运算的方法及装置。
【背景技术】
[0002]GPU (Graphics Processing Unit,图形处理单元)可以理解为可编程的显卡,在计算机中用于图形图像的处理。经过最近几年的发展,GPU已经不限于图形图像处理,还应用到大规模的并行计算领域,使用GPU并行计算技术,有可能使算法的性能获得数倍的提升。
[0003]单块GPU通常具有成百上千的CORE (核心运算单元),远远超过CPU CORE的数量,GPU非常适合于执行可高度并行化的密集型计算任务,相比同价位的CPU而言,GPU所用用的CORE数可比CPU高数百倍,使用GPU执行这些任务,往往能提升数倍的性能。GPU技术未来将改变商业应用、科学计算、云计算、计算机可视化系统、游戏和机器人等领域,甚至重新定义我们所熟知的计算机编程方式。
[0004]GPU虽然具有比CPU更多的CORE,但由于GPU内部是以16个CORE为一组单位进行调度的,也就是说,即使一个任务只需要一个C0RE,但在GPU内部,仍然会最少占用16个CORE。因此,需要批量地向GPU提交运算任务,才能同时调度更多的CORE进行运算;并且,并发的任务数越大,越能减小GPU和主机内存的交互、越能减小GPU内部的调度开销,越能实现更高的运算性能。即使采用多线程调用GPU,但每个线程交给GPU的任务只调度一个GPU CORE参与运算,这种调度方式与批量交给GPU任务,让GPU的每个CORE都参与运算相比,其性能差距可能比后者上千倍。
[0005]我们基于CPU体系架构的应用程序,通常是采用多进程或多线程来处理多个任务,在收到一个任务后,就会调用CPU进行一次运算,而不需要将任务缓存到一起批量调用执行运算,因为这样不会带来性能提升,反而会大大增加程序的复杂度。而使用GPU则不同,GPU需要批量向其提交运算任务才能充分发挥其性能,然而,现有应用程序要改造成通过缓存批量向GPU提交任务的模式,具有相当大的难度。

【发明内容】

[0006]本发明所要解决的技术问题是:针对现有技术存在的问题,提供一种调度GPU进行批量运算的方法及装置,本发明设计了独立的GPU调度模块,该模块对外提供API,API与GHJ调度模块之间通过进程间通信机制进行通信,应用模块通过调用API向GPU调度模块发送运算任务,GPU调度模块将一个处理周期收到的计算任务缓存起来,等到GPU处理完成上一批次计算任务后,再将缓存的计算任务批量提交给GPU,然后API应用模块采用同步模式或者异步模式完成计算任务的后续操作。充分发挥GPU的运算能力,并提升GPU的内存访问性能。
[0007]本发明采用的技术方案如下:
一种调度GPU进行批量运算的方法包括:
步骤1:GPU调度模块与API应用模块通过进程间通讯机制进行通信; 步骤2:API应用模块向GPU调度模块发送运算任务,GPU调度模块将一个周期收到的计算任务在缓存中存储;当GPU处理完成上一批次计算任务后,GPU调度模块将缓存的计算任务批量提交给GPU,然后API应用模块采用同步模式或者异步模式完成计算任务的后续操作。
[0008]进一步的,所述步骤2中计算任务在缓存中存储时,分别将类型相同的计算任务存在同一组中,每组缓存中的计算任务独立提交给GPU进行批量运算。
[0009]进一步的,所述每组缓存均为双缓存,即在用缓存和备用缓存;备用缓存用于存放新接收到的计算任务,GPU运算完成后,将运算结果放入在用缓存,将计算结果发给API应用模块,随即将备用缓存中的数据批量交给GPU执行,备用缓存变为在用缓存,原来的在用缓存变为备用缓存,用于新接收到任务。
[0010]进一步的,所述在用缓存和备用缓存都为不同参数建立对应的缓存区,使每个相同参数都存放在连续的地址空间中。
[0011]进一步的,所述步骤2中同步模式指的是API应用模块向GPU调度模块发送运算任务后,等待GPU调度模块执行完运算任务后向API应用模块返回计算结果;异步模式是API应用模块向GPU调度模块发送运算任务后,不等待运算完成直接返回,当GPU调度模块运算完成并返回运算结果后,API应用模块以回调的方式完成运算结果的处理。
[0012]一种调度GPU进行批量运算的装置包括:
API应用模块,用于向GPU调度模块发送运算任务;
GPU调度模块,用于当API应用模块向GPU调度模块发送运算任务时,GPU调度模块将一个周期收到的计算任务在缓存中存储;当GPU处理完成上一批次计算任务后,GPU调度模块将缓存的计算任务批量提交给GPU,然后API应用模块采用同步模式或者异步模式完成计算任务的后续操作;其中GPU调度模块与API应用模块通过进程间通讯机制进行通信。
[0013]进一步的,所述计算任务在缓存中存储时,分别将类型相同的计算任务存在同一组中,每组缓存中的计算任务独立提交给GPU进行批量运算。
[0014]进一步的,所述每组缓存均为双缓存,即在用缓存和备用缓存;备用缓存用于存放新接收到的计算任务,GPU运算完成后,将运算结果放入在用缓存,将计算结果发给API应用模块,随即将备用缓存中的数据批量交给GPU执行,备用缓存变为在用缓存,原来的在用缓存变为备用缓存,用于新接收到任务。
[0015]进一步的,所述用缓存和备用缓存都为不同参数建立对应的缓存区,使每个相同参数都存放在连续的地址空间中。
[0016]进一步的,所述中同步模式指的是API应用模块向GPU调度模块发送运算任务后,等待GPU调度模块执行完运算任务后向API应用模块返回计算结果;异步模式是API应用模块向GPU调度模块发送运算任务后,不等待运算完成直接返回,当GPU调度模块运算完成并返回运算结果后,API应用模块以回调的方式完成运算结果的处理。
[0017]综上所述,由于采用了上述技术方案,本发明的有益效果是:
1.分别为每种类型的计算任务建立一组缓存,这样每组缓存中均为相同任务,每组缓存中的任务都独立提交给GPU进行批量运算,让GPU批量执行相同任务才能充分发挥GPU的运算能力;
2.要使GPU高效使用内存,需要预先对数据进行高效地组织,在用缓存和备用缓存都为不同参数建立对应的缓存区,使每个相同参数都存放在连续的地址空间中,以提升GPU的内存访问性能。
【附图说明】
[0018]本发明将通过例子并参照附图的方式说明,其中:
图1为调度GPU进行批量运算的示意图;
图2为调度GPU的缓存技术示意图。
【具体实施方式】
[0019]本说明书中公开的所有特征,或公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合。
[0020]本说明书(包括任何附加权利要求、摘
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1