DML_GEMM_OPERATOR_DESC 構造体 (directml.h)

フォーム Output = FusedActivation(Alpha * TransA(A) x TransB(B) + Beta * C)の一般的な行列乗算関数を実行します。ここで x 、行列乗算を表し * 、スカラーを使用した乗算を表します。

この演算子には、レイアウト { BatchCount, ChannelCount, Height, Width }を持つ 4D テンソルが必要であり、独立した行列乗算の BatchCount * ChannelCount 数が実行されます。

たとえば、ATensor{ BatchCount, ChannelCount, M, K }サイズが で、BTensorサイズ{ BatchCount, ChannelCount, K, N }が で、OutputTensorサイズ{ BatchCount, ChannelCount, M, N }が の場合、この演算子は、ディメンション {M,K} x {K,N} = {M,N} の BatchCount * ChannelCount 独立行列乗算を実行します。

構文

struct DML_GEMM_OPERATOR_DESC {
  const DML_TENSOR_DESC   *ATensor;
  const DML_TENSOR_DESC   *BTensor;
  const DML_TENSOR_DESC   *CTensor;
  const DML_TENSOR_DESC   *OutputTensor;
  DML_MATRIX_TRANSFORM    TransA;
  DML_MATRIX_TRANSFORM    TransB;
  FLOAT                   Alpha;
  FLOAT                   Beta;
  const DML_OPERATOR_DESC *FusedActivation;
};

メンバー

ATensor

型: const DML_TENSOR_DESC*

A 行列を含むテンソル。 このテンソルのサイズは、{ BatchCount, ChannelCount, M, K }TransADML_MATRIX_TRANSFORM_NONEの場合、または { BatchCount, ChannelCount, K, M }TransADML_MATRIX_TRANSFORM_TRANSPOSE場合です。

BTensor

型: const DML_TENSOR_DESC*

B 行列を含むテンソル。 このテンソルのサイズは、{ BatchCount, ChannelCount, K, N }TransBDML_MATRIX_TRANSFORM_NONEの場合、または { BatchCount, ChannelCount, N, K }TransBDML_MATRIX_TRANSFORM_TRANSPOSE場合です。

CTensor

型: _Maybenull_ const DML_TENSOR_DESC*

C 行列 () nullptrを含むテンソル。 指定しない場合、既定値は 0 です。 指定した場合、このテンソルの サイズ は である { BatchCount, ChannelCount, M, N }必要があります。

OutputTensor

型: const DML_TENSOR_DESC*

結果を書き込むテンソル。 このテンソルの サイズ は です { BatchCount, ChannelCount, M, N }

TransA

種類: DML_MATRIX_TRANSFORM

ATensor に適用する変換。トランスポーズ、または変換なしのいずれか。

TransB

種類: DML_MATRIX_TRANSFORM

BTensor に適用する変換。トランスポーズ、または変換なしのいずれか。

Alpha

型: FLOAT

入力 ATensor と BTensor の積のスカラー乗数 値。

Beta

型: FLOAT

オプションの入力 CTensor のスカラー乗数の値。 CTensor が指定されていない場合、この値は無視されます。

FusedActivation

型: _Maybenull_ const DML_OPERATOR_DESC*

GEMM の後に適用するオプションの融合アクティブ化レイヤー。 詳細については、「 パフォーマンスを向上させるために融合演算子を使用する」を参照してください。

可用性

この演算子は、 で DML_FEATURE_LEVEL_1_0導入されました。

テンソル制約

  • ATensorBTensorCTensorおよび OutputTensor には 、同じ DataTypeDimensionCount が必要です。
  • CTensorOutputTensor のサイズは同じである必要があります。

Tensor のサポート

DML_FEATURE_LEVEL_4_0以上

テンソル 種類 Dimensions サポートされているディメンション数 サポートされるデータ型
ATensor 入力 { [BatchCount], [ChannelCount], M, K } 2 から 4 FLOAT32、FLOAT16
BTensor 入力 { [BatchCount], [ChannelCount], K, N } 2 から 4 FLOAT32、FLOAT16
CTensor 省略可能な入力 { [BatchCount], [ChannelCount], M, N } 2 から 4 FLOAT32、FLOAT16
OutputTensor 出力 { [BatchCount], [ChannelCount], M, N } 2 から 4 FLOAT32、FLOAT16

DML_FEATURE_LEVEL_1_0以降

テンソル 種類 Dimensions サポートされているディメンション数 サポートされるデータ型
ATensor 入力 { BatchCount, ChannelCount, M, K } 4 FLOAT32、FLOAT16
BTensor 入力 { BatchCount, ChannelCount, K, N } 4 FLOAT32、FLOAT16
CTensor 省略可能な入力 { BatchCount, ChannelCount, M, N } 4 FLOAT32、FLOAT16
OutputTensor 出力 { BatchCount, ChannelCount, M, N } 4 FLOAT32、FLOAT16

要件

要件
Header directml.h

こちらもご覧ください