本发明的实施例涉及数据处理,尤其涉及用于广播计算的方法和电子装置。
背景技术:
1、人工智能(ai)模型在硬件设备部署的时候,通常会使用各种推理引擎。这些推理引擎背后是由包含许多算子实现的算子库构成,广播算子(或广播计算)就是众多算子之一。广播计算是指,如果用于执行运算的两个张量中的一个张量的多个维度中的一个维度为1,另一张量的对应维度不为1,则将所述一个张量在所述一个维度上扩展以匹配所述另一张量的对应维度。然而,仍然需要提高广播计算的效率、支持高维度的广播计算、以及提高实现广播计算的代码的通用性的技术。
技术实现思路
1、提供本
技术实现要素:
以简要的形式介绍在以下具体实施方式中进一步描述的构思的选择。本发明内容不意在确定要求保护的主题的关键特征或/或必要特征,也不意在用于帮助确定要求保护的主题的范围。
2、将在接下来的描述中部分阐述本发明构思另外的方面和/或优点,还有一部分通过描述将是清楚的,和/或可以通过各种示例实施例的实施而得知。
3、根据示例实施例,提供了一种用于广播计算的方法,所述方法包括:基于第一张量的第一形状和第二张量的第二形状,确定与第一张量和第二张量对应的广播类型;执行预先生成的与所述广播类型对应的程序以:确定与第一形状的每个维度对应的偏移量和与第二形状的每个维度对应的偏移量;基于所述广播类型、与第一形状的每个维度对应的偏移量和与第二形状的每个维度对应的偏移量,确定与第一张量的每个维度对应的偏移量以及与第二张量的每个维度对应的偏移量;基于与第一张量的每个维度对应的偏移量、与第二张量的每个维度对应的偏移量,确定第一张量的待执行运算的第一元素的第一偏移量和第二张量的待执行运算的第二元素的第二偏移量;基于第一偏移量和第二偏移量分别从存储器获取第一元素和第二元素,并对第一元素和第二元素执行预定运算。
4、在本技术中,通过在接收张量之前,预先生成与每种广播类型对应的用于广播计算的程序,能够减少生成用于广播计算的程序的时间,从而提高广播计算的效率。
5、确定第一偏移量和第二偏移量的步骤包括:基于与第一张量的每个维度对应的偏移量、与第二张量的每个维度对应的偏移量,确定与第一张量的每个维度对应的累积偏移量以及与第二张量的每个维度对应的累积偏移量,基于与第一张量的每个维度对应的累积偏移量之和确定与第一张量对应的累积偏移量,基于与第二张量的每个维度对应的累积偏移量之和确定与第二张量对应的累积偏移量,基于与第一张量对应的累积偏移量确定第一偏移量,基于与第二张量对应的累积偏移量确定第二偏移量。
6、确定第一偏移量和第二偏移量的步骤包括:针对作为第一张量或第二张量的多个维度中的除了第一维度和第m维度的维度中的每个维度的第i维度,将第i变量作为当前变量,将第i维度作为当前维度执行比较步骤,其中,当前变量被表示为第n变量,当前维度被表示为第n维度,比较步骤包括:将第n变量与第一张量的第n维度的维度尺寸和第二张量的第n维度的维度尺寸中的较大的维度尺寸进行比较,其中,当第n变量小于第一张量的第n维度的维度尺寸和第二张量的第n维度的维度尺寸中的较大的维度尺寸时,通过将第n变量加1来更新第n变量;将与第一张量的第n+1维度对应的累积偏移量、与第二张量的第n+1维度对应的累积偏移量、与第n+1维度对应的第n+1变量的初始值设置为预定值;以及将第i+1变量作为当前变量,将第i+1维度作为当前维度执行所述比较步骤,其中,当第n变量大于或等于第一张量的第n维度的维度尺寸和第二张量的第n维度的维度尺寸中的较大的维度尺寸时,基于与第一张量的第n-1维度对应的偏移量和与第一张量的第n-1维度对应的累积偏移量之和,更新与第一张量的第n-1维度对应的累积偏移量;基于与第二张量的第n-1维度对应的偏移量和与第二张量的第n-1维度对应的累积偏移量之和,更新与第二张量的第n-1维度对应的累积偏移量;以及将第i-1变量作为当前变量,将第i-1维度作为当前维度执行所述比较步骤,其中,第一维度是所述多个维度中的最高维度,第m维度是所述多个维度中的最低维度,其中,i是大于1且小于最高维度数的整数。
7、确定第一偏移量和第二偏移量的步骤还包括:将与第一张量对应的累积偏移量的初始值设置为预定值,将与第二张量对应的累积偏移量的初始值设置为预定值,将与第一张量的第一维度对应的累积偏移量、与第二张量的第一维度对应的累积偏移量、与第一维度对应的第一变量的初始值设置为预定值,将第一变量与第一张量的第一维度的维度尺寸和第二张量的第一维度的维度尺寸中的较大的维度尺寸进行比较,其中,当第一变量小于第一张量的第一维度的维度尺寸和第二张量的第一维度的维度尺寸中的较大的维度尺寸时,通过将第一变量加1来更新第一变量;将与第一张量的第二维度对应的累积偏移量、与第二张量的第二维度对应的累积偏移量、与第二维度对应的第二变量的初始值设置为预定值;以及将第二变量作为当前变量,将第二维度作为当前维度执行所述比较步骤,其中,当第一变量大于或等于第一张量的第一维度的维度尺寸和第二张量的第一维度的维度尺寸中的较大的维度尺寸时,处理结束。
8、确定第一偏移量和第二偏移量的步骤还包括:将第m变量与第一张量的第m维度的维度尺寸和第二张量的第m维度的维度尺寸中的较大的维度尺寸进行比较,其中,当第m变量小于第一张量的第m维度的维度尺寸和第二张量的第m维度的维度尺寸中的较大的维度尺寸时,通过将第m变量增加1来更新第m变量;基于与第一张量的每个维度对应的累计偏移量之和,更新与第一张量对应的累积偏移量;将与第一张量对应的累积偏移量确定为用于确定待执行运算的第一元素在存储器中的第一存储位置的第一偏移量;基于与第二张量的每个维度对应的累计偏移量之和,更新与第二张量对应的累积偏移量;将与第二张量对应的累积偏移量确定为用于确定待执行运算的第二元素在存储器中的第二存储位置的第二偏移量;基于与第一张量的第m维度对应的偏移量和与第一张量的第m维度对应的累积偏移量之和,更新与第一张量的第m维度对应的累积偏移量;基于与第二张量的第m维度对应的偏移量和与第二张量的第m维度对应的累积偏移量之和,更新与第二张量的第m维度对应的累积偏移量;重复将第m变量与第一张量的第m维度的维度尺寸和第二张量的第m维度的维度尺寸中的较大的维度尺寸进行比较的处理,其中,当第m变量大于或等于第一张量的第m维度的维度尺寸和第二张量的第m维度的维度尺寸中的较大的维度尺寸时,基于与第一张量的第m-1维度对应的偏移量和与第一张量的第m-1维度对应的累积偏移量之和,更新与第一张量的第m-1维度对应的累积偏移量;基于与第二张量的第m-1维度对应的偏移量和与第二张量的第m-1维度对应的累积偏移量之和,更新与第二张量的第m-1维度对应的累积偏移量;将第m-1变量作为当前变量,将第m-1维度作为当前维度执行所述比较步骤。
9、在本技术中,通过包括用加法操作代替乘法操作的多个循环来确定张量的元素的存储器位置,其中,用于实现上述多个循环的代码能够适用于各种编译器,提高了广播计算的通用性。另一方面,用于实现上述多个循环的代码能够通过编译器的自动矢量化特性来优化,提高运行用于实现广播计算的代码的性能,从而提高广播计算的效率的技术。此外,通过包括用加法操作代替乘法操作的多个循环来寻找张量的元素的存储器位置,可适用于各种维度的张量的广播计算。
10、确定与第一张量的每个维度对应的偏移量以及与第二张量的每个维度对应的偏移量的步骤包括:当所述广播类型的所述维度的数值为第一值时,将与第一张量的所述维度对应的偏移量确定为与第一形状的所述维度对应的偏移量,将与第二张量的所述维度对应的偏移量确定为与第二形状的所述维度对应的偏移量,当所述广播类型的所述维度的数值为第二值时,将与第一张量的所述维度对应的偏移量确定为第二预定值,将与第二张量的所述维度对应的偏移量确定为与第二形状的所述维度对应的偏移量,当所述广播类型的所述维度的数值为第三值时,将第一张量的与所述维度对应的偏移量确定为与第一形状的所述维度对应的偏移量,将与第二张量的所述维度对应的偏移量确定为第二预定值。
11、确定与第一形状的每个维度对应的偏移量的步骤包括:针对第一形状的维度中的除了最右侧的维度中的每个,将与第一形状的所述维度对应的偏移量确定为在所述维度之后的维度的维度尺寸的乘积,并且将与第一形状的最右侧的维度对应的偏移量确定为第三预定值,其中,确定与第二形状的每个维度对应的偏移量的步骤包括:针对第二形状的维度中的除了最右侧的维度中的每个,将与第二形状的所述维度对应的偏移量确定为在所述维度之后的维度的维度尺寸的乘积,并且将与第二形状的最右侧的维度对应的偏移量确定为第三预定值。
12、确定与第一张量和第二张量对应的所述广播类型的步骤包括:将第一形状与第二形状逐个维度进行比较,当第一形状与第二形状在相应的维度上的维度尺寸相等时,将所述广播类型的相应的维度的数值确定为第一值,当第一形状与第二形状在相应的维度上的维度尺寸不相等并且第一形状在相应的维度上的维度尺寸为1时,将所述广播类型的相应的维度的数值确定为第二值,当第一形状与第二形状在相应的维度上的维度尺寸不相等并且第二形状在相应的维度上的维度尺寸为1时,将所述广播类型的相应的维度的数值确定为第三值。
13、所述方法还包括:基于第一张量的第一形状和第二张量的第二形状,确定第一张量的第一合并形状和第二张量的第二合并形状,基于第一合并形状和第二合并形状,确定与第一合并形状的每个维度对应的偏移量、与第二合并形状的每个维度对应的偏移量和与第一张量和第二张量对应的广播类型。
14、在本技术中,通过分别合并张量的形状,可以将降低张量的维度数,从而支持高维度的张量的广播计算。另一方面,在本技术中,通过分别合并张量的形状,可以减少包括在用于实现广播计算的方法的代码中的循环的数量,从而减少用于广播计算的计算量。
15、确定第一张量的第一合并形状和第二张量的第二合并形状的步骤包括:确定第一形状和第二形状中的连续的至少两个维度,其中,针对所述至少两个维度中的每个维度,第一形状的所述维度的维度尺寸与第二形状的所述维度的维度尺寸相同,通过将第一形状的所述至少两个维度合并为一个维度,来生成第一合并形状,其中,第一合并形状的合并后的维度的维度尺寸为第一形状的所述至少两个维度的维度尺寸的乘积,通过将第二形状的所述至少两个维度合并为一个维度,来生成第二合并形状,其中,第二合并形状的合并后的维度的维度尺寸为第二形状的所述至少两个维度的维度尺寸的乘积。
16、根据示例实施例,提供了一种电子装置,所述电子装置包括:广播类型确定单元,被配置为:基于存储在存储器中的第一张量的第一形状和存储在存储器中的第二张量的第二形状,确定与第一张量和第二张量对应的广播类型;广播计算单元,被配置为:执行预先生成的与所述广播类型对应的程序以:确定与第一形状的每个维度对应的偏移量和与第二形状的每个维度对应的偏移量,基于所述广播类型、与第一形状的每个维度对应的偏移量和与第二形状的每个维度对应的偏移量,确定与第一张量的每个维度对应的偏移量以及与第二张量的每个维度对应的偏移量,基于与第一张量的每个维度对应的偏移量、与第二张量的每个维度对应的偏移量,确定第一张量的待执行运算的第一元素的第一偏移量和第二张量的待执行运算的第二元素的第二偏移量,基于第一偏移量和第二偏移量分别从存储器获取第一元素和第二元素,并对第一元素和第二元素执行预定运算。
17、在本技术中,通过在接收张量之前,预先生成与每种广播类型对应的用于广播计算的程序,能够减少生成用于广播计算的程序的时间,从而提高广播计算的效率。
18、广播计算单元被配置为:基于与第一张量的每个维度对应的偏移量、与第二张量的每个维度对应的偏移量,确定与第一张量的每个维度对应的累积偏移量以及与第二张量的每个维度对应的累积偏移量,基于与第一张量的每个维度对应的累积偏移量之和确定与第一张量对应的累积偏移量,基于与第二张量的每个维度对应的累积偏移量之和确定与第二张量对应的累积偏移量,基于与第一张量对应的累积偏移量确定第一偏移量,基于与第二张量对应的累积偏移量确定第二偏移量。
19、广播计算单元被配置为:针对作为第一张量或第二张量的多个维度中的除了第一维度和第m维度的维度中的每个维度的第i维度,将第i变量作为当前变量,将第i维度作为当前维度执行比较步骤,其中,当前变量被表示为第n变量,当前维度被表示为第n维度,比较步骤包括:将第n变量与第一张量的第n维度的维度尺寸和第二张量的第n维度的维度尺寸中的较大的维度尺寸进行比较,其中,当第n变量小于第一张量的第n维度的维度尺寸和第二张量的第n维度的维度尺寸中的较大的维度尺寸时,通过将第n变量加1来更新第n变量;将与第一张量的第n+1维度对应的累积偏移量、与第二张量的第n+1维度对应的累积偏移量、与第n+1维度对应的第n+1变量的初始值设置为第一预定值;以及将第i+1变量作为当前变量,将第i+1维度作为当前维度执行所述比较步骤,其中,当第n变量大于或等于第一张量的第n维度的维度尺寸和第二张量的第n维度的维度尺寸中的较大的维度尺寸时,基于与第一张量的第n-1维度对应的偏移量和与第一张量的第n-1维度对应的累积偏移量之和,更新与第一张量的第n-1维度对应的累积偏移量;基于与第二张量的第n-1维度对应的偏移量和与第二张量的第n-1维度对应的累积偏移量之和,更新与第二张量的第n-1维度对应的累积偏移量;以及将第i-1变量作为当前变量,将第i-1维度作为当前维度执行所述比较步骤,其中,第一维度是所述多个维度中的最高维度,第m维度是所述多个维度中的最低维度,其中,i是大于1且小于最高维度数的整数。
20、广播计算单元还被配置为:将与第一张量对应的累积偏移量的初始值设置为第一预定值,将与第二张量对应的累积偏移量的初始值设置为第一预定值,将与第一张量的第一维度对应的累积偏移量、与第二张量的第一维度对应的累积偏移量、与第一维度对应的第一变量的初始值设置为第一预定值,将第一变量与第一张量的第一维度的维度尺寸和第二张量的第一维度的维度尺寸中的较大的维度尺寸进行比较,其中,当第一变量小于第一张量的第一维度的维度尺寸和第二张量的第一维度的维度尺寸中的较大的维度尺寸时,通过将第一变量加1来更新第一变量;将与第一张量的第二维度对应的累积偏移量、与第二张量的第二维度对应的累积偏移量、与第二维度对应的第二变量的初始值设置为第一预定值;以及将第二变量作为当前变量,将第二维度作为当前维度执行所述比较步骤,其中,当第一变量大于或等于第一张量的第一维度的维度尺寸和第二张量的第一维度的维度尺寸中的较大的维度尺寸时,处理结束。
21、广播计算单元还被配置为:将第m变量与第一张量的第m维度的维度尺寸和第二张量的第m维度的维度尺寸中的较大的维度尺寸进行比较,其中,当第m变量小于第一张量的第m维度的维度尺寸和第二张量的第m维度的维度尺寸中的较大的维度尺寸时,通过将第m变量增加1来更新第m变量;基于与第一张量的每个维度对应的累计偏移量之和,更新与第一张量对应的累积偏移量;将与第一张量对应的累积偏移量确定为用于确定待执行运算的第一元素在存储器中的第一存储位置的第一偏移量;基于与第二张量的每个维度对应的累计偏移量之和,更新与第二张量对应的累积偏移量;将与第二张量对应的累积偏移量确定为用于确定待执行运算的第二元素在存储器中的第二存储位置的第二偏移量;基于与第一张量的第m维度对应的偏移量和与第一张量的第m维度对应的累积偏移量之和,更新与第一张量的第m维度对应的累积偏移量;基于与第二张量的第m维度对应的偏移量和与第二张量的第m维度对应的累积偏移量之和,更新与第二张量的第m维度对应的累积偏移量;重复将第m变量与第一张量的第m维度的维度尺寸和第二张量的第m维度的维度尺寸中的较大的维度尺寸进行比较的处理,其中,当第m变量大于或等于第一张量的第m维度的维度尺寸和第二张量的第m维度的维度尺寸中的较大的维度尺寸时,基于与第一张量的第m-1维度对应的偏移量和与第一张量的第m-1维度对应的累积偏移量之和,更新与第一张量的第m-1维度对应的累积偏移量;基于与第二张量的第m-1维度对应的偏移量和与第二张量的第m-1维度对应的累积偏移量之和,更新与第二张量的第m-1维度对应的累积偏移量;将第m-1变量作为当前变量,将第m-1维度作为当前维度执行所述比较步骤。
22、在本技术中,通过包括用加法操作代替乘法操作的多个循环来确定张量的元素的存储器位置,其中,用于实现上述多个循环的代码能够适用于各种编译器,提高了广播计算的通用性。另一方面,用于实现上述多个循环的代码能够通过编译器的自动矢量化特性来优化,提高运行用于实现广播计算的代码的性能,从而提高广播计算的效率的技术。此外,通过包括用加法操作代替乘法操作的多个循环来寻找张量的元素的存储器位置,可适用于各种维度的张量的广播计算。
23、广播计算单元被配置为:当所述广播类型的所述维度的数值为第一值时,将与第一张量的所述维度对应的偏移量确定为与第一形状的所述维度对应的偏移量,将与第二张量的所述维度对应的偏移量确定为与第二形状的所述维度对应的偏移量,当所述广播类型的所述维度的数值为第二值时,将与第一张量的所述维度对应的偏移量确定为第二预定值,将与第二张量的所述维度对应的偏移量确定为与第二形状的所述维度对应的偏移量,当所述广播类型的所述维度的数值为第三值时,将第一张量的与所述维度对应的偏移量确定为与第一形状的所述维度对应的偏移量,将与第二张量的所述维度对应的偏移量确定为第二预定值。
24、广播计算单元被配置为:针对第一形状的维度中的除了最右侧的维度中的每个,将与第一形状的所述维度对应的偏移量确定为在所述维度之后的维度的维度尺寸的乘积,并且将与第一形状的最右侧的维度对应的偏移量确定为第三预定值,以确定与第一形状的每个维度对应的偏移量;针对第二形状的维度中的除了最右侧的维度中的每个,将与第二形状的所述维度对应的偏移量确定为在所述维度之后的维度的维度尺寸的乘积,并且将与第二形状的最右侧的维度对应的偏移量确定为第三预定值,以确定与第二形状的每个维度对应的偏移量。
25、广播类型确定单元被配置为:将第一形状与第二形状逐个维度进行比较,当第一形状与第二形状在相应的维度上的维度尺寸相等时,将所述广播类型的相应的维度的数值确定为第一值,当第一形状与第二形状在相应的维度上的维度尺寸不相等并且第一形状在相应的维度上的维度尺寸为1时,将所述广播类型的相应的维度的数值确定为第二值,当第一形状与第二形状在相应的维度上的维度尺寸不相等并且第二形状在相应的维度上的维度尺寸为1时,将所述广播类型的相应的维度的数值确定为第三值。
26、所述电子装置还包括:形状合并单元,被配置为:基于第一张量的第一形状和第二张量的第二形状,确定第一张量的第一合并形状和第二张量的第二合并形状,其中,广播类型确定单元被配置为:基于第一合并形状和第二合并形状,确定与第一张量和第二张量对应的广播类型,其中,广播计算单元被配置为:确定与第一合并形状的每个维度对应的偏移量、与第二合并形状的每个维度对应的偏移量。
27、在本技术中,通过分别合并张量的形状,可以将降低张量的维度数,从而支持高维度的张量的广播计算。另一方面,在本技术中,通过分别合并张量的形状,可以减少包括在用于实现广播计算的方法的代码中的循环的数量,从而减少用于广播计算的计算量。
28、形状合并单元被配置为:确定第一形状和第二形状中的连续的至少两个维度,其中,针对所述至少两个维度中的每个维度,第一形状的所述维度的维度尺寸与第二形状的所述维度的维度尺寸相同,通过将第一形状的所述至少两个维度合并为一个维度,来生成第一合并形状,其中,第一合并形状的合并后的维度的维度尺寸为第一形状的所述至少两个维度的维度尺寸的乘积,通过将第二形状的所述至少两个维度合并为一个维度,来生成第二合并形状,其中,第二合并形状的合并后的维度的维度尺寸为第二形状的所述至少两个维度的维度尺寸的乘积。
29、根据示例实施例,提供了一种电子装置,所述电子装置包括:广播类型确定单元,被配置为:基于存储在存储器中的第一张量的第一形状和存储在存储器中的第二张量的第二形状,确定与第一张量和第二张量对应的广播类型;广播计算单元,被配置为:执行预先生成的与所述广播类型对应的程序以:确定与第一形状的每个维度对应的偏移量和与第二形状的每个维度对应的偏移量,基于所述广播类型、与第一形状的每个维度对应的偏移量和与第二形状的每个维度对应的偏移量,确定与第一张量的每个维度对应的偏移量以及与第二张量的每个维度对应的偏移量,基于与第一张量的每个维度对应的偏移量、与第二张量的每个维度对应的偏移量,确定第一张量的待执行运算的第一元素的第一偏移量和第二张量的待执行运算的第二元素的第二偏移量,基于第一偏移量和第二偏移量分别从存储器获取第一元素和第二元素,并对第一元素和第二元素执行预定运算,其中,第一张量和第二张量从一个或多个图像被提取。
1.一种用于广播计算的方法,所述方法包括:
2.根据权利要求1所述的方法,其中,确定第一偏移量和第二偏移量的步骤包括:
3.根据权利要求2所述的方法,其中,确定第一偏移量和第二偏移量的步骤包括:
4.根据权利要求1所述的方法,其中,确定与第一张量的每个维度对应的偏移量以及与第二张量的每个维度对应的偏移量的步骤包括:
5.根据权利要求1所述的方法,
6.根据权利要求1所述的方法,其中,确定与第一张量和第二张量对应的所述广播类型的步骤包括:
7.根据权利要求1所述的方法,还包括:
8.根据权利要求7所述的方法,其中,确定第一张量的第一合并形状和第二张量的第二合并形状的步骤包括:
9.一种用于处理图像的方法,所述方法包括:
10.一种电子装置,包括:
11.一种电子装置,包括:
