Skip to content
版 本

FusedMulAdd

产 品 支 持 情 况

产 品

是 否 支 持

Ascend 950PR/Ascend 950DT

Atlas A3 训 练 系 列 产 品/Atlas A3 推 理 系 列 产 品

Atlas A2 训 练 系 列 产 品/Atlas A2 推 理 系 列 产 品

Atlas 200I/500 A2 推 理 产 品

Atlas 推 理 系 列 产 品AI Core

Atlas 推 理 系 列 产 品Vector Core

x

Atlas 训 练 系 列 产 品

x

Kirin X90

Kirin 9030

功 能 说 明

头 文 件 路 径 为:"basic_api/kernel_operator_vec_ternary_scalar_intf.h"。

按 元 素 将src0和dst相 乘 并 加 上src1,最 终 结 果 存 放 入dst。计 算 公 式 如 下:

$$ dst_j = (src0_i \times dst_i) + src1_i $$

函 数 原 型

  • tensor前n个 数 据 计 算

    C++
    template <typename T>
    __aicore__ inline void FusedMulAdd(const LocalTensor<T>& dst, const LocalTensor<T>& src0, const LocalTensor<T>& src1, const int32_t& count)
    
  • tensor高 维 切 分 计 算

    • mask逐bit模 式

      C++
      template <typename T, bool isSetMask = true>
      __aicore__ inline void FusedMulAdd(const LocalTensor<T>& dst, const LocalTensor<T>& src0, const LocalTensor<T>& src1, uint64_t mask[], const uint8_t repeatTime, const BinaryRepeatParams& repeatParams)
      
    • mask连 续 模 式

      C++
      template <typename T, bool isSetMask = true>
      __aicore__ inline void FusedMulAdd(const LocalTensor<T>& dst, const LocalTensor<T>& src0, const LocalTensor<T>& src1, uint64_t mask, const uint8_t repeatTime, const BinaryRepeatParams& repeatParams)
      

参 数 说 明

表 1 模 板 参 数 说 明

参 数 名描 述
T操 作 数 数 据 类 型。
isSetMask是 否 在 接 口 内 部 设 置mask。
• true,表 示 在 接 口 内 部 设 置mask。
• false,表 示 在 接 口 外 部 设 置mask,开 发 者 需 要 使 用SetVectorMask接 口 设 置mask值。这 种 模 式 下,接 口 入 参 中 的mask值 设 置 为 占 位 符MASK_PLACEHOLDER。

表 2 参 数 说 明

参 数 名输 入/输 出描 述
dst输 入/输 出目 的 操 作 数。
类 型 为LocalTensor,支 持 的TPosition为VECIN/VECCALC/VECOUT。
src0、src1输 入源 操 作 数。
类 型 为LocalTensor,支 持 的TPosition为VECIN/VECCALC/VECOUT。
count输 入参 与 计 算 的 元 素 个 数。
注:参 数 取 值 范 围 和 操 作 数 的 数 据 类 型 有 关,数 据 类 型 不 同,能 够 处 理 的 元 素 个 数 最 大 值 不 同,最 大 处 理 的 数 据 量 不 能 超 过UB大 小 限 制。
mask[]/mask输 入mask用 于 控 制 每 次 迭 代 内 参 与 计 算 的 元 素。
设 置 详 见掩 码 操 作
repeatTime输 入重 复 迭 代 次 数。
矢 量 计 算 单 元,每 次 读 取 连 续 的256Bytes数 据 进 行 计 算,为 完 成 对 输 入 数 据 的 处 理,必 须 通 过 多 次 迭 代(repeat)才 能 完 成 所 有 数 据 的 读 取 与 计 算。repeatTime表 示 迭 代 的 次 数。
关 于 该 参 数 的 具 体 描 述 请 参 考高 维 切 分
repeatParams输 入控 制 操 作 数 地 址 步 长 的 参 数。BinaryRepeatParams类 型,包 含 操 作 数 相 邻 迭 代 间 相 同datablock的 地 址 步 长,操 作 数 同 一 迭 代 内 不 同datablock的 地 址 步 长 等 参 数。
相 邻 迭 代 间 的 地 址 步 长 参 数 说 明 请 参 考repeatStride;同 一 迭 代 内DataBlock的 地 址 步 长 参 数 说 明 请 参 考dataBlockStride

