Compartilhar via


Estrutura DML_MATRIX_MULTIPLY_INTEGER_TO_FLOAT_OPERATOR_DESC (directml.h)

Executa uma função de multiplicação de matriz em dados de tensor de entrada inteiro e produz saída de ponto flutuante.

Esse operador requer que os tensores de entrada de multiplicação da matriz sejam 4D, que são formatados como { BatchCount, ChannelCount, Height, Width }. O operador de multiplicação de matriz executará o número BatchCount * ChannelCount de multiplicações de matriz independentes.

Por exemplo, se ATensor tiver Sizes de { BatchCount, ChannelCount, M, K } e BTensor tiver Sizes de { BatchCount, ChannelCount, K, N } e OutputTensor tiver Sizes de { BatchCount, ChannelCount, M, N }, então, o operador de multiplicação de matrizes executará multiplicações de matrizes independentes BatchCount * ChannelCount de dimensões {M,K} x {K,N} = {M,N}.

Importante

Essa API está disponível como parte do pacote redistribuível autônomo DirectML (consulte Microsoft.AI.DirectML versão 1.13 e posterior. Confira também o histórico de versões do DirectML.

Sintaxe

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;
};

Membros

ATensor

Tipo: const DML_TENSOR_DESC*

Um tensor que contém os dados A. As dimensões deste tensor devem ser { BatchCount, ChannelCount, M, K }.

AScaleTensor

Tipo: const DML_TENSOR_DESC*

Um tensor que contém os dados da escala ATensor. As dimensões esperadas de AScaleTensor serão { 1, 1, 1, 1 } se a quantificação por tensor for necessária ou { 1, 1, M, 1 } se a quantificação por linha for necessária. Esses valores de escala são usados para dequantizar os valores de ATensor.

AZeroPointTensor

Tipo: _Maybenull_ const DML_TENSOR_DESC*

Um tensor opcional que contém os dados de ponto zero do ATensor. As dimensões esperadas de AZeroPointTensor são { 1, 1, 1, 1 } se a quantização por tensor é necessária, ou { 1, 1, M, 1 } se a quantização por linha é necessária. Esses valores de ponto zero são usados para dequantizar os valores do ATensor.

BTensor

Tipo: const DML_TENSOR_DESC*

Um tensor que contém os dados B. As dimensões deste tensor devem ser { BatchCount, ChannelCount, K, N }.

BScaleTensor

Tipo: const DML_TENSOR_DESC*

Um tensor que contém os dados de escala de BTensor. As dimensões esperadas de BScaleTensor são { 1, 1, 1, 1 } se a quantização por tensor é necessária, ou { 1, 1, 1, N } se a quantização por coluna é necessária. Esses valores de escala são usados para desquantificar os valores do BTensor.

BZeroPointTensor

Tipo: _Maybenull_ const DML_TENSOR_DESC*

Um tensor opcional que contém os dados de ponto zero do BTensor. As dimensões esperadas do BZeroPointTensor são { 1, 1, 1, 1 } se a quantização por tensor é necessária, ou { 1, 1, 1, N } se a quantização por coluna é necessária. Esses valores de ponto zero são usados para desquantificar os valores do BTensor.

OutputScaleTensor

Tipo: const DML_TENSOR_DESC*

Um tensor que contém os dados de escala de OutputTensor. As dimensões esperadas de OutputScaleTensor são { 1, 1, 1, 1 }, se a quantização por tensor é necessária, ou { 1, 1, M, 1 }, se a quantização por linha é necessária. Esse valor de escala é usado para dequantizar os valores do OutputTensor.

OutputZeroPointTensor

Tipo: _Maybenull_ const DML_TENSOR_DESC*

Um tensor opcional que contém os dados de ponto zero do OutputTensor. As dimensões esperadas do OutputZeroPointTensor são { 1, 1, 1, 1 }, se a quantização por tensor é necessária, ou { 1, 1, M, 1 }, se a quantização por linha é necessária. Esse valor de ponto zero é usado para dequantizar os valores do OutputTensor.

BiasTensor

Tipo: _Maybenull_ const DML_TENSOR_DESC*

Um tensor opcional que contém os dados de desvio. Se fornecido, os Sizes desse tensor devem corresponder ao tamanho de saída { BatchCount, ChannelCount, M, N }.

OutputTensor

Tipo: const DML_TENSOR_DESC*

Um tensor com o qual escrever os resultados. As dimensões deste tensor são { BatchCount, ChannelCount, M, N }.

Disponibilidade

Esse operador foi introduzido em DML_FEATURE_LEVEL_6_2.

Restrições de tensor

  • AScaleTensor, AZeroPointTensor, BScaleTensor e BZeroPointTensor devem ter o mesmo DimensionCount.
  • ATensor, BiasTensor, BTensor e OutputTensor devem ter o mesmo DimensionCount.
  • BiasTensor e OutputTensor devem ter os mesmos Sizes.
  • ATensor, AZeroPointTensor, BTensor e BZeroPointTensor devem ter o mesmo DataType.
  • AScaleTensor, BiasTensor, BScaleTensor e OutputTensor devem ter o mesmo DataType.

Suporte a tensores

Tensor Tipo Dimensões Contagens de dimensões compatíveis Tipos de dados com suporte
ATensor Entrada { [BatchCount], [ChannelCount], M, K } 2 a 4 INT32, INT16, INT8, UINT32, UINT16, UINT8
AScaleTensor Entrada { AScaleDimensions[] } 1 a 4 FLOAT32, FLOAT16
AZeroPointTensor Entrada opcional { [1], [1], AZeroPointCount, [1] } 1 a 4 INT32, INT16, INT8, UINT32, UINT16, UINT8
BTensor Entrada { [BatchCount], [ChannelCount], K, N } 2 a 4 INT32, INT16, INT8, UINT32, UINT16, UINT8
BScaleTensor Entrada { BScaleDimensions[] } 1 a 4 FLOAT32, FLOAT16
BZeroPointTensor Entrada opcional { [1], [1], [1], BZeroPointCount } 1 a 4 INT32, INT16, INT8, UINT32, UINT16, UINT8
BiasTensor Entrada opcional { [BatchCount], [ChannelCount], M, N } 2 a 4 FLOAT32, FLOAT16
OutputTensor Saída { [BatchCount], [ChannelCount], M, N } 2 a 4 FLOAT32, FLOAT16

Requisitos

   
Cabeçalho directml.h