Freigeben über


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.hverwenden, 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 von 0x6000.
    • NTDDI_WIN10_NI ergibt eine Zielversion von 0x5000.
    • NTDDI_WIN10_CO ergibt eine Zielversion von 0x4000.
    • NTDDI_WIN10_FE ergibt eine Zielversion von 0x3000.
    • NTDDI_WIN10_VB ergibt eine Zielversion von 0x2000.
    • NTDDI_WIN10_19H1 ergibt eine Zielversion von 0x1000.
    • Wenn NTDDI_VERSION nicht definiert ist, wird die neueste Zielversion ausgewählt (als wenn DML_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.

Weitere Informationen