数 据 类 型

Ascend 950PR/Ascend 950DT,支 持 的 数 据 类 型 为:half、bfloat16_t、float、int64_t、uint64_t。

Atlas A3 训 练 系 列 产 品/Atlas A3 推 理 系 列 产 品,支 持 的 数 据 类 型 为:half、float。

Atlas A2 训 练 系 列 产 品/Atlas A2 推 理 系 列 产 品,支 持 的 数 据 类 型 为:half、float。

Atlas 200I/500 A2 推 理 产 品,支 持 的 数 据 类 型 为:half、float。

Atlas 推 理 系 列 产 品AI Core,支 持 的 数 据 类 型 为:half、float。

Kirin X90,支 持 的 数 据 类 型 为:half、float。

Kirin 9030,支 持 的 数 据 类 型 为:half、float。

返 回 值 说 明

约 束 说 明

  • 地 址 对 齐 约 束 参 考地 址 对 齐 约 束

  • 操 作 数 地 址 重 叠 约 束 请 参 考通 用 地 址 重 叠 约 束

  • FusedMulAdd指 令 实 际 使 用 会 受 到bank冲 突 影 响。

    地 址 不 重 叠 场 景 下,无 法 在 一 拍 读 取dst、src0、src1三 块 不 同 地 址 下 的 数 据,因 此 只 能 达 到 一 半 的 理 论 并 行 度,理 论 并 行 度 将 在 原 有 基 础 上 减 半;在 地 址 重 叠 场 景 下,则 保 持 原 有 理 论 并 行 度。

  • 针 对Ascend 950PR/Ascend 950DT,uint64_t/int64_t数 据 类 型 仅 支 持tensor前n个 数 据 计 算 接 口。

调 用 示 例

  • 高 维 切 分 计 算 接 口 样 例-mask连 续 模 式(half类 型 输 入)。

    C++
    uint64_t mask = 128;
    // repeatTime = 2,一 次 迭 代 计 算128个 数,共 计 算256个 数
    // dstBlkStride, src0BlkStride, src1BlkStride = 1,单 次 迭 代 内 数 据 连 续 读 取 和 写 入
    // dstRepStride, src0RepStride, src1RepStride = 8,相 邻 迭 代 间 数 据 连 续 读 取 和 写 入
    AscendC::FusedMulAdd(dstLocal, src0Local, src1Local, mask, 2, { 1, 1, 1, 8, 8, 8 });
    
  • 高 维 切 分 计 算 接 口 样 例-mask逐bit模 式(half类 型 输 入)。

    C++
    uint64_t mask[2] = { UINT64_MAX, UINT64_MAX };
    // repeatTime = 2,一 次 迭 代 计 算128个 数,共 计 算256个 数
    // dstBlkStride, src0BlkStride, src1BlkStride = 1,单 次 迭 代 内 数 据 连 续 读 取 和 写 入
    // dstRepStride, src0RepStride, src1RepStride = 8,相 邻 迭 代 间 数 据 连 续 读 取 和 写 入
    AscendC::FusedMulAdd(dstLocal, src0Local, src1Local, mask, 2, { 1, 1, 1, 8, 8, 8 });
    
  • tensor前n个 数 据 计 算 样 例(half类 型 输 入)。

    C++
    AscendC::FusedMulAdd(dstLocal, src0Local, src1Local, 256);
    

结 果 示 例 如 下:

