DML_REDUCE_OPERATOR_DESC 结构 (directml.h)

输出输入张量 (一个或多个维度内) 总和、积、最小值等元素的缩减。

每个输出元素都是对输入张量子集应用缩减函数的结果。 缩减函数(如 sum)将输入元素映射到 N 单个输出元素。 每个缩减中涉及的输入元素由提供的输入轴确定: N 等于缩小轴大小的乘积。 如果指定了所有输入轴,运算符将对整个输入张量执行缩减并生成单个输出元素。

语法

struct DML_REDUCE_OPERATOR_DESC {
  DML_REDUCE_FUNCTION   Function;
  const DML_TENSOR_DESC *InputTensor;
  const DML_TENSOR_DESC *OutputTensor;
  UINT                  AxisCount;
  const UINT            *Axes;
};

成员

Function

类型: DML_REDUCE_FUNCTION

指定要应用于输入的缩减函数。

InputTensor

类型: const DML_TENSOR_DESC*

要从中读取的张量。

OutputTensor

类型: const DML_TENSOR_DESC*

要向其写入结果的张量。 每个输出元素都是 InputTensor 中元素子集减少的结果。

  • DimensionCount 必须与 InputTensor.DimensionCount 匹配, (输入张量排名保留) 。
  • 大小 必须与 InputTensor.Size 匹配,但缩小 的轴中包含的维度除外,其大小必须为 1。

AxisCount

类型: UINT

要减少的轴数。 此字段确定 Axes 数组的大小。

Axes

类型:_Field_size_ (AxisCount) const UINT*

要沿其减小的轴。 值必须位于 范围 [0, InputTensor.DimensionCount - 1]中。

示例

以下示例都使用相同的二维输入张量。

InputTensor: (Sizes:{3, 3}, DataType:FLOAT32)
[[1, 2, 3],
 [3, 0, 4],
 [2, 4, 2]]

示例 1。 对列应用求和

Function: DML_REDUCE_FUNCTION_SUM
AxisCount: 1
Axes: {0}
OutputTensor: (Sizes:{1, 3}, DataType:FLOAT32)
[[6,  // sum({1, 3, 2})
  6,  // sum({2, 0, 4})
  9]] // sum({3, 4, 2})

示例 2。 对行应用求和

Function: DML_REDUCE_FUNCTION_SUM
AxisCount: 1
Axes: {1}
OutputTensor: (Sizes:{3, 1}, DataType:FLOAT32)
[[6], // sum({1, 2, 3})
 [7], // sum({3, 0, 4})
 [8]] // sum({2, 4, 2})

示例 3.将 应用于整个张量 (所有轴)

Function: DML_REDUCE_FUNCTION_SUM
AxisCount: 2
Axes: {0, 1}
OutputTensor: (Sizes:{1, 1}, DataType:FLOAT32)
[[21]]  // sum({1, 2, 3, 3, 0, 4, 2, 5, 2})

可用性

此运算符是在 中引入的 DML_FEATURE_LEVEL_1_0

张量约束

  • 输入和输出张量数据类型必须匹配,除非使用 ARGMAX 和 ARGMIN 函数,后者始终输出整型数据类型。
  • 输出大小必须与输入大小相同,但缩小的轴必须为 1。

根据函数的张量支持

ARGMIN 和 ARGMAX

DML_FEATURE_LEVEL_4_1 及更高版本
种类 支持的维度计数 支持的数据类型
InputTensor 输入 1 到 8 FLOAT32、FLOAT16、INT64、INT32、INT16、INT8、UINT64、UINT32、UINT16、UINT8
OutputTensor 输出 1 到 8 INT64、INT32、UINT64、UINT32

DML_FEATURE_LEVEL_3_0及更高版本

种类 支持的维度计数 支持的数据类型
InputTensor 输入 1 到 8 FLOAT32、FLOAT16、INT32、INT16、INT8、UINT32、UINT16、UINT8
OutputTensor 输出 1 到 8 INT64、INT32、UINT64、UINT32

DML_FEATURE_LEVEL_2_1及更高版本

种类 支持的维度计数 支持的数据类型
InputTensor 输入 4 FLOAT32、FLOAT16、INT32、INT16、INT8、UINT32、UINT16、UINT8
OutputTensor 输出 4 UINT32

DML_FEATURE_LEVEL_1_0 及更高版本

