DirectML-Versionsverlauf
DirectML wird als Systemkomponente von Windows verteilt und ist als Teil des Windows-Betriebssystems (Os) in Windows 10, Version 1903 (10.0 verfügbar; Build 18362) und höher.
Ab DirectML Version 1.4.0 ist DirectML auch als eigenständiges weitervertreibbares Paket verfügbar (siehe Microsoft.AI.DirectML), das für Anwendungen nützlich ist, die eine feste Version von DirectML verwenden möchten, oder wenn sie auf älteren Versionen von Windows 10 ausgeführt werden.
DirectML folgt den Konventionen für die semantische Versionierung . Das heißt, Versionsnummern folgen dem Formular major.minor.patch
. Die erste Version von DirectML verfügt über eine Version von 1.0.0.
Versionentabelle
DirectML-Version | Unterstützte Featureebene (siehe DirectML-Featureebenenverlauf) | DML_TARGET_VERSION | Erstmals verfügbar in (OS) | Zuerst verfügbar in (Weitervertreibbar) |
---|---|---|---|---|
1.13.0 | DML_FEATURE_LEVEL_6_2 | 0x6200 |
N/V | DirectML-1.13.0 |
1.12.0 | DML_FEATURE_LEVEL_6_1 | 0x6100 |
N/V | DirectML-1.12.0 |
1.11.0 | DML_FEATURE_LEVEL_6_0 | 0x6000 |
N/V | DirectML-1.11.0 |
1.10.0 | DML_FEATURE_LEVEL_5_2 | 0x5200 |
N/V | DirectML-1.10.0 |
1.9.0 | DML_FEATURE_LEVEL_5_1 | 0x5100 |
N/V | DirectML-1.9.0 |
1.8.0 | DML_FEATURE_LEVEL_5_0 | 0x5000 |
Windows 11 (Build 10.0.22621; 22H2) | DirectML-1.8.0 |
1.7.0 | DML_FEATURE_LEVEL_4_1 | 0x4100 |
N/V | DirectML-1.7.0 |
1.6.0 | DML_FEATURE_LEVEL_4_0 | 0x4000 |
Windows 11 (Build 10.0.22000; 21H2) | DirectML-1.6.0 |
1.5.0 | DML_FEATURE_LEVEL_3_1 | 0x3100 |
N/V | DirectML-1.5.0 |
1.4.01 | DML_FEATURE_LEVEL_3_0 | 0x3000 |
N/V | DirectML-1.4.0 |
1.1.0 | DML_FEATURE_LEVEL_2_0 | 0x2000 |
Windows 10, Version 2004 (10.0; Build 19041) (Windows 10 Mai 2020 Update). Als „20H1“. | N/V |
1.0.0 | DML_FEATURE_LEVEL_1_0 | 0x1000 |
Windows 10, Version 1903 (10.0; Build 18362) (Windows 10 Mai 2019 Update). Als „19H1“. | N/V |
1 Die 1.2.0- und 1.3.0-Zwischenversionen von DirectML wurden nicht allgemein verfügbar gemacht.
Auswählen einer DirectML-Zielversion
Zur Vereinfachung werden bestimmte Features in der DirectML.h
Headerdatei bedingt basierend auf dem Wert des DML_TARGET_VERSION
Makros deklariert. Indem Sie das DML_TARGET_VERSION
Makro auf bestimmte Werte festlegen, können Sie Teile von DirectML.h
aus Ihrer Anwendung ausschließen.
Dies kann hilfreich sein, wenn Sie eine neuere Kopie von DirectML.h
verwenden, aber sie auf eine niedrigere Version der DirectML-Binärdatei abzielen, da sichergestellt wird, dass alle Versuche, Features zu verwenden, die über die ausgewählte Zielebene hinausgehen, nicht kompiliert werden. Dieser Mechanismus ähnelt dem NTDDI_VERSION
Makro (siehe Makros für bedingte Deklarationen).
Hier sind die gültigen Werte für das DML_TARGET_VERSION
Makro.
DML_TARGET_VERSION | Auswirkung |
---|---|
0x6200 |
Alle Features, die eine neuere Version von DirectML als 1.13.0 erfordern, werden von DirectML.h ausgeschlossen. |
0x6100 |
Alle Features, die eine neuere Version von DirectML als 1.12.0 erfordern, werden von DirectML.h ausgeschlossen. |
0x6000 |
Alle Features, die eine neuere Version von DirectML als 1.11.0 erfordern, werden von DirectML.h ausgeschlossen. |
0x5200 |
Alle Features, die eine neuere Version von DirectML als 1.10.0 erfordern, werden von DirectML.h ausgeschlossen. |
0x5100 |
Alle Features, die eine neuere Version von DirectML als 1.9.0 erfordern, werden von DirectML.h ausgeschlossen. |
0x5000 |
Alle Features, die eine neuere Version von DirectML als 1.8.0 erfordern, werden von DirectML.h ausgeschlossen. |
0x4100 |
Alle Features, die eine neuere Version von DirectML als 1.7.0 erfordern, werden von DirectML.h ausgeschlossen. |
0x4000 |
Alle Features, die eine neuere Version von DirectML als 1.6.0 erfordern, werden von DirectML.h ausgeschlossen. |
0x3100 |
Alle Features, die eine neuere Version von DirectML als 1.5.0 erfordern, werden von DirectML.h ausgeschlossen. |
0x3000 |
Alle Features, die eine neuere Version von DirectML als 1.4.0 erfordern, werden von DirectML.h ausgeschlossen. |
0x2000 |
Alle Features, die eine neuere Version von DirectML als 1.1.0 erfordern, werden von DirectML.h ausgeschlossen. |
0x1000 |
Alle Features, die eine neuere Version von DirectML als 1.0.0 erfordern, werden von DirectML.h ausgeschlossen. |
Nicht festgelegt | Die Zielversion wird automatisch für Sie ausgewählt. Details finden Sie weiter unten. |
Wenn DML_TARGET_VERSION
nicht festgelegt ist, wird sie automatisch durch Folgendes ausgewählt.
- Wenn das
DML_TARGET_VERSION_USE_LATEST
Makro definiert ist, wird die neueste Zielversion ausgewählt. - Andernfalls wird die Zielversion basierend auf dem Wert des
NTDDI_VERSION
Makros ausgewählt.NTDDI_WIN10_ZN
ergibt eine Zielversion von0x6000
.NTDDI_WIN10_NI
ergibt eine Zielversion von0x5000
.NTDDI_WIN10_CO
ergibt eine Zielversion von0x4000
.NTDDI_WIN10_FE
ergibt eine Zielversion von0x3000
.NTDDI_WIN10_VB
ergibt eine Zielversion von0x2000
.NTDDI_WIN10_19H1
ergibt eine Zielversion von0x1000
.- Wenn
NTDDI_VERSION
nicht definiert ist, wird die neueste Zielversion ausgewählt (als wennDML_TARGET_VERSION_USE_LATEST
angegeben ist).
Beispiel
Erwägen Sie eine Anwendung mit Version 10.0.19041.0 (Windows 10, Version 2004) des Windows Software Development Kit (SDK). Aus der obigen Tabelle ist die Version von DirectML, die dieser entspricht, 1.1.0, und die entsprechende DML_TARGET_VERSION
ist 0x2000
.
Wenn Sie weder die DML_TARGET_VERSION
Makros noch die NTDDI_VERSION
Makros festlegen, wird standardmäßig die ausgewählte Zielversion zu 0x2000
, und alles, was in DirectML.h
zur Verwendung verfügbar ist.
Wenn Sie möchten, dass Ihre Anwendung unter Windows 10, Version 1903 (10.0; Build 18362) ausgeführt werden kann, dann könnten Sie #define DML_TARGET_VERSION 0x1000
, was alle Inhalte in DirectML.h
ausschließt, die nicht von DirectML Version 1.0.0 unterstützt werden. Dadurch wird sichergestellt, dass jeder Versuch, Funktionen zu verwenden, die eine größere Version erfordert, nicht kompiliert werden kann.
DirectML-Version im Vergleich zur Featureebene
Die DirectML-Version (z. B. 1.0.0 oder 1.4.0) beschreibt eine bestimmte Version von DirectML, einschließlich der zugeordneten DirectML.h
Headerdatei und .lib
-datei.
Die Featureebene (z. B. DML_FEATURE_LEVEL_1_0
oder DML_FEATURE_LEVEL_2_0
) beschreibt die Funktion der zugrunde liegenden Implementierung der API, die von der verwendeten Version DirectML.h
abweichen kann.
Beispielsweise kann eine Anwendung, die mit einem neueren SDK erstellt wird, aber auf einer älteren Version von Windows ausgeführt wird, möglicherweise (zur Laufzeit) eine niedrigere unterstützte Featureebene sehen, auch wenn sie mit dem neuesten SDK kompiliert wird.