DML_MATRIX_MULTIPLY_INTEGER_TO_FLOAT_OPERATOR_DESC-Struktur (directml.h)
Führt eine Matrixmultiplikationsfunktion mit ganzzahligen Tensordaten durch und erzeugt eine Gleitkomma-Ausgabe.
Für diesen Operator muss die Matrix die Eingabe-Tensoren multiplizieren, um 4D zu sein, die als { BatchCount, ChannelCount, Height, Width }
formatiert sind. Der Matrixmultiplikationsoperator führt BatchCount * ChannelCount-Anzahl unabhängiger Matrixmultiplikationen durch.
Wenn beispielsweise ATensor Größen von { BatchCount, ChannelCount, M, K }
und BTensor Größen von { BatchCount, ChannelCount, K, N }
und OutputTensor Größen von { BatchCount, ChannelCount, M, N }
hat, führt der Matrixmultiplikationsoperator BatchCount * ChannelCount unabhängige Matrixmultiplikationen von Dimensionen {M,K} x {K,N} = {M,N} = {M,N} aus.
Wichtig
Diese API ist als Teil des eigenständigen weiterverteilbare Pakets DirectML verfügbar (siehe Microsoft.AI.DirectML , Version 1.13 und höher). Siehe auch DirectML-Versionsverlauf.
Syntax
struct DML_MATRIX_MULTIPLY_INTEGER_TO_FLOAT_OPERATOR_DESC
{
const DML_TENSOR_DESC* ATensor;
const DML_TENSOR_DESC* AScaleTensor;
_Maybenull_ const DML_TENSOR_DESC* AZeroPointTensor;
const DML_TENSOR_DESC* BTensor;
const DML_TENSOR_DESC* BScaleTensor;
_Maybenull_ const DML_TENSOR_DESC* BZeroPointTensor;
_Maybenull_ const DML_TENSOR_DESC* BiasTensor;
const DML_TENSOR_DESC* OutputTensor;
};
Member
ATensor
Typ: const DML_TENSOR_DESC*
Ein Tensor, der die A-Daten enthält. Die Dimensionen dieses Tensors sollten { BatchCount, ChannelCount, M, K }
sein.
AScaleTensor
Typ: const DML_TENSOR_DESC*
Ein Tensor, der die ATensor-Skalierungsdaten enthält. Die erwarteten Dimensionen von AScaleTensor sind { 1, 1, 1, 1 }
, wenn die Quantisierung pro Tensor erforderlich ist oder { 1, 1, M, 1 }
, wenn die Quantisierung pro Zeile erforderlich ist. Diese Skalierungswerte werden zum Dequantisieren der ATensor-Werte verwendet.
AZeroPointTensor
Typ: _Maybenull_ const DML_TENSOR_DESC*
Ein optionaler Tensor, der die ATensor-Nullpunktdaten enthält. Die erwarteten Dimensionen von AZeroPointTensor sind { 1, 1, 1, 1 }
, wenn die Quantisierung pro Tensor erforderlich ist oder { 1, 1, M, 1 }
, wenn die Quantisierung pro Zeile erforderlich ist. Diese Nullpunktwerte werden zum Dequantisieren der ATensor-Werte verwendet.
BTensor
Typ: const DML_TENSOR_DESC*
Ein Tensor, der die B-Daten enthält. Die Dimensionen dieses Tensors sollten { BatchCount, ChannelCount, K, N }
sein.
BScaleTensor
Typ: const DML_TENSOR_DESC*
Ein Tensor, der die BTensor-Skalierungsdaten enthält. Die erwarteten Dimensionen von BScaleTensor sind { 1, 1, 1, 1 }
, wenn die Quantisierung pro Tensor erforderlich ist oder { 1, 1, 1, N }
, wenn die Quantisierung pro Spalte erforderlich ist. Diese Skalierungswerte werden zum Dequantisieren der BTensor-Werte verwendet.
BZeroPointTensor
Typ: _Maybenull_ const DML_TENSOR_DESC*
Ein optionaler Tensor, der die BTensor-Nullpunktdaten enthält. Die erwarteten Dimensionen von BZeroPointTensor sind { 1, 1, 1, 1 }
, wenn die Quantisierung pro Tensor erforderlich ist oder { 1, 1, 1, N }
, wenn die Quantisierung pro Spalte erforderlich ist. Diese Nullpunktwerte werden zum Dequantisieren der BTensor-Werte verwendet.
OutputScaleTensor
Typ: const DML_TENSOR_DESC*
Ein Tensor, der die OutputTensor-Skalierungsdaten enthält. Die erwarteten Dimensionen von OutputScaleTensor sind { 1, 1, 1, 1 }
, wenn die Quantisierung pro Tensor erforderlich ist oder { 1, 1, M, 1 }
, wenn die Quantisierung pro Zeile erforderlich ist. Dieser Skalierungswert wird zum Dequantisieren der OutputTensor-Werte verwendet.
OutputZeroPointTensor
Typ: _Maybenull_ const DML_TENSOR_DESC*
Ein optionaler Tensor, der die OutputTensor-Nullpunktdaten enthält. Die erwarteten Dimensionen von OutputZeroPointTensor sind { 1, 1, 1, 1 }
, wenn die Quantisierung pro Tensor erforderlich ist oder { 1, 1, M, 1 }
, wenn die Quantisierung pro Zeile erforderlich ist. Dieser Nullpunktwert wird zum Dequantisieren der OutputTensor-Werte verwendet.
BiasTensor
Typ: _Maybenull_ const DML_TENSOR_DESC*
Ein optionaler Tensor, der die Bias-Daten enthält. Wenn angegeben, sollte die Größen dieses Tensors mit der Ausgabegröße { BatchCount, ChannelCount, M, N }
übereinstimmen.
OutputTensor
Typ: const DML_TENSOR_DESC*
Ein Tensor, in den die Ergebnisse geschrieben werden sollen. Die Dimensionen dieses Tensors sind { BatchCount, ChannelCount, M, N }
.
Verfügbarkeit
Dieser Operator wurde in DML_FEATURE_LEVEL_6_2 eingeführt.
Tensor-Einschränkungen
- AScaleTensor, AZeroPointTensor, BScaleTensor und BZeroPointTensor müssen denselben DimensionCount aufweisen.
- ATensor, BiasTensor, BTensor und OutputTensor müssen denselben DimensionCount aufweisen.
- BiasTensor und OutputTensor müssen dieselben Größen aufweisen.
- ATensor, AZeroPointTensor, BTensor und BZeroPointTensor müssen denselben Datentyp aufweisen.
- AScaleTensor, BiasTensor, BScaleTensor und OutputTensor müssen denselben Datentyp aufweisen.
Tensor-Unterstützung
Tensor | Variante | Dimensionen | Unterstützte Dimensionsanzahl | Unterstützte Datentypen |
---|---|---|---|---|
ATensor | Eingabe | { [BatchCount], [ChannelCount], M, K } | 2 bis 4 | INT32, INT16, INT8, UINT32, UINT16, UINT8 |
AScaleTensor | Eingabe | { AScaleDimensions[] } | 1 bis 4 | FLOAT32, FLOAT16 |
AZeroPointTensor | Optionale Eingabe | { [1], [1], AZeroPointCount, [1] } | 1 bis 4 | INT32, INT16, INT8, UINT32, UINT16, UINT8 |
BTensor | Eingabe | { [BatchCount], [ChannelCount], K, N } | 2 bis 4 | INT32, INT16, INT8, UINT32, UINT16, UINT8 |
BScaleTensor | Eingabe | { BScaleDimensions[] } | 1 bis 4 | FLOAT32, FLOAT16 |
BZeroPointTensor | Optionale Eingabe | { [1], [1], [1], BZeroPointCount } | 1 bis 4 | INT32, INT16, INT8, UINT32, UINT16, UINT8 |
BiasTensor | Optionale Eingabe | { [BatchCount], [ChannelCount], M, N } | 2 bis 4 | FLOAT32, FLOAT16 |
OutputTensor | Output | { [BatchCount], [ChannelCount], M, N } | 2 bis 4 | FLOAT32, FLOAT16 |
Anforderungen
Übergeordnet | directml.h |