文档
注册

关于A、B、C矩阵的Shape及内存大小计算公式

  • A、B、C矩阵是否转置的标记如果设置为ACL_TRANS_N或ACL_TRANS_T,则用户在申请内存存放A、B、C矩阵数据时,实际申请的内存要和实际数据大小匹配,Shape及内存大小的计算公式如下:
    • A矩阵:shape = (m, k);内存大小 = m * k * acl.data_type_size(data_type_a)
    • B矩阵:shape = (k, n);内存大小 = k * n * acl.data_type_size(data_type_b)
    • C矩阵:shape = (m, n);内存大小 = m * n * acl.data_type_size(data_type_c)
  • A、B、C矩阵是否转置的标记如果设置为ACL_TRANS_NZ,表示采用内部数据格式,矩阵Shape为4维,Shape及内存大小的计算公式如下(假设m,k,n分别为原始轴):
    • 当矩阵A和矩阵B中数据的类型为aclFloat16,在计算实际内存大小时,m、k、n均按16对齐向上取整计算:
      • A矩阵:shape = (⌈k/16⌉, ⌈m/16⌉, 16, 16);内存大小 = ⌈m/16⌉ * 16 * ⌈k/16⌉ * 16 * acl.data_type_size(data_type_a)
      • B矩阵:shape = (⌈n/16⌉, ⌈k/16⌉, 16, 16);内存大小 = ⌈k/16⌉ * 16 * ⌈n/16⌉ * 16 * acl.data_type_size(data_type_b)
      • C矩阵:shape = (⌈n/16⌉, ⌈m/16⌉, 16, 16);内存大小 = ⌈m/16⌉ * 16 * ⌈n/16⌉ * 16 * acl.data_type_size(data_type_c)
    • 当矩阵A和矩阵B中数据的类型为int8_t,在计算实际内存大小时,reduce轴按32对齐向上取整计算,非reduce轴按16对齐向上取整计算:
      • A矩阵:shape = (⌈k/32⌉, ⌈m/16⌉, 16, 32);内存大小 = ⌈m/16⌉ * 16 * ⌈k/32⌉ * 32 * acl.data_type_size(data_type_a)
      • B矩阵:shape = (⌈k/32⌉, ⌈n/16⌉, 32, 16);内存大小 = ⌈k/32⌉ * 32 * ⌈n/16⌉ * 16 * acl.data_type_size(data_type_b)
      • C矩阵:shape = (⌈n/16⌉, ⌈m/16⌉, 16, 16);内存大小 = ⌈m/16⌉ * 16 * ⌈n/16⌉ * 16 * acl.data_type_size(data_type_c)

    ⌈ ⌉表示向上对齐。

搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词