Share via


DML_CUMULATIVE_SUMMATION_OPERATOR_DESC-Struktur (directml.h)

Summiert die Elemente eines Tensors entlang einer Achse und schreibt die laufende Ally der Summation in den Ausgabe tensor.

Syntax

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

Member

InputTensor

Typ: const DML_TENSOR_DESC*

Der Eingabe tensor, der die zu summierenden Elemente enthält.

OutputTensor

Typ: const DML_TENSOR_DESC*

Der Ausgabe tensor, in den die resultierenden kumulativen Summen geschrieben werden sollen. Dieser Tensor muss die gleiche Größe und denselben Datentyp wie der InputTensor aufweisen.

Axis

Typ: UINT

Der Index der Dimension, über die Elemente summiert werden sollen. Dieser Wert muss kleiner als der DimensionCount des InputTensor sein.

AxisDirection

Typ: DML_AXIS_DIRECTION

Einer der Werte der DML_AXIS_DIRECTION-Enumeration . Wenn auf DML_AXIS_DIRECTION_INCREASING festgelegt ist, erfolgt die Summe, indem der Tensor entlang der angegebenen Achse durch den aufsteigenden Elementindex durchlaufen wird. Wenn auf DML_AXIS_DIRECTION_DECREASING festgelegt ist, ist der umgekehrte Wert true, und die Summe erfolgt durch Durchlaufen von Elementen durch den absteigenden Index.

HasExclusiveSum

Typ: BOOL

Bei TRUE wird der Wert des aktuellen Elements ausgeschlossen, wenn die ausgeführte Ally in den Ausgabe tensor geschrieben wird. Wenn FALSE, wird der Wert des aktuellen Elements in die ausgeführte Ally eingeschlossen.

Beispiele

Die Beispiele in diesem Abschnitt verwenden alle einen Eingabe tensor mit den folgenden Eigenschaften.

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

Beispiel 1: Kumulative Summation über horizontale Slivers

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]]]]   //      [...                   ]

Beispiel 2: Exklusive Summen

Wenn HasExclusiveSum auf TRUE festgelegt wird, wird beim Schreiben in den Ausgabe tensor der Wert des aktuellen Elements von der ausgeführten Ally ausgeschlossen.

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]]]]

Beispiel 3: Achsenrichtung

Das Festlegen von AxisDirection auf DML_AXIS_DIRECTION_DECREASING bewirkt, dass die Durchlaufreihenfolge von Elementen beim Berechnen der Ausgeführten Ally umgekehrt wird.

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]]]]  //      [...                   ]

Beispiel 4. Summieren entlang einer anderen Achse

In diesem Beispiel erfolgt die Summierung vertikal entlang der Höhenachse (Dimension 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 ...]

Hinweise

Dieser Operator unterstützt die direkte Ausführung, was bedeutet, dass der OutputTensor den InputTensor während der Bindung aliasen darf.

Verfügbarkeit

Dieser Operator wurde in DML_FEATURE_LEVEL_2_1eingeführt.

Tensoreinschränkungen

InputTensor und OutputTensor müssen denselben DataType, DimensionCount und Sizes aufweisen.

Tensorunterstützung

DML_FEATURE_LEVEL_5_0 und höher

Tensor Typ Unterstützte Dimensionsanzahl Unterstützte Datentypen
InputTensor Eingabe 1 bis 8 FLOAT32, FLOAT16, INT64, INT32, UINT64, UINT32
OutputTensor Ausgabe 1 bis 8 FLOAT32, FLOAT16, INT64, INT32, UINT64, UINT32

DML_FEATURE_LEVEL_4_0 und höher

Tensor Typ Unterstützte Dimensionsanzahl Unterstützte Datentypen
InputTensor Eingabe 1 bis 8 FLOAT32, FLOAT16, INT32, UINT32
OutputTensor Ausgabe 1 bis 8 FLOAT32, FLOAT16, INT32, UINT32

DML_FEATURE_LEVEL_2_1 und höher

Tensor Typ Unterstützte Dimensionsanzahl Unterstützte Datentypen
InputTensor Eingabe 4 FLOAT32, FLOAT16, INT32, UINT32
OutputTensor Ausgabe 4 FLOAT32, FLOAT16, INT32, UINT32

Anforderungen

   
Unterstützte Mindestversion (Client) Windows 10 Build 20348
Unterstützte Mindestversion (Server) Windows 10 Build 20348
Kopfzeile directml.h