directml.h) (DML_MATRIX_MULTIPLY_INTEGER_OPERATOR_DESC 结构
对整数数据执行矩阵乘法函数。
此运算符要求矩阵乘法输入张量为 4D,格式为 { BatchCount, ChannelCount, Height, Width }
。 矩阵乘法运算符将执行 BatchCount * ChannelCount 独立矩阵乘法的数目。
例如,如果 ATensor 的 Size 为 { BatchCount, ChannelCount, M, K }
, BTensor 的 Size 为 { BatchCount, ChannelCount, K, N }
, OutputTensor 的 Size 为 { BatchCount, ChannelCount, M, N }
,则矩阵乘法运算符将执行维度 {M,K} x {K,N} = {M,N} 的 BatchCount * ChannelCount 独立矩阵乘法。
语法
struct DML_MATRIX_MULTIPLY_INTEGER_OPERATOR_DESC {
const DML_TENSOR_DESC *ATensor;
const DML_TENSOR_DESC *AZeroPointTensor;
const DML_TENSOR_DESC *BTensor;
const DML_TENSOR_DESC *BZeroPointTensor;
const DML_TENSOR_DESC *OutputTensor;
};
成员
ATensor
类型: const DML_TENSOR_DESC*
包含 A 数据的张量。 此张量的尺寸应为 { BatchCount, ChannelCount, M, K }
。
AZeroPointTensor
类型:_Maybenull_ const DML_TENSOR_DESC*
包含 ATensor 零点数据的可选张量。 如果需要按张量量化,则 的预期维度 AZeroPointTensor
为 { 1, 1, 1, 1 }
; { 1, 1, M, 1 }
如果需要按行量化,则 为 。 这些零点值用于取消 ATensor 值的量化。
BTensor
类型: const DML_TENSOR_DESC*
包含 B 数据的张量。 此张量的尺寸应为 { BatchCount, ChannelCount, K, N }
。
BZeroPointTensor
类型:_Maybenull_ const DML_TENSOR_DESC*
包含 BTensor 零点数据的可选张量。 如果需要按张量量化,则 的预期维度 BZeroPointTensor
为 { 1, 1, 1, 1 }
; { 1, 1, 1, N }
如果需要每列量化,则为 。 这些零点值用于对 BTensor 值进行量化。
OutputTensor
类型: const DML_TENSOR_DESC*
用于写入结果的张量。 此张量的尺寸为 { BatchCount, ChannelCount, M, N }
。
可用性
此运算符是在 中 DML_FEATURE_LEVEL_2_1
引入的。
张量约束
- ATensor、 BTensor 和 OutputTensor 必须具有相同的 DimensionCount。
- BTensor 和 BZeroPointTensor 必须具有相同 的数据类型。
- ATensor 和 AZeroPointTensor 必须具有相同的 数据类型。
张量支持
DML_FEATURE_LEVEL_5_2 及更高版本
张 | 种类 | 维度 | 支持的维度计数 | 支持的数据类型 |
---|---|---|---|---|
ATensor | 输入 | { [BatchCount], [ChannelCount], M, K } | 2 到 4 | INT8、UINT8 |
AZeroPointTensor | 可选输入 | { [1], [1], AZeroPointCount, [1] } | 1 到 4 | INT8、UINT8 |
BTensor | 输入 | { [BatchCount], [ChannelCount], K, N } | 2 到 4 | INT8、UINT8 |
BZeroPointTensor | 可选输入 | { [1], [1], [1], BZeroPointCount } | 1 到 4 | INT8、UINT8 |
OutputTensor | 输出 | { [BatchCount], [ChannelCount], M, N } | 2 到 4 | INT32 |
DML_FEATURE_LEVEL_4_0 及更高版本
张 | 种类 | 维度 | 支持的维度计数 | 支持的数据类型 |
---|---|---|---|---|
ATensor | 输入 | { [BatchCount], [ChannelCount], M, K } | 2 到 4 | INT8、UINT8 |
AZeroPointTensor | 可选输入 | { [1], [1], AZeroPointCount, [1] } | 1 到 4 | INT8、UINT8 |
BTensor | 输入 | { [BatchCount], [ChannelCount], K, N } | 2 到 4 | INT8、UINT8 |
BZeroPointTensor | 可选输入 | { [1], [1], 1, BZeroPointCount } | 2 到 4 | INT8、UINT8 |
OutputTensor | 输出 | { [BatchCount], [ChannelCount], M, N } | 2 到 4 | INT32 |
DML_FEATURE_LEVEL_2_1 及更高版本
张 | 种类 | 维度 | 支持的维度计数 | 支持的数据类型 |
---|---|---|---|---|
ATensor | 输入 | { BatchCount, ChannelCount, M, K } | 4 | INT8、UINT8 |
AZeroPointTensor | 可选输入 | { 1, 1, AZeroPointCount, 1 } | 4 | INT8、UINT8 |
BTensor | 输入 | { BatchCount, ChannelCount, K, N } | 4 | INT8、UINT8 |
BZeroPointTensor | 可选输入 | { 1, 1, 1, BZeroPointCount } | 4 | INT8、UINT8 |
OutputTensor | 输出 | { BatchCount, ChannelCount, M, N } | 4 | INT32 |
要求
最低受支持的客户端 | Windows 10内部版本 20348 |
最低受支持的服务器 | Windows 10内部版本 20348 |
标头 | directml.h |