DirectML のバージョン履歴
DirectML は Windows のシステム コンポーネントとして配布され、Windows 10 バージョン 1903 (10.0、ビルド 18362) 以降の Windows オペレーティング システム (OS) の一部として使用できます。
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.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 2020 年 5 月更新)。 別名 "20H1"。 | 該当なし |
1.0.0 | DML_FEATURE_LEVEL_1_0 | 0x1000 |
Windows 10、バージョン 1903 (10.0、ビルド 18362) (Windows 10 2020 年 5 月更新)。 別名 "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 | 結果 |
---|---|
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_VERSION
は 0x2000
です。
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_0
または DML_FEATURE_LEVEL_2_0
) は、API の基になる実装の機能を表します。これは、使用されているバージョン DirectML.h
とは異なる場合があります。
たとえば、新しい SDK に対してビルドされているが、古いバージョンの Windows で実行されているアプリケーションでは、最新の SDK に対してコンパイルされている場合でも、(実行時に) サポートされる機能レベルが低くなる可能性があります。