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 再頒布可能パッケージ