[发明专利]CUDA多线程处理方法、系统及相关设备有效
申请号: | 202111212768.1 | 申请日: | 2021-10-18 |
公开(公告)号: | CN114020333B | 公开(公告)日: | 2022-05-31 |
发明(设计)人: | 雷宇;李原;朱建斌;付尧;永田敏雄 | 申请(专利权)人: | 珠海市芯动力科技有限公司 |
主分类号: | G06F9/38 | 分类号: | G06F9/38;G06T1/20 |
代理公司: | 广州三环专利商标代理有限公司 44202 | 代理人: | 熊永强 |
地址: | 519000 广东省珠海市香洲区吉大*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | cuda 多线程 处理 方法 系统 相关 设备 | ||
本申请提供了一种CUDA多线程处理方法、系统及相关设备,其中,该方法包括:获取核函数对应的配置信息;在历史配置信息中不存在与配置信息相匹配的目标历史配置信息的情况下,根据配置信息生成线程的三维索引;根据配置信息对生成的三维索引进行压缩打包,并将压缩打包后的三维索引存储在存储器中;在历史配置信息中存在目标历史配置信息的情况下,获取目标历史配置信息对应的历史三维索引;根据目标历史配置信息对历史三维索引进行压缩打包,并将压缩打包后的历史三维索引存储在存储器中。本申请实施例有利于提升CUDA中多线程并行处理的效率。
技术领域
本申请涉及计算机技术领域,尤其涉及一种CUDA多线程处理方法、系统及相关设备。
背景技术
CUDA(Compute Unified Device Architecture,统一计算设备架构)是显卡厂商英伟达(NVIDIA)推出的运算平台,其采用C语言作为编程语言提供大量的高性能计算指令开发能力。CUDA中的计算离不开核函数(kernel)和线程(thread),一个核函数对应一个线程网格(grid),一个线程网格包含若干个线程块(thread block),一个线程块包含若干个线程。核函数执行线程之前,通常需要生成线程的索引,在采用低复杂度硬件的情况下,需要大量时钟周期才能生成一个线程块中的所有索引,生成索引的时延越大,会导致核函数的执行时延变大,从而会影响CUDA中并行处理的效率。
发明内容
针对上述问题,本申请提供了一种CUDA多线程处理方法、系统及相关设备,有利于提升CUDA中并行处理的效率。
为实现上述目的,本申请实施例第一方面提供了一种CUDA多线程处理方法,应用于索引生成器,该方法包括:
获取核函数对应的配置信息;
在历史配置信息中不存在与配置信息相匹配的目标历史配置信息的情况下,根据配置信息生成线程的三维索引;
根据配置信息对生成的三维索引进行压缩打包,并将压缩打包后的三维索引存储在存储器中;
在历史配置信息中存在目标历史配置信息的情况下,获取目标历史配置信息对应的历史三维索引;
根据目标历史配置信息对历史三维索引进行压缩打包,并将压缩打包后的历史三维索引存储在存储器中。
结合第一方面,在一种可能的实施方式中,配置信息包括线程块的维度信息和预先设定的迭代步长的三维索引,根据配置信息生成线程的三维索引,包括:
根据线程块的维度信息得到线程块中任意一个线程的三维索引;
采用线程块的维度信息、迭代步长和迭代步长的三维索引,对任意一个线程的三维索引进行迭代,以生成线程块中的线程的三维索引。
结合第一方面,在一种可能的实施方式中,采用线程块的维度信息、迭代步长和迭代步长的三维索引,对任意一个线程的三维索引进行迭代,以生成线程块中的线程的三维索引,包括:
采用线程块的维度信息、迭代步长和迭代步长的三维索引,对任意一个线程的三维索引进行迭代,生成线程块中第一目标线程的三维索引,第一目标线程与任意一个线程之间的间隔满足迭代步长;
采用线程块的维度信息、迭代步长和迭代步长的三维索引,对第一目标线程的三维索引进行迭代,生成线程块中第二目标线程的三维索引,第二目标线程与第一目标线程之间的间隔满足迭代步长;
重复执行采用线程块的维度信息、迭代步长和迭代步长的三维索引,对线程块中的目标线程的三维索引进行迭代,生成与目标线程之间的间隔满足迭代步长的线程的三维索引的操作,得到线程块中的线程的三维索引,目标线程为线程块中已生成三维索引的线程。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于珠海市芯动力科技有限公司,未经珠海市芯动力科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202111212768.1/2.html,转载请声明来源钻瓜专利网。