次の方法で共有


DirectML のバージョン履歴

DirectML は Windows のシステム コンポーネントとして配布され、Windows 10 バージョン 1903 (10.0; で Windows オペレーティング システム (OS) の一部として使用できます。ビルド 18362) 以降。

DirectML バージョン 1.4.0 以降では、DirectML はスタンドアロンの再頒布可能パッケージ ( Microsoft.AI.DirectML を参照) としても使用できます。これは、固定バージョンの DirectML を使用するアプリケーションや、古いバージョンの Windows 10 で実行する場合に便利です。

DirectML は、 セマンティック バージョン 管理規則に従います。 つまり、バージョン番号はフォーム major.minor.patchに従います。 DirectML の最初のリリースのバージョンは 1.0.0 です。

バージョン テーブル

DirectML バージョン サポートされている機能レベル ( DirectML 機能レベルの履歴を参照) DML_TARGET_VERSION (OS)で最初に利用可能 利用可能な最初のもの (再頒布可能)
1.15.4 DML_FEATURE_LEVEL_6_4 0x6400 なし DirectMLの 1.15.4
1.15.3 DML_FEATURE_LEVEL_6_4 0x6400 なし DirectMLの1.15.3
1.15.2 DML_FEATURE_LEVEL_6_4 0x6400 なし DirectMLの 1.15.2
1.15.1 DML_FEATURE_LEVEL_6_4 0x6400 なし DirectMLの 1.15.1
1.15.0 DML_FEATURE_LEVEL_6_4DML_FEATURE_LEVEL_6_3 0x6400 または 0x6300 なし DirectMLの1.15.0
1.13.1 DML_FEATURE_LEVEL_6_2 0x6200 なし DirectMLの - 1.13.1
1.13.0 DML_FEATURE_LEVEL_6_2 0x6200 なし DirectMLの 1.13.0
1.12.0 DML_FEATURE_LEVEL_6_1 0x6100 なし DirectMLの1.12.0
1.11.0 DML_FEATURE_LEVEL_6_0 0x6000 なし DirectMLの 1.11.0
1.10.0 DML_FEATURE_LEVEL_5_2 0x5200 なし DirectMLの1.10.0
1.9.0 DML_FEATURE_LEVEL_5_1 0x5100 なし DirectMLの 1.9.0
1.8.0 DML_FEATURE_LEVEL_5_0 0x5000 Windows 11 (ビルド 10.0.22621、 22H2) DirectMLの1.8.0
1.7.0 DML_FEATURE_LEVEL_4_1 0x4100 なし DirectMLの 1.7.0
1.6.0 DML_FEATURE_LEVEL_4_0 0x4000 Windows 11 (ビルド 10.0.22000; 21H2) DirectMLの 1.6.0
1.5.0 DML_FEATURE_LEVEL_3_1 0x3100 なし DirectMLの 1.5.0
1.4.01 DML_FEATURE_LEVEL_3_0 0x3000 なし DirectMLの 1.4.0
1.1.0 DML_FEATURE_LEVEL_2_0 0x2000 Windows 10 バージョン 2004 (10.0;ビルド 19041) (Windows 10 May 2020 Update)。 別名 "20H1"。 なし
1.0.0 DML_FEATURE_LEVEL_1_0 0x1000 Windows 10 バージョン 1903 (10.0;ビルド 18362) (Windows 10 May 2019 Update)。 別名 "19H1"。 なし

1 DirectML の 1.2.0 および 1.3.0 中間リリースは、広く利用できませんでした。

DirectML ターゲット バージョンの選択

便宜上、 DirectML.h ヘッダー ファイル内の特定の機能は、 DML_TARGET_VERSION マクロの値に基づいて条件付きで宣言されます。 DML_TARGET_VERSION マクロを特定の値に設定すると、DirectML.hの一部をアプリケーションから除外できます。

これは、 DirectML.hの新しいコピーを使用しているが、DirectML バイナリの下位バージョンを対象としている場合に役立ちます。これは、選択したターゲット レベルを超える機能を使用しようとしてもコンパイルされないためです。 このメカニズムは、 NTDDI_VERSION マクロに似ています ( 条件付き宣言のマクロを参照)。

DML_TARGET_VERSION マクロの有効な値を次に示します。

