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 版。
版本數據表
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_VERSION
是 0x2000
。
如果您未設定 DML_TARGET_VERSION
或 NTDDI_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_0
或 DML_FEATURE_LEVEL_2_0
) 描述 API 基礎實作的功能,其可能會因所使用的版本 DirectML.h
而有所不同。
例如,針對較新的 SDK 建置應用程式,但在較舊版本的 Windows 上執行,可能會(在運行時間)看到較低的支援功能層級,即使針對最新的 SDK 進行編譯也一樣。