[发明专利]一种调度GPU进行批量运算的方法及装置在审
申请号: | 201510673433.8 | 申请日: | 2015-10-19 |
公开(公告)号: | CN105224410A | 公开(公告)日: | 2016-01-06 |
发明(设计)人: | 吴庆国 | 申请(专利权)人: | 成都卫士通信息产业股份有限公司 |
主分类号: | G06F9/50 | 分类号: | G06F9/50;G06F9/48 |
代理公司: | 成都九鼎天元知识产权代理有限公司 51214 | 代理人: | 徐静 |
地址: | 610041 四*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 调度 gpu 进行 批量 运算 方法 装置 | ||
技术领域
本发明涉及GPU并行计算领域,尤其是一种调度GPU进行批量运算的方法及装置。
背景技术
GPU(GraphicsProcessingUnit,图形处理单元)可以理解为可编程的显卡,在计算机中用于图形图像的处理。经过最近几年的发展,GPU已经不限于图形图像处理,还应用到大规模的并行计算领域,使用GPU并行计算技术,有可能使算法的性能获得数倍的提升。
单块GPU通常具有成百上千的CORE(核心运算单元),远远超过CPUCORE的数量,GPU非常适合于执行可高度并行化的密集型计算任务,相比同价位的CPU而言,GPU所用用的CORE数可比CPU高数百倍,使用GPU执行这些任务,往往能提升数倍的性能。GPU技术未来将改变商业应用、科学计算、云计算、计算机可视化系统、游戏和机器人等领域,甚至重新定义我们所熟知的计算机编程方式。
GPU虽然具有比CPU更多的CORE,但由于GPU内部是以16个CORE为一组单位进行调度的,也就是说,即使一个任务只需要一个CORE,但在GPU内部,仍然会最少占用16个CORE。因此,需要批量地向GPU提交运算任务,才能同时调度更多的CORE进行运算;并且,并发的任务数越大,越能减小GPU和主机内存的交互、越能减小GPU内部的调度开销,越能实现更高的运算性能。即使采用多线程调用GPU,但每个线程交给GPU的任务只调度一个GPUCORE参与运算,这种调度方式与批量交给GPU任务,让GPU的每个CORE都参与运算相比,其性能差距可能比后者上千倍。
我们基于CPU体系架构的应用程序,通常是采用多进程或多线程来处理多个任务,在收到一个任务后,就会调用CPU进行一次运算,而不需要将任务缓存到一起批量调用执行运算,因为这样不会带来性能提升,反而会大大增加程序的复杂度。而使用GPU则不同,GPU需要批量向其提交运算任务才能充分发挥其性能,然而,现有应用程序要改造成通过缓存批量向GPU提交任务的模式,具有相当大的难度。
发明内容
本发明所要解决的技术问题是:针对现有技术存在的问题,提供一种调度GPU进行批量运算的方法及装置,本发明设计了独立的GPU调度模块,该模块对外提供API,API与GPU调度模块之间通过进程间通信机制进行通信,应用模块通过调用API向GPU调度模块发送运算任务,GPU调度模块将一个处理周期收到的计算任务缓存起来,等到GPU处理完成上一批次计算任务后,再将缓存的计算任务批量提交给GPU,然后API应用模块采用同步模式或者异步模式完成计算任务的后续操作。充分发挥GPU的运算能力,并提升GPU的内存访问性能。
本发明采用的技术方案如下:
一种调度GPU进行批量运算的方法包括:
步骤1:GPU调度模块与API应用模块通过进程间通讯机制进行通信;
步骤2:API应用模块向GPU调度模块发送运算任务,GPU调度模块将一个周期收到的计算任务在缓存中存储;当GPU处理完成上一批次计算任务后,GPU调度模块将缓存的计算任务批量提交给GPU,然后API应用模块采用同步模式或者异步模式完成计算任务的后续操作。
进一步的,所述步骤2中计算任务在缓存中存储时,分别将类型相同的计算任务存在同一组中,每组缓存中的计算任务独立提交给GPU进行批量运算。
进一步的,所述每组缓存均为双缓存,即在用缓存和备用缓存;备用缓存用于存放新接收到的计算任务,GPU运算完成后,将运算结果放入在用缓存,将计算结果发给API应用模块,随即将备用缓存中的数据批量交给GPU执行,备用缓存变为在用缓存,原来的在用缓存变为备用缓存,用于新接收到任务。
进一步的,所述在用缓存和备用缓存都为不同参数建立对应的缓存区,使每个相同参数都存放在连续的地址空间中。
进一步的,所述步骤2中同步模式指的是API应用模块向GPU调度模块发送运算任务后,等待GPU调度模块执行完运算任务后向API应用模块返回计算结果;异步模式是API应用模块向GPU调度模块发送运算任务后,不等待运算完成直接返回,当GPU调度模块运算完成并返回运算结果后,API应用模块以回调的方式完成运算结果的处理。
一种调度GPU进行批量运算的装置包括:
API应用模块,用于向GPU调度模块发送运算任务;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于成都卫士通信息产业股份有限公司,未经成都卫士通信息产业股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510673433.8/2.html,转载请声明来源钻瓜专利网。