开发者
下载
[object Object]

[object Object][object Object]undefined
[object Object]
  • 接口功能:将调用[object Object]量化得到的FLOAT4的Tensor结合FLOAT8_E8M0缩放系数,转换为FLOAT8分块量化格式,同时输出-1轴和-2轴方向的量化尺度。

  • 计算公式:

    scalefp8=max(mxscalefp4_block)/MAX_OFFSEToffset=mxscalefp4_block/scalefp8xfp8=xfp4×offset\begin{aligned} scale_{fp8} &= max(mxscale_{fp4\_block}) / MAX\_OFFSET \\ offset &= mxscale_{fp4\_block} / scale_{fp8} \\ x_{fp8} &= x_{fp4} \times offset \end{aligned}
    • 其中mxscalefp4_blockmxscale_{fp4\_block}是输入mxscale提供的FP8_E8M0缩放系数;MAX_OFFSETMAX\_OFFSET是输入和输出数据类型之间的最大偏移量;xfp4x_{fp4}是量化得到的FLOAT4张量;xfp8x_{fp8}是转换得到的FLOAT8张量。

    • MAX_OFFSET对照表:

      [object Object]undefined
[object Object]

每个算子分为,必须先调用[object Object]接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用[object Object]接口执行计算。

[object Object]
[object Object]
[object Object]
  • 参数说明:

    [object Object]
  • 返回值:

    aclnnStatus:返回状态码,具体参见

    第一段接口完成入参校验,出现以下场景时报错:

    [object Object]
[object Object]
  • 参数说明:

    [object Object]
  • 返回值:

    aclnnStatus: 返回状态码,具体参见

[object Object]
  • 确定性计算:
    • [object Object]默认确定性实现。
  • x只支持2维或3维输入,且-2轴是64的倍数, -1轴是2的倍数,不支持非连续Tensor,不支持空Tensor。
  • 关于x、mxscale、scale1、scale2的shape约束说明如下:
    • rank(mxscale) = rank(x) + 1。
    • mxscale.shape[-2] = (Ceil(x.shape[-1], 32) + 2 - 1) / 2。
    • mxscale.shape[-1] = 2。
    • 其它维度与输入x一致。
  • 关于输出scale1的shape约束说明如下:
    • rank(scale1) = rank(x) + 1。
    • scale1.shape[-2] = (Ceil(x.shape[-1], 32) + 2 - 1) / 2。
    • scale1.shape[-1] = 2。
    • 其它维度和输入x保持一致。
  • 关于输出scale2的shape约束说明如下:
    • rank(scale2) = rank(x) + 1。
    • scale2.shape[-3] = ((Ceil(x.shape[-2], 32) + 2 - 1) / 2) * 2 / 2。
    • scale2.shape[-2] = x.shape[-1]。
    • scale2.shape[-1] = 2。
    • 其它维度和输入x保持一致。
  • dstType仅支持{35, 36},对应{FLOAT8_E5M2, FLOAT8_E4M3FN}。
[object Object]

示例代码如下,仅供参考,具体编译和执行过程请参考

[object Object]