输 入 数 据src0Local:
[ 51.4     25.92    28.3     26.62    -4.523  -93.6      8.71    21.02
 -49.8    -80.4     95.94     4.74    70.25   -60.38    79.5    -18.19
  79.1    -66.7     62.5     83.6    -73.1     72.56   -63.03    81.3
 -62.28   -49.94   -78.7     56.2    -52.97    66.2     43.94    13.43
  43.06    51.16    34.16   -64.56   -73.1    -94.7    -68.94    73.06
 -93.4    -46.62   -83.75    15.46    32.88   -76.4     53.84    70.6
  -3.455  -88.4    -65.75   -16.1     88.9    -70.56   -69.44   -11.91
 -77.06    76.06    22.73    91.25   -96.06    64.4     13.1     30.56
 -99.2    -98.56    58.1     31.92   -56.47   -72.7    -42.94    49.1
  98.44    83.75    -4.336   30.03    33.2    -54.78   -21.19   -57.22
 -61.34   -39.8    -29.44   -16.12    38.4    -71.6    -28.52    63.62
  36.      61.38    26.69   -16.34    92.2    -67.7    -92.75   -41.16
 -85.44   -91.2    -22.31   -47.38   -27.28   -77.44    64.     -78.56
  52.22   -61.8    -84.94   -64.7     91.3     64.56    67.25    65.44
  58.7     64.7    -75.06   -44.7    -22.05    71.7     78.9     34.7
 -26.88    39.7    -83.3      0.6274 -34.56   -94.7     -7.027   86.1
 -15.18    63.47    39.     -53.1     54.53    75.44    32.53   -78.3
 -22.34    74.7     -4.312  -33.2      2.19    98.25   -14.66    34.88
   6.746   88.5    -55.03    88.25   -79.56   -61.62    82.3     47.47
 -17.19    45.72   -71.4    -93.5    -32.84   -40.      49.88    27.98
 -70.56   -47.6     76.25    54.62   -62.06   -13.484   86.94    21.81
 -54.53     2.236  -25.16    86.75   -45.97   -44.5    -54.     -53.6
 -23.33    58.62   -48.16   -17.52    87.75   -60.7    -80.6     74.5
  66.4     70.7    -34.28    -3.43   -88.5    -43.56   -22.9    -93.5
 -95.75   -90.6     57.97   -60.06    75.94   -92.3    -15.87    38.5
  37.34   -80.56    71.25    69.      36.25    55.53    74.75    31.1
  -8.445    2.152   95.75    -4.777    9.41    97.8    -64.75    90.94
  38.84    16.8    -17.44    87.     -11.336   98.1    -94.6    -76.2
 -20.14    18.1    -90.4     51.84   -22.88    20.33    45.38    96.06
 -68.56   -57.66    61.78   -78.3     76.     -26.23    27.36   -52.5
 -90.4     23.78   -47.7    -36.      68.4    -59.2    -59.28    32.12
 -44.84    -2.428   -9.266   57.44    66.25   -62.8     92.8     50.75  ]
