【技术实现步骤摘要】
【国外来华专利技术】使用SIMD指令进行高效的直接卷积
本公开一般而言涉及数字信号处理、机器学习和神经网络,并且更特别地涉及用于使用卷积运算对信号进行滤波的系统和方法。
技术介绍
在数字信号处理中,卷积是数据集中输入值及其紧邻值的加权和,产生输出数据集的输出值。这些数据集可以是一维或多维的,其中对应的数据组织确定作为输入值的紧邻邻居的值。卷积的加权值是在卷积内核中指定的,其中内核处理与输入和输出数据集相同数量的维度。卷积运算在大量各种信号处理应用中是有用的,并且是深度神经网络许多方面的运算不可或缺的一部分。卷积可以在机器学习应用中广泛使用。在这种上下文中,通常使用许多小的卷积内核将卷积应用于单个数据集。因此,卷积通常是机器学习应用的计算密集部分,因此以高效的手段执行卷积运算具有越来越大的价值。提高卷积效率的一种流行方法是降低卷积,将卷积运算转换成等效的计算过程,该过程可以通过优化的密集线性代数来解决。这允许使用优化的通用矩阵乘法(GEMM)例程,这些例程善于利用数据的固有重用、最小化片外带宽需求以及细分可以跨许多核心分布的计算。这种方法也有显著的缺点,降低卷积会增加额外的处理器开销,并显著增加数据大小。数据大小的增加使高速缓存变得困难,并增加了片外带宽的使用量,从而导致解决方案倾向于使用昂贵的高性能存储器来代替高速缓存和常规的存储器技术。第二种方法是在频域中执行卷积。这要求将输入数据集和卷积内核分别转换到频域,将两个转换后的数据集一起相乘,并将逆频率变换应用于乘积。这种方法具有降低卷积的类似优点和缺点,乘法运算可 ...
【技术保护点】
1.一种系统,包括:/n处理器,被配置为对向量执行卷积,其中,为了对所述向量执行卷积,所述处理器被配置为执行多个向量指令,其中所述多个向量指令中的每个向量指令被配置为对多个具有多个数据位的数据通道执行运算,并且其中所述多个向量指令被配置为:/n加载多个源向量,其中,为了加载所述多个源向量,所述多个向量指令被配置为加载中心向量、从所述向量的第一数据通道之前的一个或多个数据通道开始的多个数据通道的左向量、以及从所述向量的第一数据通道之后的一个或多个数据通道开始的多个数据通道的右向量;以及/n生成一个或多个输出向量,其中,为了生成所述一个或多个输出向量,所述多个向量指令被配置为将通过用于所述卷积的相应加权值缩放的所述多个源向量中的每个源向量与所述一个或多个输出向量相加。/n
【技术特征摘要】
【国外来华专利技术】20170908 US 62/556,274;20180330 US 15/941,9751.一种系统,包括:
处理器,被配置为对向量执行卷积,其中,为了对所述向量执行卷积,所述处理器被配置为执行多个向量指令,其中所述多个向量指令中的每个向量指令被配置为对多个具有多个数据位的数据通道执行运算,并且其中所述多个向量指令被配置为:
加载多个源向量,其中,为了加载所述多个源向量,所述多个向量指令被配置为加载中心向量、从所述向量的第一数据通道之前的一个或多个数据通道开始的多个数据通道的左向量、以及从所述向量的第一数据通道之后的一个或多个数据通道开始的多个数据通道的右向量;以及
生成一个或多个输出向量,其中,为了生成所述一个或多个输出向量,所述多个向量指令被配置为将通过用于所述卷积的相应加权值缩放的所述多个源向量中的每个源向量与所述一个或多个输出向量相加。
2.如权利要求1所述的系统,其中,为了加载左向量和右向量,所述多个向量指令被配置为:
加载所述向量之前紧邻的先前向量;
加载所述向量之后紧邻的后续向量;
执行向量提取指令,以使用所述先前向量和所述向量生成左向量;以及
执行其他向量提取指令,以使用所述向量和所述后续向量生成右向量。
3.如权利要求2所述的系统,其中,所述向量提取指令被配置为:
将第一向量寄存器与第二向量寄存器级联以产生中间结果;
将所述中间结果左移多个通道;以及
生成包含所述中间结果的上部的输出向量。
4.如权利要求1所述的系统:
其中,所述多个向量指令还被配置为加载用于所述卷积的多个加权值的一个或多个加权向量;以及
其中,为了将通过用于所述卷积的相应加权值缩放的所述多个源向量中的每个源向量与所述一个或多个输出向量中的特定输出向量相加,所述多个向量指令包括针对所述多个源向量中的每个源向量的向量缩放指令,每个源向量的向量缩放指令被配置为:
从所述一个或多个加权向量中的指定的加权向量的指定通道加载用于所述卷积的相应加权值;
将所述多个源向量中的一个源向量的多个数据通道中的每个通道乘以所述相应加权值以生成经缩放的向量;
将经缩放的向量与所述一个或多个输出向量中的所述特定输出向量相加。
5.如权利要求1所述的系统,其中,对所述向量的所述卷积实现步幅值,其中,在针对要包括的每个数据通道的卷积中要省略的数据通道的值基于所述步幅值,并且其中,为了加载所述多个源向量,所述多个向量指令被配置为:
加载所述向量之前紧邻的先前向量;
加载所述向量之后紧邻的后续向量;
执行向量提取指令,以使用所述先前向量、所述向量和所述后续向量生成第一中间向量和第二中间向量;和
执行向量混洗指令,以使用所述第一中间向量和所述第二中间向量加载左向量;
执行向量混洗指令,以使用所述向量和所述后续向量加载中心向量和右向量。
6.如权利要求1所述的系统,其中,所述卷积是多维卷积,并且其中,所述一个或多个输出向量包括多个输出向量。
7.如权利要求1所述的系统,其中,所述处理器被配置为执行所述卷积作为卷积神经网络的一部分。
8.一种方法,包括:
由包括实现向量指令的处理器的计算机对向量执行卷积,包括:
加载多个源向量,包括中心向量、包括从所述向量的第一数据通道之前的一个或多个数据通道开始的数据通道的左向量、以及包括从所述向量的第一数据通道之后的一个或多个数据通道开始的数据通道的右向量;以及
生成包括所述多个源向量的加权和的一个或多个输出向量,其中,生成所述一个或多个输出向量包括:将通过用于所述卷积的相应加权值缩放的所述多个源向量中的每个源向量与所述一个或多个输出向量相加;以及
其中向量指令是对一个或多个数据寄存器操作的指令,所述一个或多个数据寄存器包括多个数据通道,每个数据通道包括多个数据位。
9.如权利要求8所述的方法,其中,左向量和右向量的加载包括:
加载所述向量之前紧邻的先前向量;
加载所述向量之后紧邻的后续向量;
执行向量提取指令,以使用所述先前向量和所述向量生成左向量;以及
执行所...
【专利技术属性】
技术研发人员:J·R·戴蒙德,A·P·帕特尔,
申请(专利权)人:甲骨文国际公司,
类型:发明
国别省市:美国;US
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。