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 です。
バージョン テーブル
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_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 に対してコンパイルされている場合でも、(実行時に) サポートされる機能レベルが低くなる可能性があります。
こちらも参照ください
- Windows AI
- DirectML 機能レベルの履歴
- 列挙 を DML_FEATURE_LEVEL する
- Microsoft.AI.DirectML 再頒布可能パッケージ