输 入 数 据src1Local:
[-43.1     -90.       -0.7295   49.28    -52.12    -55.53     99.6
  94.4      62.56     20.67    -25.4     -70.6      43.44     57.97
   5.355    38.66    -67.3     -26.72     43.7     -81.06     54.47
  -71.3      84.8      92.9      49.88    -49.94     79.75    -71.8
   6.5      42.3      22.44      6.64    -83.6     -24.3     -97.06
  43.47    -31.06     -9.55     -7.734   -30.27     70.3      10.91
  55.72     60.03     85.8     -21.86    -34.28     -1.962   -11.18
 -20.4      53.34    -44.72      9.28    -40.44     19.42     62.66
 -84.75     39.1      45.9     -89.56     70.94     99.5      16.62
 -36.7     -26.2      87.06    -87.94     19.      -30.12     16.94
 -85.44    -17.06     33.28    -49.84    -24.78    -58.25     27.81
 -23.48     81.06     82.94    -35.88     -4.47    -74.7      85.
 -18.22    -67.5      76.5      96.1     -32.4     -45.56     21.53
 -28.5      88.       -0.1978  -20.34    -44.53    -13.27     -7.93
  33.3      89.8      49.12    -19.84     48.38     83.9      53.
 -65.6      62.97     76.75    -74.4     -23.19     73.1      -9.38
 -31.86     69.44    -52.47    -75.94     54.78     78.94    -74.9
  -0.01271  21.88    -82.9     -34.44     20.56     64.25      7.57
 -63.6     -78.44     19.06     67.25     34.62     82.4      15.6
  84.06     75.06    -97.94    -41.12    -77.75     35.3      88.
  -2.758    -4.36     34.8      73.94    -33.28    -24.5      53.38
 -54.3      19.14     57.1      43.4     -39.4      16.36     24.94
 -42.94    -26.25     27.92    -35.44     79.94     42.12    -62.72
  90.       98.75     -8.22     79.      -96.94    -91.1     -32.94
  64.4     -78.56    -49.56     10.23     82.9     -27.        7.023
 -42.7     -25.67    -42.34     22.72     98.56     69.2     -72.9
  60.28    -43.94     73.06    -28.31     37.5      84.8      -1.514
  81.7     -68.3      46.3      66.       86.44    -26.78    -52.72
  -3.766   -17.95     87.6     -93.5       9.13     58.25     44.62
   2.64     90.25    -42.16    -50.62     18.48     -3.156    36.16
  82.4      26.44     69.8     -47.56    -54.72     58.88    -16.77
  58.44     -5.62    -38.88     40.44    -87.94     33.25     68.94
 -73.2       3.64     45.3     -59.1     -69.9     -94.5      16.02
  12.11     91.56    -30.4     -47.56     56.84    -17.06     60.
 -31.33     50.      -40.44      9.17     31.9     -51.2     -34.72
 -11.43     19.58    -89.6     -61.53    -98.25     94.94     43.8
  -6.848   -99.       99.9     -28.66   ]
输 入 数 据dstLocal:
[-18.36     44.94     32.34    -50.      -99.5      89.4       1.568
  61.4     -36.      -46.28     54.88     14.92     61.2     -16.14
  42.72     87.25     -2.787   -66.8      58.3      23.94     89.
 -78.56    -38.94    -78.25     52.6      77.94     84.4     -63.94
  90.7      51.97     84.1      99.3     -70.1      -3.691     4.16
  24.98    -91.94     91.2      65.3     -47.28     68.1     -60.2
 -90.4       0.1636    9.32     51.4      10.45     46.9      42.78
 -38.2     -39.25    -79.1      52.2      56.03    -20.72    -25.81
  27.5     -42.94    -71.6     -73.2     -16.45     99.      -16.
 -75.94    -18.44      6.92    -54.66     12.016    35.53     65.6
  84.4      55.28     34.16    -69.5      -0.4287  -83.1     -30.69
  86.06    -67.56    -97.56    -23.44     73.56    -29.84     -0.49
 -78.44    -17.45    -19.47     57.12     28.31    -86.8      95.44
  82.4      40.53     92.7      20.36    -77.75    -44.62    -21.
 -63.44     71.      -32.2      66.7      46.94    -95.3     -71.8
  -1.351    20.95    -84.44     33.28    -55.2      10.17     22.27
 -26.42    -76.06     90.       44.2     -80.4     -94.25     -9.055
  15.44     75.94    -40.47    -43.78     18.31     -5.586   -55.1
 -95.9      82.5      75.6     -76.25    -83.6     -70.      -54.16
  56.62     64.56    -97.06     93.5     -58.8       7.746   -12.164
  53.06    -56.72     97.7     -11.07     68.2     -77.3      77.8
 -41.44    -14.21    -48.56    -40.5      88.44     85.5     -92.25
  -8.39    -41.78     27.44     85.44     40.8     -80.2      38.94
  -7.598     3.83     74.      -97.06    -84.3      74.9     -88.6
 -92.3     -34.97     65.8     -60.8      39.06    -19.64     65.4
   5.336    -0.07324 -52.16     70.44     11.75      4.72     77.8
 -62.9      80.3     -24.66     62.84    -98.75    -58.88    -90.4
  31.53     70.44    -97.7      64.8      -7.203   -28.3      30.5
 -48.75    -89.06     25.94    -81.06    -62.72    -65.4      79.4
 -90.7      65.6      79.56    -21.22     -0.1489   83.44    -29.86
 -75.9      29.75     53.34     47.66     18.02     92.7      90.56
   8.2     -98.6     -40.53     15.484    28.47    -49.28     24.05
 -23.       -0.0836   50.5     -70.1     -96.9     -10.23    -19.34
 -86.6      63.38    -88.4      92.5     -16.52    -94.7     -92.1
  82.2     -35.94    -67.5     -46.03    -70.44    -54.44    -85.5
  48.72    -61.25     41.      -51.25    -50.4     -50.66     51.84
 -52.9      11.086   -74.1      50.66   ]
