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_1
eingefü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 |