种类 支持的维度计数 支持的数据类型
InputTensor 输入 4 FLOAT32、FLOAT16
OutputTensor 输出 4 UINT32

AVERAGE、L2、LOG_SUM 和 LOG_SUM_EXP

DML_FEATURE_LEVEL_3_0及更高版本
种类 支持的维度计数 支持的数据类型
InputTensor 输入 1 到 8 FLOAT32、FLOAT16
OutputTensor 输出 1 到 8 FLOAT32、FLOAT16
DML_FEATURE_LEVEL_1_0 及更高版本
种类 支持的维度计数 支持的数据类型
InputTensor 输入 4 FLOAT32、FLOAT16
OutputTensor 输出 4 FLOAT32、FLOAT16

L1 和SUM_SQUARE

DML_FEATURE_LEVEL_5_0 及更高版本
种类 支持的维度计数 支持的数据类型
InputTensor 输入 1 到 8 FLOAT32、FLOAT16、INT64、INT32、UINT64、UINT32
OutputTensor 输出 1 到 8 FLOAT32、FLOAT16、INT64、INT32、UINT64、UINT32

DML_FEATURE_LEVEL_3_0 及更高版本

种类 支持的维度计数 支持的数据类型
InputTensor 输入 1 到 8 FLOAT32、FLOAT16
OutputTensor 输出 1 到 8 FLOAT32、FLOAT16

DML_FEATURE_LEVEL_1_0 及更高版本

种类 支持的维度计数 支持的数据类型
InputTensor 输入 4 FLOAT32、FLOAT16
OutputTensor 输出 4 FLOAT32、FLOAT16

MIN 和 MAX

DML_FEATURE_LEVEL_5_0 及更高版本
种类 支持的维度计数 支持的数据类型
InputTensor 输入 1 到 8 FLOAT32、FLOAT16、INT64、INT32、INT16、INT8、UINT64、UINT32、UINT16、UINT8
OutputTensor 输出 1 到 8 FLOAT32、FLOAT16、INT64、INT32、INT16、INT8、UINT64、UINT32、UINT16、UINT8

DML_FEATURE_LEVEL_3_0 及更高版本

种类 支持的维度计数 支持的数据类型
InputTensor 输入 1 到 8 FLOAT32、FLOAT16、INT32、INT16、INT8、UINT32、UINT16、UINT8
OutputTensor 输出 1 到 8 FLOAT32、FLOAT16、INT32、INT16、INT8、UINT32、UINT16、UINT8

DML_FEATURE_LEVEL_2_1 及更高版本

种类 支持的维度计数 支持的数据类型
InputTensor 输入 4 FLOAT32、FLOAT16、INT32、UINT32
OutputTensor 输出 4 FLOAT32、FLOAT16、INT32、UINT32

DML_FEATURE_LEVEL_1_0 及更高版本

种类 支持的维度计数 支持的数据类型
InputTensor 输入 4 FLOAT32、FLOAT16
OutputTensor 输出 4 FLOAT32、FLOAT16

MULTIPLY 和 SUM

DML_FEATURE_LEVEL_5_0 及更高版本
种类 支持的维度计数 支持的数据类型
InputTensor 输入 1 到 8 FLOAT32、FLOAT16、INT64、INT32、UINT64、UINT32
OutputTensor 输出 1 到 8 FLOAT32、FLOAT16、INT64、INT32、UINT64、UINT32

DML_FEATURE_LEVEL_3_0 及更高版本

种类 支持的维度计数 支持的数据类型
InputTensor 输入 1 到 8 FLOAT32、FLOAT16、INT32、UINT32
OutputTensor 输出 1 到 8 FLOAT32、FLOAT16、INT32、UINT32

DML_FEATURE_LEVEL_2_1 及更高版本

种类 支持的维度计数 支持的数据类型
InputTensor 输入 4 FLOAT32、FLOAT16、INT32、UINT32
OutputTensor 输出 4 FLOAT32、FLOAT16、INT32、UINT32

DML_FEATURE_LEVEL_1_0 及更高版本

种类 支持的维度计数 支持的数据类型
InputTensor 输入 4 FLOAT32、FLOAT16
OutputTensor 输出 4 FLOAT32、FLOAT16

要求

要求
Header directml.h

另请参阅

功能级别 3_0 引入了这些独立运算符,这些运算符取代 了 DML_REDUCE_FUNCTION_ARGMAXDML_REDUCE_FUNCTION_ARGMIN 提供的功能。