输 出 数 据dstLocal:
[ -987.      1075.       914.5    -1282.       398.     -8424.
   113.3     1384.      1856.      3740.      5240.         0.0625
  4344.      1032.      3402.     -1548.      -287.8     4428.
  3688.      1921.     -6452.     -5772.      2538.     -6272.
 -3226.     -3942.     -6560.     -3664.     -4796.      3482.
  3718.      1341.     -3104.      -213.1       45.06   -1570.
  6692.     -8640.     -4512.     -3484.     -6288.      2816.
  7624.        62.56     392.2    -3948.       528.5     3310.
  -159.      3354.      2634.      1228.      4648.     -3994.
  1458.       370.     -2204.     -3226.     -1582.     -6768.
  1652.      6472.      -193.     -2356.      1803.      -595.
 -3264.       402.5    -2036.     -4756.     -3708.      2696.
  3396.     -5868.       -22.92   -2554.      -990.5    -4740.
  1512.      5668.      1402.     -2932.       804.        92.9
 -3030.      1182.       631.5     3730.       986.5    -5372.
  2568.     -1374.      3824.     -6272.     -1908.      3156.
  3798.      1907.      1448.     -3274.       927.     -5184.
  3052.      7572.     -3696.        17.88   -1717.      5540.
  2964.     -3588.       757.      1448.     -1583.     -4852.
 -6808.     -2050.      1827.     -6676.      -789.       535.5
 -2019.     -1689.      3614.        32.06     257.5     5224.
   610.      7024.     -1129.     -4772.     -3228.      3798.
 -2938.      4356.      2176.      7504.     -2132.     -4468.
     1.906    491.8      113.44   -5576.     -1397.      -312.
   426.8    -6868.     -4232.     -3710.      1150.      3050.
 -3290.      4160.     -1454.     -4192.       556.      3880.
  -873.     -3454.      2116.     -2202.     -2810.       451.5
   390.8     4034.      6104.      1040.      6416.     -1966.
  5096.      -156.8    -1706.     -5264.     -1713.       847.
 -3522.      -328.8      -23.97   -3100.     -3370.      -107.2
   483.2    -4796.      5132.      5940.     -1564.      4416.
  3424.       286.8     8000.     -1292.     -1681.      9184.
 -6136.       739.5    -1667.     -1885.     -3706.      8208.
  -324.     -3214.     -2332.      5328.      5700.     -6252.
  2468.      4376.     -1637.        13.86    -707.5      -28.1
 -7180.      -115.7      571.5     4612.     -1222.      8488.
  3502.       196.2     1714.     -3564.      -135.      2706.
  4696.     -1763.       390.         2.129  -4520.     -3696.
  2146.      -302.5     -861.5    -8304.     -4252.      5064.
  5668.      1350.     -7212.      2476.      2216.      1937.
  6060.     -1086.      3390.      1909.     -5884.     -2896.
  3650.      1227.      2236.        24.12     564.      3022.
 -3512.      -795.5    -6780.      2542.    ]

免 责 声 明:本 站 内 容 由 asc-devkit 仓 master 分 支 自 动 编 译 生 成,属 于 持 续 开 发 版 本,可 能 存 在 缺 陷,仅 供 预 览 与 参 考。如 需 稳 定 及 商 用 资 料,请 查 阅 官 方 昇 腾 社 区