Share via


DML_QUANTIZED_LINEAR_MATRIX_MULTIPLY_OPERATOR_DESC-Struktur (directml.h)

Führt eine Matrixmultiplikationsfunktion für quantisierte Daten aus. Dieser Operator entspricht mathematisch dem Dequantisieren der Eingaben, der anschließenden Matrix multiplizieren und der anschließenden Quantisierung der Ausgabe.

Dieser Operator erfordert, dass die Matrix-Multiplikations-Eingabe-Tensoren 4D sein, die als { BatchCount, ChannelCount, Height, Width }formatiert sind. Der Matrixmultiplikationsoperator führt BatchCount * ChannelCount number of independent matrix multipliications aus.

Wenn beispielsweise ATensorgrößen von { BatchCount, ChannelCount, M, K }hat und BTensorGrößen von { BatchCount, ChannelCount, K, N }hat und OutputTensorgrößen von { BatchCount, ChannelCount, M, N }hat, führt der Matrixmultiplikationsoperator BatchCount * ChannelCount unabhängige Matrixmultiplikationen der Dimensionen {M,K} x {K,N} = {M,N} = {M,N} aus.

Dequantize-Funktion

f(Input, Scale, ZeroPoint) = (Input - ZeroPoint) * Scale

Quantize-Funktion

f(Input, Scale, ZeroPoint) = clamp(round(Input / Scale) + ZeroPoint, Min, Max)

Syntax

struct DML_QUANTIZED_LINEAR_MATRIX_MULTIPLY_OPERATOR_DESC {
  const DML_TENSOR_DESC *ATensor;
  const DML_TENSOR_DESC *AScaleTensor;
  const DML_TENSOR_DESC *AZeroPointTensor;
  const DML_TENSOR_DESC *BTensor;
  const DML_TENSOR_DESC *BScaleTensor;
  const DML_TENSOR_DESC *BZeroPointTensor;
  const DML_TENSOR_DESC *OutputScaleTensor;
  const DML_TENSOR_DESC *OutputZeroPointTensor;
  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 sein { BatchCount, ChannelCount, M, K }.

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 eine Quantisierung pro Tensor erforderlich ist oder { 1, 1, M, 1 } wenn eine Quantisierung pro Zeile erforderlich ist. Diese Skalierungswerte werden zum Dequantisieren der A-Werte verwendet.

AZeroPointTensor

Typ: _Maybenull_ const DML_TENSOR_DESC*

Ein optionaler Tensor, der die ATensor-Nullpunktdaten enthält. Die erwarteten Dimensionen des AZeroPointTensor sind { 1, 1, 1, 1 } , wenn eine Quantisierung pro Tensor erforderlich ist oder { 1, 1, M, 1 } eine 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 sein { BatchCount, ChannelCount, K, N }.

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 eine Quantisierung pro Tensor erforderlich ist oder { 1, 1, 1, N } eine 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 eine Quantisierung pro Tensor erforderlich ist oder { 1, 1, 1, N } eine 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 eine Quantisierung pro Tensor erforderlich ist oder { 1, 1, M, 1 } eine 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 eine Quantisierung pro Tensor erforderlich ist oder { 1, 1, M, 1 } eine Quantisierung pro Zeile erforderlich ist. Dieser Nullpunktwert wird zum Dequantisieren der OutputTensor-Werte verwendet.

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_2_1eingeführt.

Tensoreinschränkungen

  • AScaleTensor, AZeroPointTensor, BScaleTensor, BZeroPointTensor, OutputScaleTensor und OutputZeroPointTensor müssen über dieselbe DimensionCount verfügen.
  • ATensor, BTensor und OutputTensor müssen über dasselbe DimensionCount-Objekt verfügen.
  • BTensor und BZeroPointTensor müssen denselben Datentyp aufweisen.
  • OutputTensor und OutputZeroPointTensor müssen denselben Datentyp aufweisen.
  • AScaleTensor, AZeroPointTensor, BScaleTensor, BZeroPointTensor, OutputScaleTensor und OutputZeroPointTensor müssen über dieselbe DimensionCount verfügen.
  • ATensor und AZeroPointTensor müssen denselben Datentyp aufweisen.

Tensorunterstützung

DML_FEATURE_LEVEL_4_0 und höher

Tensor Variante Unterstützte Dimensionsanzahl Unterstützte Datentypen
ATensor Eingabe 2 bis 4 INT8, UINT8
AScaleTensor Eingabe 1 bis 4 FLOAT32
AZeroPointTensor Optionale Eingabe 1 bis 4 INT8, UINT8
BTensor Eingabe 2 bis 4 INT8, UINT8
BScaleTensor Eingabe 1 bis 4 FLOAT32
BZeroPointTensor Optionale Eingabe 1 bis 4 INT8, UINT8
OutputScaleTensor Eingabe 1 bis 4 FLOAT32
OutputZeroPointTensor Optionale Eingabe 1 bis 4 INT8, UINT8
OutputTensor Ausgabe 2 bis 4 INT8, UINT8

DML_FEATURE_LEVEL_2_1 und höher

Tensor Variante Unterstützte Dimensionsanzahl Unterstützte Datentypen
ATensor Eingabe 4 INT8, UINT8
AScaleTensor Eingabe 4 FLOAT32
AZeroPointTensor Optionale Eingabe 4 INT8, UINT8
BTensor Eingabe 4 INT8, UINT8
BScaleTensor Eingabe 4 FLOAT32
BZeroPointTensor Optionale Eingabe 4 INT8, UINT8
OutputScaleTensor Eingabe 4 FLOAT32
OutputZeroPointTensor Optionale Eingabe 4 INT8, UINT8
OutputTensor Ausgabe 4 INT8, UINT8

Anforderungen

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