[发明专利]用于生成CUDA程序的设备、方法和存储介质在审
申请号: | 202010366499.3 | 申请日: | 2020-04-30 |
公开(公告)号: | CN111552478A | 公开(公告)日: | 2020-08-18 |
发明(设计)人: | 菅立恒 | 申请(专利权)人: | 上海商汤智能科技有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41;G06F8/20 |
代理公司: | 北京林达刘知识产权代理事务所(普通合伙) 11277 | 代理人: | 刘新宇 |
地址: | 200233 上海市徐*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 用于 生成 cuda 程序 设备 方法 存储 介质 | ||
本公开涉及一种用于生成CUDA程序的设备、方法和存储介质,其中,所述设备包括:存储访问库,包括多个存储访问模板,所述存储访问模板包括用于实现数据访问的代码模块;函数调用库,包括多个函数调用模板,所述函数调用模板包括核函数的调用配置;运算模块,包括多个封装运算单元,所述封装运算单元用于实现特定的运算功能;其中,所述CUDA程序是基于对所述存储访问模板、所述函数调用模板以及所述封装运算单元的调用生成的。
技术领域
本公开涉及计算机视觉技术领域,尤其涉及一种用于生成CUDA程序的设备、方法和存储介质。
背景技术
统一计算设备架构(Compute Unified Device Architecture,CUDA)程序是一种通用并行计算架构的程序,可以应用于计算机视觉任务中。随着计算机视觉技术的兴起,CUDA程序的开发有着广泛的需求。近年来,大量研究致力于对CUDA中程序的优化,使CUDA程序的性能得到提高。
然而,计算机视觉技术领域面临着巨量的CUDA程序开发任务,如何提高CUDA程序的生成效率是当前面临的一个紧迫需要解决的问题。
发明内容
本公开提出了一种生成CUDA程序的方案。
根据本公开的一方面,提供了一种用于生成CUDA程序的设备,包括:
存储访问库,包括多个存储访问模板,所述存储访问模板包括用于实现数据访问的代码模块;
函数调用库,包括多个函数调用模板,所述函数调用模板包括核函数的调用配置;
运算模块,包括多个封装运算单元,所述封装运算单元用于实现特定的运算功能;
其中,所述CUDA程序是基于对所述存储访问模板、所述函数调用模板以及所述封装运算单元的调用生成的。
在一个或多个可选实施例中,每个所述存储访问模板包括适用于特定运算类型和/或特定数据类型情况下的数据访问的代码模块。
在一个或多个可选实施例中,所述代码模块包括用于调用所述封装运算单元的计算参数。
在一个或多个可选实施例中,所述数据访问包括以下至少一种:
从全局存储器中访问所述封装运算单元的输入数据,以自动变量的方式将所述封装运算单元的中间数据存储在寄存器中,将所述封装运算单元的输出数据存储在全局存储器中;或者,
从全局存储器中访问所述封装运算单元的输入数据,以数组的方式将所述封装运算单元的中间数据存储在共享存储器中;将所述封装运算单元的输出数据存储在全局存储器中。
在一个或多个可选实施例中,所述多个存储访问模板包括第一存储访问模板,所述第一存储访问模板用于实现第一预设访问模式,在所述第一预设访问模式下,线程对运算类型为第一运算类型和/或数据类型为第一数据类型的数据读写性能达到特定条件。
在一个或多个可选实施例中,所述运算类型包括以下至少一种:向量运算、卷积运算、矩阵运算。
在一个或多个可选实施例中,所述核函数的调用配置包括下列中的至少一种:线程块的尺寸、线程流配置、动态共享存储配置和线程网格的尺寸。
在一个或多个可选实施例中,所述线程块包括多个线程,每个线程用于执行所述封装运算单元的一次运算。
在一个或多个可选实施例中,所述多个函数调用模板包括第一函数调用模板,所述第一函数调用模板用于实现第一预设调用模式,在所述第一预设调用模式下,线程对数据维度为第一数据维度和/或数据类型为第一数据类型的数据执行所述封装运算单元的一次运算。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海商汤智能科技有限公司,未经上海商汤智能科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010366499.3/2.html,转载请声明来源钻瓜专利网。
- 上一篇:玻璃斜边背胶工具
- 下一篇:一种群组成员的管理方法、电子设备和存储介质