一种在TVM中实现TensorCore卷积计算的方法及系统技术方案

技术编号:26376801 阅读:23 留言:0更新日期:2020-11-19 23:45
本申请公开了一种在TVM中实现TensorCore卷积计算的方法及系统,该方法包括:获取TensorCore卷积输入数据和卷积核的数据布局;判断该数据布局是否满足:内部矩阵M、N、K维度上的大小是(16,16,16),(8,32,16)或者(32,8,16)的倍数;如果是,判断输入数据的数据类型是否一致且均为int8或uint8;如果是,定义Tensorcore int8的卷积计算规则;执行调度优化设计;根据调度优化设计的结果,进行int8的TensorCore卷积计算。该系统包括:数据布局获取模块、第一判断模块、第二判断模块、int8卷积计算规则定义模块、float16卷积计算规则定义模块、设计模块和计算模块。通过本申请,能够卷积加速比达到1.5‑2左右,从而在AI图像识别网络模型的训练和推理过程中提高卷积计算性能。

【技术实现步骤摘要】
一种在TVM中实现TensorCore卷积计算的方法及系统
本申请涉及
,特别是涉及一种在TVM(深度学习编译器)中实现TensorCore(CUDA中的一种矩阵乘计算方法)卷积计算的方法及系统。
技术介绍
随着人工智能在语音识别、图像识别、智能控制以及复杂计算等领域的迅速发展,相应地,人工智能在算法、算力以及算料方面取得了巨大的进步。尤其在图像识别领域,在卷积神经网络中利用TensorCore技术,能够有效提高图像处理速度。而TVM是一种AI编译软件,主要作用于人工智能深度学习系统的编译器堆栈。其针对不同的深度学习框架和硬件平台实现了统一的软件栈,以尽可能高效的方式,将不同框架下的深度学习模型部署到硬件平台上。因此,如何在TVM中实现TensorCore卷积计算,是个重要的技术问题。目前在TVM中实现TensorCore卷积计算的方法,通常是对输入精度为float16(浮点数据类型16位)的数据进行计算,也就是目前TVM仅支持GPU上CUDA(ComputeUnifiedDeviceArchitecture,是一种计算架构)的f本文档来自技高网...

【技术保护点】
1.一种在TVM中实现TensorCore卷积计算的方法,其特征在于,所述方法包括:/n获取TensorCore卷积输入数据的数据布局和卷积核的数据布局;/n判断所述输入数据的数据布局和卷积核的数据布局是否满足:内部矩阵M、N、K维度上的大小是(16,16,16),(8,32,16)或者(32,8,16)的倍数;/n如果是,判断所述输入数据的数据类型是否一致,且均为int8或uint8;/n如果输入数据与卷积核的数据类型一致,且均为int8或uint8,定义Tensorcore int8的卷积计算规则;/n否则,按照float16数据类型进行卷积计算规则定义;/n对int8的卷积计算规则定义之...

【技术特征摘要】
1.一种在TVM中实现TensorCore卷积计算的方法,其特征在于,所述方法包括:
获取TensorCore卷积输入数据的数据布局和卷积核的数据布局;
判断所述输入数据的数据布局和卷积核的数据布局是否满足:内部矩阵M、N、K维度上的大小是(16,16,16),(8,32,16)或者(32,8,16)的倍数;
如果是,判断所述输入数据的数据类型是否一致,且均为int8或uint8;
如果输入数据与卷积核的数据类型一致,且均为int8或uint8,定义Tensorcoreint8的卷积计算规则;
否则,按照float16数据类型进行卷积计算规则定义;
对int8的卷积计算规则定义之后,执行调度优化设计;
根据调度优化设计的结果,进行int8的TensorCore卷积计算。


2.根据权利要求1所述的一种在TVM中实现TensorCore卷积计算的方法,其特征在于,所述对int8的卷积规则进行定义,具体为:
根据卷积神经网络的卷积计算过程,利用公式N=(w-f+2p)/s+1,计算卷积层的输出布局,其中,w为输入图片的大小,f为卷积核的大小,p为填充的大小,s为步长。


3.根据权利要求1所述的一种在TVM中实现TensorCore卷积计算的方法,其特征在于,所述进行调度优化设计,包括:
将输入数据的数据布局和卷积核的数据布局进行划分;
根据输入数据的数据布局和卷积核的数据布局的划分结果,利用CUDA设计数据存储层次。


4.根据权利要求3所述的一种在TVM中实现TensorCore卷积计算的方法,其特征在于,所述将输入数据的数据布局和卷积核的数据布局进行划分,包括:
确定输入数据的数据布局(N,H,W,IC),卷积核的数据布局(kh,kw,IC,OC);
按照卷积计算规则进行转换,将外层循环设置为(H,W,N,OC),内层循环设置为(kh,kw,IC);
根据外层循环和内存循环的设置结果,将输出图片的N,OC维度最内部的划分满足tensorcore计算部分的三个维度,外部剩余的维度绑定线程;
根据输出图片的维度,将卷积过程转换为矩阵乘形式[H,W,kh*kw*(N,IC)x(IC,OC)];
将矩阵计算部分的数据转换为设定格式的矩阵乘法,所述设定格式包括:16x16x16,8x32x16或32x8x16;
根据kh和kw,在IC维度进行Tensorcore矩阵乘法的累加。


5.根据权利要求3所述的一种在TVM中实现TensorCore卷积计算的方法,其特征在于,所述根据输入数据的数据布局和卷积核的数据布局的划分结果,利用CUDA设计数据存储层次,包括:
将一个block块内的输入数据和卷积核从全局内存读入共享内存;
利用TensorCore的wmma指令,将所述输入数据和卷积核从共享内存加载至寄存器;
在所述寄存器内,利用TensorCore指令进行进行矩阵乘法累加计算,获取计算结果;
根据所获取的wmma指令,将所述计算结果从寄存器写回共享内存;
将所述计算结果从共享内存写回全局内存。


6.一种在TVM中实现TensorCore卷积计算的系统,其特征在于...

【专利技术属性】
技术研发人员:刘文川
申请(专利权)人:苏州浪潮智能科技有限公司
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1