DML_TARGET_VERSION 影響
0x6400 1.15.0 より新しいバージョンの DirectML を必要とする機能は、DirectML.hから除外されます。
0x6300 1.15.0 より新しいバージョンの DirectML を必要とする機能、またはDML_FEATURE_LEVEL_6_4機能である機能は、DirectML.hから除外されます。
0x6200 1.13.0 より新しいバージョンの DirectML を必要とする機能は、DirectML.hから除外されます。
0x6100 1.12.0 より新しいバージョンの DirectML を必要とする機能は、DirectML.hから除外されます。
0x6000 1.11.0 より新しいバージョンの DirectML を必要とする機能は、DirectML.hから除外されます。
0x5200 1.10.0 より新しいバージョンの DirectML を必要とする機能は、DirectML.hから除外されます。
0x5100 1.9.0 より新しいバージョンの DirectML を必要とする機能は、DirectML.hから除外されます。
0x5000 1.8.0 より新しいバージョンの DirectML を必要とする機能は、DirectML.hから除外されます。
0x4100 1.7.0 より新しいバージョンの DirectML を必要とする機能は、DirectML.hから除外されます。
0x4000 1.6.0 より新しいバージョンの DirectML を必要とする機能は、DirectML.hから除外されます。
0x3100 1.5.0 より新しいバージョンの DirectML を必要とする機能は、DirectML.hから除外されます。
0x3000 1.4.0 より新しいバージョンの DirectML を必要とする機能は、DirectML.hから除外されます。
0x2000 1.1.0 より新しいバージョンの DirectML を必要とする機能は、DirectML.hから除外されます。
0x1000 1.0.0 より新しいバージョンの DirectML を必要とする機能は、DirectML.hから除外されます。
を設定しない ターゲット バージョンが自動的に選択されます。 詳細については、以下をご覧ください。

DML_TARGET_VERSIONが設定されていない場合は、次の方法で自動的に選択されます。

  • DML_TARGET_VERSION_USE_LATEST マクロが定義されている場合は、最新のターゲット バージョンが選択されます。
  • それ以外の場合は、 NTDDI_VERSION マクロの値に基づいてターゲット バージョンが選択されます。
    • NTDDI_WIN10_ZN は、ターゲット バージョンの 0x6000になります。
    • NTDDI_WIN10_NI は、ターゲット バージョンの 0x5000になります。
    • NTDDI_WIN10_CO は、ターゲット バージョンの 0x4000になります。
    • NTDDI_WIN10_FE は、ターゲット バージョンの 0x3000になります。
    • NTDDI_WIN10_VB は、ターゲット バージョンの 0x2000になります。
    • NTDDI_WIN10_19H1 は、ターゲット バージョンの 0x1000になります。
    • NTDDI_VERSIONが定義されていない場合は、(DML_TARGET_VERSION_USE_LATESTが指定されたかのように) 最新のターゲット バージョンが選択されます。

Windows ソフトウェア開発キット (SDK) のバージョン 10.0.19041.0 (Windows 10 バージョン 2004) を使用するアプリケーションについて考えてみましょう。 上の表から、これに対応する DirectML のバージョンは 1.1.0 で、対応する DML_TARGET_VERSION0x2000

DML_TARGET_VERSIONマクロもNTDDI_VERSIONマクロも設定しない場合、選択したターゲット バージョンは既定で0x2000になり、DirectML.h内のすべてのものが使用できるようになります。

アプリケーションを Windows 10 バージョン 1903 (10.0; ビルド 18362) で実行できるようにするには、#define DML_TARGET_VERSION 0x1000を行うことができます。これにより、DirectML バージョン 1.0.0 でサポートされていないDirectML.h内のすべてのコンテンツが除外されます。 これにより、より大きなバージョンを必要とする機能を使用しようとすると、コンパイルに失敗します。

DirectML バージョンと機能レベル

DirectML バージョン (1.0.0、1.4.0 など) では、関連付けられている DirectML.h ヘッダー ファイルや .lib ファイルなど、DirectML の特定のリリースが記述されています。

機能レベル ( DML_FEATURE_LEVEL_1_0DML_FEATURE_LEVEL_2_0など) では、API の基になる実装の機能が記述されています。これは、使用されている DirectML.h のバージョンとは異なる場合があります。

たとえば、新しい SDK に対してビルドされているが、古いバージョンの Windows で実行されているアプリケーションでは、最新の SDK に対してコンパイルされている場合でも、(実行時に) サポートされる機能レベルが低くなる可能性があります。

こちらも参照ください