DML_CUMULATIVE_SUMMATION_OPERATOR_DESC structure (directml.h)
Additionne les éléments d’un tenseur le long d’un axe, en écrivant le décompte en cours d’exécution de la somme dans le tenseur de sortie.
Syntaxe
struct DML_CUMULATIVE_SUMMATION_OPERATOR_DESC {
const DML_TENSOR_DESC *InputTensor;
const DML_TENSOR_DESC *OutputTensor;
UINT Axis;
DML_AXIS_DIRECTION AxisDirection;
BOOL HasExclusiveSum;
};
Membres
InputTensor
Type : const DML_TENSOR_DESC*
Tenseur d’entrée contenant les éléments à additionnez.
OutputTensor
Type : const DML_TENSOR_DESC*
Tenseur de sortie dans lequel écrire les additions cumulatives résultantes. Ce tenseur doit avoir les mêmes tailles et le même type de données que inputTensor.
Axis
Type : UINT
Index de la dimension sur laquelle additionner les éléments. Cette valeur doit être inférieure à dimensionCount du inputTensor.
AxisDirection
Type : DML_AXIS_DIRECTION
Une des valeurs de l’énumération DML_AXIS_DIRECTION . Si la valeur est DML_AXIS_DIRECTION_INCREASING, la somme se produit en parcourant le tenseur le long de l’axe spécifié par l’index d’élément croissant. Si la valeur est DML_AXIS_DIRECTION_DECREASING, l’inverse est true et la somme se produit en parcourant les éléments par index décroissant.
HasExclusiveSum
Type : BOOL
Si la valeur est TRUE, la valeur de l’élément actuel est exclue lors de l’écriture du tally en cours d’exécution dans le tenseur de sortie. Si la valeur est FALSE, la valeur de l’élément actuel est incluse dans le décompte en cours d’exécution.
Exemples
Les exemples de cette section utilisent tous un tenseur d’entrée avec les propriétés suivantes.
InputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[2, 1, 3, 5],
[3, 8, 7, 3],
[9, 6, 2, 4]]]]
Exemple 1. Somme cumulée entre les éclats horizontaux
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]]]] // [... ]
Exemple 2. Sommes exclusives
La définition de HasExclusiveSum sur TRUE a pour effet d’exclure la valeur de l’élément actuel du décompte en cours d’exécution lors de l’écriture dans le tenseur de sortie.
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]]]]
Exemple 3. Direction de l’axe
La définition d’AxisDirection sur DML_AXIS_DIRECTION_DECREASING a pour effet d’inverser l’ordre de traversée des éléments lors du calcul du décompte en cours d’exécution.
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]]]] // [... ]
Exemple 4. Additionnement le long d’un autre axe
Dans cet exemple, la somme se produit verticalement, le long de l’axe de hauteur (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 ...]
Notes
Cet opérateur prend en charge l’exécution sur place, ce qui signifie que OutputTensor est autorisé à alias le InputTensor pendant la liaison.
Disponibilité
Cet opérateur a été introduit dans DML_FEATURE_LEVEL_2_1
.
Contraintes tensoriels
InputTensor et OutputTensor doivent avoir les mêmes DataType, DimensionCount et Sizes.
Prise en charge des tenseurs
DML_FEATURE_LEVEL_5_0 et versions ultérieures
Tenseur | Type | Nombre de dimensions pris en charge | Types de données pris en charge |
---|---|---|---|
InputTensor | Entrée | 1 à 8 | FLOAT32, FLOAT16, INT64, INT32, UINT64, UINT32 |
OutputTensor | Output | 1 à 8 | FLOAT32, FLOAT16, INT64, INT32, UINT64, UINT32 |
DML_FEATURE_LEVEL_4_0 et versions ultérieures
Tenseur | Type | Nombre de dimensions pris en charge | Types de données pris en charge |
---|---|---|---|
InputTensor | Entrée | 1 à 8 | FLOAT32, FLOAT16, INT32, UINT32 |
OutputTensor | Output | 1 à 8 | FLOAT32, FLOAT16, INT32, UINT32 |
DML_FEATURE_LEVEL_2_1 et versions ultérieures
Tenseur | Type | Nombre de dimensions pris en charge | Types de données pris en charge |
---|---|---|---|
InputTensor | Entrée | 4 | FLOAT32, FLOAT16, INT32, UINT32 |
OutputTensor | Output | 4 | FLOAT32, FLOAT16, INT32, UINT32 |
Spécifications
Client minimal pris en charge | Windows 10 Build 20348 |
Serveur minimal pris en charge | Windows 10 Build 20348 |
En-tête | directml.h |