共用方式為


DirectML 版本歷程記錄

DirectML 會以 Windows 的系統元件形式散發,並作為 Windows 操作系統(OS)的一部分在 Windows 10 版本 1903(10.0; 組建 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 N/A DirectML-1.15.4 版本
1.15.3 DML_FEATURE_LEVEL_6_4 0x6400 N/A DirectML-1.15.3
1.15.2 DML_FEATURE_LEVEL_6_4 0x6400 N/A DirectML-1.15.2
1.15.1 DML_FEATURE_LEVEL_6_4 0x6400 N/A DirectML-1.15.1 版本
1.15.0 DML_FEATURE_LEVEL_6_4DML_FEATURE_LEVEL_6_3 0x64000x6300 N/A DirectML-1.15.0 版本
1.13.1 DML_FEATURE_LEVEL_6_2 0x6200 N/A DirectML-1.13.1
1.13.0 DML_FEATURE_LEVEL_6_2 0x6200 N/A DirectML-1.13.0
1.12.0 DML_FEATURE_LEVEL_6_1 0x6100 N/A DirectML-1.12.0 版本
1.11.0 DML_FEATURE_LEVEL_6_0 0x6000 N/A DirectML-1.11.0 版本
1.10.0 DML_FEATURE_LEVEL_5_2 0x5200 N/A DirectML-1.10.0
1.9.0 DML_FEATURE_LEVEL_5_1 0x5100 N/A 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 N/A 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 N/A DirectML-1.5.0 版本
1.4.01 DML_FEATURE_LEVEL_3_0 0x3000 N/A DirectML-1.4.0 版本
1.1.0 DML_FEATURE_LEVEL_2_0 0x2000 Windows 10 版本 2004 (10.0;組建 19041) (Windows 10 2020 年 5 月更新)。 又稱為 “20H1”。 N/A
1.0.0 DML_FEATURE_LEVEL_1_0 0x1000 Windows 10 版本 1903 (10.0; 組建 18362) (Windows 10 2019 年 5 月更新)。 也稱為 「19H1」。 N/A

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 排除任何需要 DirectML 版本高於 1.10.0 的功能。DirectML.h
0x5100 任何需要比 1.9.0 版更新的 DirectML 版本的功能都被排除在外DirectML.h
0x5000 任何需要 DirectML 比 1.8.0 更新版本的功能,都被排除於 DirectML.h
0x4100 任何需要 1.7.0 以上版本的 DirectML 功能都被排除在 DirectML.h 之外。
0x4000 任何需要 DirectML 版本高於 1.6.0 的功能,都被排除在 DirectML.h 之外。
0x3100 任何需要比 1.5.0 更新版本的 DirectML 功能皆排除在 DirectML.h 之外。
0x3000 任何需要 1.4.0 以上 DirectML 版本的功能,都排除在之外 DirectML.h
0x2000 任何需要 DirectML 新於 1.1.0版本的功能,都排除在 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 軟體開發工具包 2004 版 10.0.19041.0 版的應用程式。 從上表中,這個 對應至的 DirectML 版本是 1.1.0,而對應的 DML_TARGET_VERSION0x2000

如果您未設定 DML_TARGET_VERSIONNTDDI_VERSION 巨集,則選取的目標版本預設 0x2000為 ,且 中的 DirectML.h 所有專案都可供使用。

如果您想要讓應用程式能夠在 Windows 10 版本 1903(10.0; 組建 18362)上執行,那麼您可以< c0 />,這將排除< c1 />中 DirectML 1.0.0 版不支援的所有內容。 這可確保任何嘗試使用需要更高版本的功能都將無法編譯。

DirectML 版本與功能層級

DirectML 版本(例如 1.0.0 或 1.4.0)描述 DirectML 的特定版本,包括其相關聯的 DirectML.h 頭文件與 .lib 檔案。

功能層級 (例如 , DML_FEATURE_LEVEL_1_0DML_FEATURE_LEVEL_2_0) 描述 API 基礎實作的功能,其可能會因所使用的版本 DirectML.h 而有所不同。

例如,針對較新的 SDK 建置應用程式,但在較舊版本的 Windows 上執行,可能會(在運行時間)看到較低的支援功能層級,即使針對最新的 SDK 進行編譯也一樣。

另請參閱