Compartilhar via


estrutura DML_CUMULATIVE_SUMMATION_OPERATOR_DESC (directml.h)

Soma os elementos de um tensor ao longo de um eixo, gravando a contagem em execução da soma no tensor de saída.

Sintaxe

struct DML_CUMULATIVE_SUMMATION_OPERATOR_DESC {
  const DML_TENSOR_DESC *InputTensor;
  const DML_TENSOR_DESC *OutputTensor;
  UINT                  Axis;
  DML_AXIS_DIRECTION    AxisDirection;
  BOOL                  HasExclusiveSum;
};

Membros

InputTensor

Tipo: const DML_TENSOR_DESC*

O tensor de entrada que contém elementos a serem resumidos.

OutputTensor

Tipo: const DML_TENSOR_DESC*

O tensor de saída para o qual gravar os resumos cumulativos resultantes. Esse tensor deve ter os mesmos tamanhos e tipo de dados que o InputTensor.

Axis

Tipo: UINT

O índice da dimensão sobre a qual somar elementos. Esse valor deve ser menor que o DimensionCount do InputTensor.

AxisDirection

Tipo: DML_AXIS_DIRECTION

Um dos valores da enumeração DML_AXIS_DIRECTION . Se definido como DML_AXIS_DIRECTION_INCREASING, a soma ocorrerá atravessando o tensor ao longo do eixo especificado pelo índice de elemento crescente. Se definido como DML_AXIS_DIRECTION_DECREASING, o inverso será true e a soma ocorrerá atravessando elementos por índice decrescente.

HasExclusiveSum

Tipo: BOOL

Se TRUE, o valor do elemento atual será excluído ao gravar a contagem em execução no tensor de saída. Se FALSE, o valor do elemento atual será incluído na contagem em execução.

Exemplos

Todos os exemplos nesta seção usam um tensor de entrada com as propriedades a seguir.

InputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[2, 1, 3, 5],
   [3, 8, 7, 3],
   [9, 6, 2, 4]]]]

Exemplo 1. Soma cumulativa entre lascas horizontais

Axis: 3
AxisDirection: DML_AXIS_DIRECTION_INCREASING
HasExclusiveSum: FALSE

OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[2,  3,  6, 11],     // i.e. [2, 2+1, 2+1+3, 2+1+3+5]
   [3, 11, 18, 21],     //      [...                   ]
   [9, 15, 17, 21]]]]   //      [...                   ]

Exemplo 2. Somas exclusivas

Definir HasExclusiveSum como TRUE tem o efeito de excluir o valor do elemento atual da contagem em execução ao gravar no tensor de saída.

Axis: 3
AxisDirection: DML_AXIS_DIRECTION_INCREASING
HasExclusiveSum: TRUE

OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[0, 2,  3,  6],      // Notice the sum is written before adding the input,
   [0, 3, 11, 18],      // and the final total is not written to any output.
   [0, 9, 15, 17]]]]

Exemplo 3. Direção do eixo

Definir AxisDirectioncomo DML_AXIS_DIRECTION_DECREASING tem o efeito de reverter a ordem de passagem de elementos ao calcular a contagem em execução.

Axis: 3
AxisDirection: DML_AXIS_DIRECTION_DECREASING
HasExclusiveSum: FALSE

OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[11,  9,  8,  5],    // i.e. [2+1+3+5, 1+3+5, 3+5, 5]
   [21, 18, 10,  3],    //      [...                   ]
   [21, 12,  6,  4]]]]  //      [...                   ]

Exemplo 4. Somando um eixo diferente

Neste exemplo, o resumo ocorre verticalmente, ao longo do eixo de altura (dimensão 2).

Axis: 2
AxisDirection: DML_AXIS_DIRECTION_INCREASING
HasExclusiveSum: FALSE

OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[ 2,  1,  3,  5],   // i.e. [2,    ...]
   [ 5,  9, 10,  8],   //      [2+3,  ...]
   [14, 15, 12, 12]]]] //      [2+3+9 ...]

Comentários

Esse operador dá suporte à execução in-loco, o que significa que o OutputTensor tem permissão para alias do InputTensor durante a associação.

Disponibilidade

Esse operador foi introduzido em DML_FEATURE_LEVEL_2_1.

Restrições do Tensor

InputTensor e OutputTensor devem ter os mesmos DataType, DimensionCount e Sizes.

Suporte ao Tensor

DML_FEATURE_LEVEL_5_0 e superior

Tensor Tipo Contagens de dimensões com suporte Tipos de dados com suporte
InputTensor Entrada 1 a 8 FLOAT32, FLOAT16, INT64, INT32, UINT64, UINT32
OutputTensor Saída 1 a 8 FLOAT32, FLOAT16, INT64, INT32, UINT64, UINT32

DML_FEATURE_LEVEL_4_0 e superior

Tensor Tipo Contagens de dimensões com suporte Tipos de dados com suporte
InputTensor Entrada 1 a 8 FLOAT32, FLOAT16, INT32, UINT32
OutputTensor Saída 1 a 8 FLOAT32, FLOAT16, INT32, UINT32

DML_FEATURE_LEVEL_2_1 e superior

Tensor Tipo Contagens de dimensões com suporte Tipos de dados com suporte
InputTensor Entrada 4 FLOAT32, FLOAT16, INT32, UINT32
OutputTensor Saída 4 FLOAT32, FLOAT16, INT32, UINT32

Requisitos

   
Cliente mínimo com suporte Windows 10 Build 20348
Servidor mínimo com suporte Windows 10 Build 20348
Cabeçalho directml.h